@@ -3,6 +3,7 @@ package test
3
3
import (
4
4
"fmt"
5
5
"io/ioutil"
6
+ "os"
6
7
"strings"
7
8
"testing"
8
9
@@ -35,13 +36,13 @@ func (s *FilesystemSuite) TestCreateDepthAbsolute(c *C) {
35
36
}
36
37
37
38
func (s * FilesystemSuite ) TestCreateOverwrite (c * C ) {
38
- for i := 0 ; i < 2 ; i ++ {
39
+ for i := 0 ; i < 3 ; i ++ {
39
40
f , err := s .Fs .Create ("foo" )
40
41
c .Assert (err , IsNil )
41
42
42
- l , err := f .Write ([]byte ("foo" ))
43
+ l , err := f .Write ([]byte (fmt . Sprintf ( "foo%d" , i ) ))
43
44
c .Assert (err , IsNil )
44
- c .Assert (l , Equals , 3 )
45
+ c .Assert (l , Equals , 4 )
45
46
46
47
err = f .Close ()
47
48
c .Assert (err , IsNil )
@@ -52,25 +53,135 @@ func (s *FilesystemSuite) TestCreateOverwrite(c *C) {
52
53
53
54
wrote , err := ioutil .ReadAll (f )
54
55
c .Assert (err , IsNil )
55
- c .Assert (wrote , DeepEquals , [] byte ( "foo" ) )
56
+ c .Assert (string ( wrote ) , DeepEquals , "foo2" )
56
57
}
57
58
58
59
func (s * FilesystemSuite ) TestCreateClose (c * C ) {
59
60
f , err := s .Fs .Create ("foo" )
60
61
c .Assert (err , IsNil )
61
62
c .Assert (f .IsClosed (), Equals , false )
62
63
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" )
64
74
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 )
65
121
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 )
67
123
c .Assert (err , IsNil )
124
+ c .Assert (f .Filename (), Equals , "foo1" )
68
125
69
- wrote , err := ioutil .ReadAll (file )
126
+ written , err := f .Write ([]byte ("foobar" ))
127
+ c .Assert (written , Equals , 6 )
70
128
c .Assert (err , IsNil )
71
- c .Assert (wrote , DeepEquals , []byte ("foo" ))
72
129
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 )
74
185
}
75
186
76
187
func (s * FilesystemSuite ) TestReadDirAndDir (c * C ) {
@@ -148,14 +259,12 @@ func (s *FilesystemSuite) TestTempFile(c *C) {
148
259
func (s * FilesystemSuite ) TestTempFileWithPath (c * C ) {
149
260
f , err := s .Fs .TempFile ("foo" , "bar" )
150
261
c .Assert (err , IsNil )
151
- fmt .Printf ("f: %s\n " , f .Filename ())
152
262
c .Assert (strings .HasPrefix (f .Filename (), s .Fs .Join ("foo" , "bar" )), Equals , true )
153
263
}
154
264
155
265
func (s * FilesystemSuite ) TestTempFileFullWithPath (c * C ) {
156
266
f , err := s .Fs .TempFile ("/foo" , "bar" )
157
267
c .Assert (err , IsNil )
158
- fmt .Printf ("f: %s\n " , f .Filename ())
159
268
c .Assert (strings .HasPrefix (f .Filename (), s .Fs .Join ("foo" , "bar" )), Equals , true )
160
269
}
161
270
0 commit comments