Skip to content

Commit 3468bc6

Browse files
committed
Update filestore tests
* Use t.Context() instead of context.Background() * Use sub-tests for sub-cases when testing List() * Check path prefix when testing List()
1 parent 8ae54a9 commit 3468bc6

1 file changed

Lines changed: 82 additions & 66 deletions

File tree

filestore/filestore_test.go

Lines changed: 82 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package filestore_test
22

33
import (
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

137135
func 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

144142
func 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

164162
func 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

200198
func 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

268284
func 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

Comments
 (0)