11package filestore_test
22
33import (
4- "context"
54 "fmt"
65 "io"
76 "io/fs"
@@ -11,7 +10,6 @@ import (
1110 "testing"
1211
1312 "github.com/ipni/storetheindex/filestore"
14- "github.com/ipni/storetheindex/fsutil"
1513 "github.com/stretchr/testify/require"
1614
1715 "github.com/orlangure/gnomock"
@@ -89,7 +87,7 @@ func TestLocal(t *testing.T) {
8987 testPut (t , fileStore )
9088 })
9189
92- require .True (t , fsutil . FileExists ( filepath .Join (carDir , fileName ) ))
90+ require .FileExists (t , filepath .Join (carDir , fileName ))
9391
9492 t .Run ("test-Local-Head" , func (t * testing.T ) {
9593 testHead (t , fileStore )
@@ -135,42 +133,42 @@ func TestMakeFilestore(t *testing.T) {
135133}
136134
137135func testPut (t * testing.T , fileStore filestore.Interface ) {
138- fileInfo , err := fileStore .Put (context . Background (), fileName , strings .NewReader (data ))
136+ fileInfo , err := fileStore .Put (t . Context (), fileName , strings .NewReader (data ))
139137 require .NoError (t , err )
140138 require .Equal (t , fileName , fileInfo .Path )
141139 require .Equal (t , int64 (len (data )), fileInfo .Size )
142140}
143141
144142func testHead (t * testing.T , fileStore filestore.Interface ) {
145143 // Get file that does not exist.
146- fileInfo , err := fileStore .Head (context . Background (), "not-here" )
144+ fileInfo , err := fileStore .Head (t . Context (), "not-here" )
147145 require .ErrorIs (t , err , fs .ErrNotExist )
148146 require .Nil (t , fileInfo )
149147
150- _ , err = fileStore .Put (context . Background (), fileName3 , strings .NewReader (data ))
148+ _ , err = fileStore .Put (t . Context (), fileName3 , strings .NewReader (data ))
151149 require .NoError (t , err )
152150
153- fileInfo , err = fileStore .Head (context . Background (), fileName3 )
151+ fileInfo , err = fileStore .Head (t . Context (), fileName3 )
154152 require .NoError (t , err )
155153 require .Equal (t , fileName3 , fileInfo .Path )
156154 require .Equal (t , int64 (len (data )), fileInfo .Size )
157155 require .False (t , fileInfo .Modified .IsZero ())
158156
159157 // Should get fs.ErrNotExist when looking for subdirectory.
160- _ , err = fileStore .Head (context . Background (), subdir )
158+ _ , err = fileStore .Head (t . Context (), subdir )
161159 require .ErrorIs (t , err , fs .ErrNotExist )
162160}
163161
164162func testGet (t * testing.T , fileStore filestore.Interface ) {
165163 // Get file that does not exist.
166- fileInfo , _ , err := fileStore .Get (context . Background (), "not-here" )
164+ fileInfo , _ , err := fileStore .Get (t . Context (), "not-here" )
167165 require .ErrorIs (t , err , fs .ErrNotExist )
168166 require .Nil (t , fileInfo )
169167
170- _ , err = fileStore .Put (context . Background (), fileName , strings .NewReader (data ))
168+ _ , err = fileStore .Put (t . Context (), fileName , strings .NewReader (data ))
171169 require .NoError (t , err )
172170
173- fileInfo , r , err := fileStore .Get (context . Background (), fileName )
171+ fileInfo , r , err := fileStore .Get (t . Context (), fileName )
174172 require .NoError (t , err )
175173 require .Equal (t , fileName , fileInfo .Path )
176174 require .Equal (t , int64 (len (data )), fileInfo .Size )
@@ -185,88 +183,106 @@ func testGet(t *testing.T, fileStore filestore.Interface) {
185183 require .ErrorIs (t , err , io .EOF )
186184 require .NoError (t , r .Close ())
187185
188- _ , err = fileStore .Put (context . Background (), fileName3 , strings .NewReader (data3 ))
186+ _ , err = fileStore .Put (t . Context (), fileName3 , strings .NewReader (data3 ))
189187 require .NoError (t , err )
190188
191- _ , _ , err = fileStore .Get (context . Background (), subdir )
189+ _ , _ , err = fileStore .Get (t . Context (), subdir )
192190 require .ErrorIs (t , err , fs .ErrNotExist )
193191
194- fileInfo , r , err = fileStore .Get (context . Background (), fileName3 )
192+ fileInfo , r , err = fileStore .Get (t . Context (), fileName3 )
195193 require .NoError (t , err )
196194 require .NoError (t , r .Close ())
197195 require .Equal (t , int64 (len (data3 )), fileInfo .Size )
198196}
199197
200198func testList (t * testing.T , fileStore filestore.Interface ) {
201199 // List file that does not exist.
202- fileCh , errCh := fileStore .List (context . Background (), "not-here/" , false )
200+ fileCh , errCh := fileStore .List (t . Context (), "not-here/" , false )
203201 fileInfo , ok := <- fileCh
204202 require .Nil (t , fileInfo )
205203 require .False (t , ok )
206204 err := <- errCh
207205 require .NoError (t , err )
208206
209- _ , err = fileStore .Put (context . Background (), fileName1 , strings .NewReader (data1 ))
207+ _ , err = fileStore .Put (t . Context (), fileName1 , strings .NewReader (data1 ))
210208 require .NoError (t , err )
211209
212- _ , err = fileStore .Put (context . Background (), fileName2 , strings .NewReader (data2 ))
210+ _ , err = fileStore .Put (t . Context (), fileName2 , strings .NewReader (data2 ))
213211 require .NoError (t , err )
214212
215- _ , err = fileStore .Put (context . Background (), fileName3 , strings .NewReader (data3 ))
213+ _ , err = fileStore .Put (t . Context (), fileName3 , strings .NewReader (data3 ))
216214 require .NoError (t , err )
217215
218- fileCh , errCh = fileStore .List (context .Background (), "" , false )
219- infos := make ([]* filestore.File , 0 , 3 )
220- for fileInfo := range fileCh {
221- infos = append (infos , fileInfo )
222- }
223- err = <- errCh
224- require .NoError (t , err )
225- require .Equal (t , 3 , len (infos ))
226- expectNames := []string {fileName , fileName1 , fileName2 }
227- expectSizes := []int64 {int64 (len (data )), int64 (len (data1 )), int64 (len (data2 ))}
228- for i := range infos {
229- require .Equal (t , expectNames [i ], infos [i ].Path )
230- require .Equal (t , expectSizes [i ], infos [i ].Size )
231- require .False (t , infos [0 ].Modified .IsZero ())
232- }
216+ t .Run ("list non-recursively" , func (t * testing.T ) {
217+ fileCh , errCh = fileStore .List (t .Context (), "" , false )
218+ infos := make ([]* filestore.File , 0 , 3 )
219+ for fileInfo := range fileCh {
220+ infos = append (infos , fileInfo )
221+ }
222+ err = <- errCh
223+ require .NoError (t , err )
224+ require .Equal (t , 3 , len (infos ))
225+ expectNames := []string {fileName , fileName1 , fileName2 }
226+ expectSizes := []int64 {int64 (len (data )), int64 (len (data1 )), int64 (len (data2 ))}
227+ for i := range infos {
228+ require .Equal (t , expectNames [i ], infos [i ].Path )
229+ require .Equal (t , expectSizes [i ], infos [i ].Size )
230+ require .False (t , infos [0 ].Modified .IsZero ())
231+ }
232+ })
233233
234- fileCh , errCh = fileStore .List (context .Background (), "" , true )
235- infos = infos [:0 ]
236- for fileInfo := range fileCh {
237- infos = append (infos , fileInfo )
238- }
239- err = <- errCh
240- require .NoError (t , err )
241- require .Equal (t , 4 , len (infos ))
242- require .Equal (t , fileName3 , infos [0 ].Path )
243- require .Equal (t , int64 (len (data3 )), infos [0 ].Size )
244-
245- // File specific file.
246- fileCh , errCh = fileStore .List (context .Background (), fileName1 , false )
247- infos = infos [:0 ]
248- for fileInfo := range fileCh {
249- infos = append (infos , fileInfo )
250- }
251- err = <- errCh
252- require .NoError (t , err )
253- require .Equal (t , 1 , len (infos ))
254- require .Equal (t , fileName1 , infos [0 ].Path )
255-
256- // File specific file.
257- fileCh , errCh = fileStore .List (context .Background (), fileName3 , false )
258- infos = infos [:0 ]
259- for fileInfo := range fileCh {
260- infos = append (infos , fileInfo )
261- }
262- err = <- errCh
263- require .NoError (t , err )
264- require .Equal (t , 1 , len (infos ))
265- require .Equal (t , fileName3 , infos [0 ].Path )
234+ t .Run ("list recursively" , func (t * testing.T ) {
235+ fileCh , errCh = fileStore .List (t .Context (), "" , true )
236+ infos := make ([]* filestore.File , 0 , 3 )
237+ for fileInfo := range fileCh {
238+ infos = append (infos , fileInfo )
239+ }
240+ err = <- errCh
241+ require .NoError (t , err )
242+ require .Equal (t , 4 , len (infos ))
243+ require .Equal (t , fileName3 , infos [0 ].Path )
244+ require .Equal (t , int64 (len (data3 )), infos [0 ].Size )
245+ })
246+
247+ t .Run ("specific file" , func (t * testing.T ) {
248+ fileCh , errCh = fileStore .List (t .Context (), fileName1 , false )
249+ infos := make ([]* filestore.File , 0 , 3 )
250+ for fileInfo := range fileCh {
251+ infos = append (infos , fileInfo )
252+ }
253+ err = <- errCh
254+ require .NoError (t , err )
255+ require .Equal (t , 1 , len (infos ))
256+ require .Equal (t , fileName1 , infos [0 ].Path )
257+ })
258+
259+ t .Run ("specific file at a sub-dir" , func (t * testing.T ) {
260+ fileCh , errCh = fileStore .List (t .Context (), fileName3 , false )
261+ infos := make ([]* filestore.File , 0 , 3 )
262+ for fileInfo := range fileCh {
263+ infos = append (infos , fileInfo )
264+ }
265+ err = <- errCh
266+ require .NoError (t , err )
267+ require .Equal (t , 1 , len (infos ))
268+ require .Equal (t , fileName3 , infos [0 ].Path )
269+ })
270+
271+ t .Run ("list files in a sub-folder" , func (t * testing.T ) {
272+ fileCh , errCh = fileStore .List (t .Context (), subdir + "/" , false )
273+ infos := make ([]* filestore.File , 0 , 3 )
274+ for fileInfo := range fileCh {
275+ infos = append (infos , fileInfo )
276+ }
277+ err = <- errCh
278+ require .NoError (t , err )
279+ require .Equal (t , 1 , len (infos ))
280+ require .Equal (t , fileName3 , infos [0 ].Path )
281+ })
266282}
267283
268284func testDelete (t * testing.T , fileStore filestore.Interface ) {
269- ctx := context . Background ()
285+ ctx := t . Context ()
270286
271287 _ , err := fileStore .Put (ctx , fileName1 , strings .NewReader (data1 ))
272288 require .NoError (t , err )
0 commit comments