@@ -3,6 +3,7 @@ package test
33import (
44 "fmt"
55 "io/ioutil"
6+ "os"
67 "strings"
78 "testing"
89
@@ -35,13 +36,13 @@ func (s *FilesystemSuite) TestCreateDepthAbsolute(c *C) {
3536}
3637
3738func (s * FilesystemSuite ) TestCreateOverwrite (c * C ) {
38- for i := 0 ; i < 2 ; i ++ {
39+ for i := 0 ; i < 3 ; i ++ {
3940 f , err := s .Fs .Create ("foo" )
4041 c .Assert (err , IsNil )
4142
42- l , err := f .Write ([]byte ("foo" ))
43+ l , err := f .Write ([]byte (fmt . Sprintf ( "foo%d" , i ) ))
4344 c .Assert (err , IsNil )
44- c .Assert (l , Equals , 3 )
45+ c .Assert (l , Equals , 4 )
4546
4647 err = f .Close ()
4748 c .Assert (err , IsNil )
@@ -52,25 +53,135 @@ func (s *FilesystemSuite) TestCreateOverwrite(c *C) {
5253
5354 wrote , err := ioutil .ReadAll (f )
5455 c .Assert (err , IsNil )
55- c .Assert (wrote , DeepEquals , [] byte ( "foo" ) )
56+ c .Assert (string ( wrote ) , DeepEquals , "foo2" )
5657}
5758
5859func (s * FilesystemSuite ) TestCreateClose (c * C ) {
5960 f , err := s .Fs .Create ("foo" )
6061 c .Assert (err , IsNil )
6162 c .Assert (f .IsClosed (), Equals , false )
6263
63- f .Write ([]byte ("foo" ))
64+ _ , err = f .Write ([]byte ("foo" ))
65+ c .Assert (err , IsNil )
66+ c .Assert (f .Close (), IsNil )
67+
68+ f , err = s .Fs .Open (f .Filename ())
69+ c .Assert (err , IsNil )
70+
71+ wrote , err := ioutil .ReadAll (f )
72+ c .Assert (err , IsNil )
73+ c .Assert (string (wrote ), DeepEquals , "foo" )
6474 c .Assert (f .Close (), IsNil )
75+ }
76+
77+ func (s * FilesystemSuite ) TestOpenFileNoTruncate (c * C ) {
78+ defaultMode := os .FileMode (0666 )
79+
80+ // Create when it does not exist
81+ f , err := s .Fs .OpenFile ("foo1" , os .O_CREATE | os .O_WRONLY , defaultMode )
82+ c .Assert (err , IsNil )
83+ c .Assert (f .Filename (), Equals , "foo1" )
84+ s .testWriteClose (c , f , "foo1" )
85+
86+ f , err = s .Fs .OpenFile ("foo1" , os .O_RDONLY , defaultMode )
87+ c .Assert (err , IsNil )
88+ s .testReadClose (c , f , "foo1" )
89+
90+ // Create when it does exist
91+ f , err = s .Fs .OpenFile ("foo1" , os .O_CREATE | os .O_WRONLY , defaultMode )
92+ c .Assert (err , IsNil )
93+ c .Assert (f .Filename (), Equals , "foo1" )
94+ s .testWriteClose (c , f , "bar" )
95+
96+ f , err = s .Fs .OpenFile ("foo1" , os .O_RDONLY , defaultMode )
97+ c .Assert (err , IsNil )
98+ s .testReadClose (c , f , "bar1" )
99+ }
100+
101+ func (s * FilesystemSuite ) TestOpenFileAppend (c * C ) {
102+ defaultMode := os .FileMode (0666 )
103+
104+ f , err := s .Fs .OpenFile ("foo1" , os .O_CREATE | os .O_WRONLY | os .O_APPEND , defaultMode )
105+ c .Assert (err , IsNil )
106+ c .Assert (f .Filename (), Equals , "foo1" )
107+ s .testWriteClose (c , f , "foo1" )
108+
109+ f , err = s .Fs .OpenFile ("foo1" , os .O_WRONLY | os .O_APPEND , defaultMode )
110+ c .Assert (err , IsNil )
111+ c .Assert (f .Filename (), Equals , "foo1" )
112+ s .testWriteClose (c , f , "bar1" )
113+
114+ f , err = s .Fs .OpenFile ("foo1" , os .O_RDONLY , defaultMode )
115+ c .Assert (err , IsNil )
116+ s .testReadClose (c , f , "foo1bar1" )
117+ }
118+
119+ func (s * FilesystemSuite ) TestOpenFileReadWrite (c * C ) {
120+ defaultMode := os .FileMode (0666 )
65121
66- file , err := s .Fs .Open ( f . Filename () )
122+ f , err := s .Fs .OpenFile ( "foo1" , os . O_CREATE | os . O_TRUNC | os . O_RDWR , defaultMode )
67123 c .Assert (err , IsNil )
124+ c .Assert (f .Filename (), Equals , "foo1" )
68125
69- wrote , err := ioutil .ReadAll (file )
126+ written , err := f .Write ([]byte ("foobar" ))
127+ c .Assert (written , Equals , 6 )
70128 c .Assert (err , IsNil )
71- c .Assert (wrote , DeepEquals , []byte ("foo" ))
72129
73- c .Assert (f .IsClosed (), Equals , true )
130+ _ , err = f .Seek (0 , os .SEEK_SET )
131+ c .Assert (err , IsNil )
132+
133+ written , err = f .Write ([]byte ("qux" ))
134+ c .Assert (written , Equals , 3 )
135+ c .Assert (err , IsNil )
136+
137+ _ , err = f .Seek (0 , os .SEEK_SET )
138+ c .Assert (err , IsNil )
139+
140+ s .testReadClose (c , f , "quxbar" )
141+ }
142+
143+ func (s * FilesystemSuite ) TestOpenFile (c * C ) {
144+ defaultMode := os .FileMode (0666 )
145+
146+ f , err := s .Fs .OpenFile ("foo1" , os .O_CREATE | os .O_WRONLY | os .O_TRUNC , defaultMode )
147+ c .Assert (err , IsNil )
148+ s .testWriteClose (c , f , "foo1" )
149+
150+ // Truncate if it exists
151+ f , err = s .Fs .OpenFile ("foo1" , os .O_CREATE | os .O_WRONLY | os .O_TRUNC , defaultMode )
152+ c .Assert (err , IsNil )
153+ c .Assert (f .Filename (), Equals , "foo1" )
154+ s .testWriteClose (c , f , "foo1overwritten" )
155+
156+ // Read-only if it exists
157+ f , err = s .Fs .OpenFile ("foo1" , os .O_RDONLY , defaultMode )
158+ c .Assert (err , IsNil )
159+ c .Assert (f .Filename (), Equals , "foo1" )
160+ s .testReadClose (c , f , "foo1overwritten" )
161+
162+ // Create when it does exist
163+ f , err = s .Fs .OpenFile ("foo1" , os .O_CREATE | os .O_WRONLY | os .O_TRUNC , defaultMode )
164+ c .Assert (err , IsNil )
165+ c .Assert (f .Filename (), Equals , "foo1" )
166+ s .testWriteClose (c , f , "bar" )
167+
168+ f , err = s .Fs .OpenFile ("foo1" , os .O_RDONLY , defaultMode )
169+ c .Assert (err , IsNil )
170+ s .testReadClose (c , f , "bar" )
171+ }
172+
173+ func (s * FilesystemSuite ) testWriteClose (c * C , f File , content string ) {
174+ written , err := f .Write ([]byte (content ))
175+ c .Assert (written , Equals , len (content ))
176+ c .Assert (err , IsNil )
177+ c .Assert (f .Close (), IsNil )
178+ }
179+
180+ func (s * FilesystemSuite ) testReadClose (c * C , f File , content string ) {
181+ read , err := ioutil .ReadAll (f )
182+ c .Assert (err , IsNil )
183+ c .Assert (string (read ), Equals , content )
184+ c .Assert (f .Close (), IsNil )
74185}
75186
76187func (s * FilesystemSuite ) TestReadDirAndDir (c * C ) {
@@ -148,14 +259,12 @@ func (s *FilesystemSuite) TestTempFile(c *C) {
148259func (s * FilesystemSuite ) TestTempFileWithPath (c * C ) {
149260 f , err := s .Fs .TempFile ("foo" , "bar" )
150261 c .Assert (err , IsNil )
151- fmt .Printf ("f: %s\n " , f .Filename ())
152262 c .Assert (strings .HasPrefix (f .Filename (), s .Fs .Join ("foo" , "bar" )), Equals , true )
153263}
154264
155265func (s * FilesystemSuite ) TestTempFileFullWithPath (c * C ) {
156266 f , err := s .Fs .TempFile ("/foo" , "bar" )
157267 c .Assert (err , IsNil )
158- fmt .Printf ("f: %s\n " , f .Filename ())
159268 c .Assert (strings .HasPrefix (f .Filename (), s .Fs .Join ("foo" , "bar" )), Equals , true )
160269}
161270
0 commit comments