@@ -13,35 +13,24 @@ func TestSliceFiles(t *testing.T) {
13
13
"2" : NewBytesFile ([]byte ("beep" )),
14
14
"3" : NewBytesFile ([]byte ("boop" )),
15
15
})
16
- buf := make ([]byte , 20 )
17
16
18
- it := sf .Entries ()
19
-
20
- if ! it .Next () {
21
- t .Fatal ("Expected a file" )
22
- }
23
- rf := ToFile (it .Node ())
24
- if rf == nil {
25
- t .Fatal ("Expected a regular file" )
26
- }
27
- read , err := rf .Read (buf )
28
- if read != 11 || err != nil {
29
- t .Fatal ("NextFile got a file in the wrong order" )
30
- }
31
-
32
- if ! it .Next () {
33
- t .Fatal ("Expected a file" )
34
- }
35
- if ! it .Next () {
36
- t .Fatal ("Expected a file" )
37
- }
38
- if it .Next () {
39
- t .Fatal ("Wild file appeared!" )
40
- }
41
-
42
- if err := sf .Close (); err != nil {
43
- t .Fatal ("Should be able to call `Close` on a SliceFile" )
44
- }
17
+ CheckDir (t , sf , []Event {
18
+ {
19
+ kind : TFile ,
20
+ name : "1" ,
21
+ value : "Some text!\n " ,
22
+ },
23
+ {
24
+ kind : TFile ,
25
+ name : "2" ,
26
+ value : "beep" ,
27
+ },
28
+ {
29
+ kind : TFile ,
30
+ name : "3" ,
31
+ value : "boop" ,
32
+ },
33
+ })
45
34
}
46
35
47
36
func TestReaderFiles (t * testing.T ) {
@@ -59,7 +48,6 @@ func TestReaderFiles(t *testing.T) {
59
48
t .Fatal ("Expected EOF when reading after close" )
60
49
}
61
50
}
62
-
63
51
func TestMultipartFiles (t * testing.T ) {
64
52
data := `
65
53
--Boundary!
@@ -82,97 +70,73 @@ Content-Type: application/symlink
82
70
Content-Disposition: file; filename="dir/simlynk"
83
71
84
72
anotherfile
73
+ --Boundary!
74
+ Content-Type: text/plain
75
+ Content-Disposition: file; filename="implicit1/implicit2/deep_implicit"
76
+
77
+ implicit file1
78
+ --Boundary!
79
+ Content-Type: text/plain
80
+ Content-Disposition: file; filename="implicit1/shallow_implicit"
81
+
82
+ implicit file2
85
83
--Boundary!--
86
84
87
85
`
88
86
89
87
reader := strings .NewReader (data )
90
88
mpReader := multipart .NewReader (reader , "Boundary!" )
91
- buf := make ([]byte , 20 )
92
-
93
- // test properties of a file created from the first part
94
- part , err := mpReader .NextPart ()
95
- if part == nil || err != nil {
96
- t .Fatal ("Expected non-nil part, nil error" )
97
- }
98
- mpname , mpf , err := newFileFromPart ("" , part , & peekReader {r : mpReader })
99
- if mpf == nil || err != nil {
100
- t .Fatal ("Expected non-nil multipartFile, nil error" )
101
- }
102
- mf , ok := mpf .(File )
103
- if ! ok {
104
- t .Fatal ("Expected file to not be a directory" )
105
- }
106
- if mpname != "name" {
107
- t .Fatal ("Expected filename to be \" name\" " )
108
- }
109
- if n , err := mf .Read (buf ); n != 4 || ! (err == io .EOF || err == nil ) {
110
- t .Fatal ("Expected to be able to read 4 bytes" , n , err )
111
- }
112
- if err := mf .Close (); err != nil {
113
- t .Fatal ("Expected to be able to close file" )
114
- }
115
-
116
- // test properties of file created from second part (directory)
117
- part , err = mpReader .NextPart ()
118
- if part == nil || err != nil {
119
- t .Fatal ("Expected non-nil part, nil error" )
120
- }
121
- mpname , mpf , err = newFileFromPart ("" , part , & peekReader {r : mpReader })
122
- if mpf == nil || err != nil {
123
- t .Fatal ("Expected non-nil multipartFile, nil error" )
124
- }
125
- md , ok := mpf .(Directory )
126
- if ! ok {
127
- t .Fatal ("Expected file to be a directory" )
128
- }
129
- if mpname != "dir" {
130
- t .Fatal ("Expected filename to be \" dir\" " )
131
- }
132
- if err := md .Close (); err != nil {
133
- t .Fatal ("Should be able to call `Close` on a directory" )
134
- }
135
-
136
- // test properties of file created from third part (nested file)
137
- part , err = mpReader .NextPart ()
138
- if part == nil || err != nil {
139
- t .Fatal ("Expected non-nil part, nil error" )
140
- }
141
- mpname , mpf , err = newFileFromPart ("dir/" , part , & peekReader {r : mpReader })
142
- if mpf == nil || err != nil {
143
- t .Fatal ("Expected non-nil multipartFile, nil error" )
144
- }
145
- mf , ok = mpf .(File )
146
- if ! ok {
147
- t .Fatal ("Expected file to not be a directory" )
148
- }
149
- if mpname != "nested" {
150
- t .Fatalf ("Expected filename to be \" nested\" , got %s" , mpname )
151
- }
152
- if n , err := mf .Read (buf ); n != 12 || ! (err == nil || err == io .EOF ) {
153
- t .Fatalf ("expected to be able to read 12 bytes from file: %s (got %d)" , err , n )
154
- }
155
- if err := mpf .Close (); err != nil {
156
- t .Fatalf ("should be able to close file: %s" , err )
157
- }
158
-
159
- // test properties of symlink created from fourth part (symlink)
160
- part , err = mpReader .NextPart ()
161
- if part == nil || err != nil {
162
- t .Fatal ("Expected non-nil part, nil error" )
163
- }
164
- mpname , mpf , err = newFileFromPart ("dir/" , part , & peekReader {r : mpReader })
165
- if mpf == nil || err != nil {
166
- t .Fatal ("Expected non-nil multipartFile, nil error" )
167
- }
168
- ms , ok := mpf .(* Symlink )
169
- if ! ok {
170
- t .Fatal ("Expected file to not be a directory" )
171
- }
172
- if mpname != "simlynk" {
173
- t .Fatal ("Expected filename to be \" dir/simlynk\" " )
174
- }
175
- if ms .Target != "anotherfile" {
176
- t .Fatal ("expected link to point to anotherfile" )
177
- }
89
+ dir , err := NewFileFromPartReader (mpReader , multipartFormdataType )
90
+ if err != nil {
91
+ t .Fatal (err )
92
+ }
93
+
94
+ CheckDir (t , dir , []Event {
95
+ {
96
+ kind : TFile ,
97
+ name : "name" ,
98
+ value : "beep" ,
99
+ },
100
+ {
101
+ kind : TDirStart ,
102
+ name : "dir" ,
103
+ },
104
+ {
105
+ kind : TFile ,
106
+ name : "nested" ,
107
+ value : "some content" ,
108
+ },
109
+ {
110
+ kind : TSymlink ,
111
+ name : "simlynk" ,
112
+ value : "anotherfile" ,
113
+ },
114
+ {
115
+ kind : TDirEnd ,
116
+ },
117
+ {
118
+ kind : TDirStart ,
119
+ name : "implicit1" ,
120
+ },
121
+ {
122
+ kind : TDirStart ,
123
+ name : "implicit2" ,
124
+ },
125
+ {
126
+ kind : TFile ,
127
+ name : "deep_implicit" ,
128
+ value : "implicit file1" ,
129
+ },
130
+ {
131
+ kind : TDirEnd ,
132
+ },
133
+ {
134
+ kind : TFile ,
135
+ name : "shallow_implicit" ,
136
+ value : "implicit file2" ,
137
+ },
138
+ {
139
+ kind : TDirEnd ,
140
+ },
141
+ })
178
142
}
0 commit comments