forked from TrueCloudLab/restic
cache: correctly ignore files whose filename is no ID
this can for example be the case for temporary files created by the backend implementation.
This commit is contained in:
parent
a12a6edfd1
commit
1f4c9d2806
2 changed files with 19 additions and 3 deletions
5
internal/backend/cache/backend.go
vendored
5
internal/backend/cache/backend.go
vendored
|
@ -231,9 +231,8 @@ func (b *Backend) List(ctx context.Context, t backend.FileType, fn func(f backen
|
||||||
wrapFn := func(f backend.FileInfo) error {
|
wrapFn := func(f backend.FileInfo) error {
|
||||||
id, err := restic.ParseID(f.Name)
|
id, err := restic.ParseID(f.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// returning error here since, if we cannot parse the ID, the file
|
// ignore files with invalid name
|
||||||
// is invalid and the list must exit.
|
return nil
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ids.Insert(id)
|
ids.Insert(id)
|
||||||
|
|
17
internal/backend/cache/backend_test.go
vendored
17
internal/backend/cache/backend_test.go
vendored
|
@ -296,3 +296,20 @@ func TestAutomaticCacheClear(t *testing.T) {
|
||||||
t.Errorf("cache doesn't have file2 after list")
|
t.Errorf("cache doesn't have file2 after list")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAutomaticCacheClearInvalidFilename(t *testing.T) {
|
||||||
|
be := mem.New()
|
||||||
|
c := TestNewCache(t)
|
||||||
|
|
||||||
|
data := test.Random(rand.Int(), 42)
|
||||||
|
h := backend.Handle{
|
||||||
|
Type: backend.IndexFile,
|
||||||
|
Name: "tmp12345",
|
||||||
|
}
|
||||||
|
save(t, be, h, data)
|
||||||
|
|
||||||
|
wbe := c.Wrap(be)
|
||||||
|
|
||||||
|
// list all files in the backend
|
||||||
|
list(t, wbe, func(_ backend.FileInfo) error { return nil })
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue