From 5994fcfed8f968a4a952b8e6b477ebcaeb9979bf Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Fri, 19 Jan 2024 10:34:03 +0000 Subject: [PATCH] fs/cache: add PutErr to add an fs.Fs with an fs.ErrorIsFile error to the cache --- fs/cache/cache.go | 11 ++++++++--- fs/cache/cache_test.go | 30 +++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/fs/cache/cache.go b/fs/cache/cache.go index c5eab3e39..ae86ac082 100644 --- a/fs/cache/cache.go +++ b/fs/cache/cache.go @@ -168,14 +168,19 @@ func GetArr(ctx context.Context, fsStrings []string) (f []fs.Fs, err error) { return fArr, nil } -// Put puts an fs.Fs named fsString into the cache -func Put(fsString string, f fs.Fs) { +// PutErr puts an fs.Fs named fsString into the cache with err +func PutErr(fsString string, f fs.Fs, err error) { createOnFirstUse() canonicalName := fs.ConfigString(f) - c.Put(canonicalName, f) + c.PutErr(canonicalName, f, err) addMapping(fsString, canonicalName) } +// Put puts an fs.Fs named fsString into the cache +func Put(fsString string, f fs.Fs) { + PutErr(fsString, f, nil) +} + // ClearConfig deletes all entries which were based on the config name passed in // // Returns number of entries deleted diff --git a/fs/cache/cache_test.go b/fs/cache/cache_test.go index 210fcddbf..acddac80c 100644 --- a/fs/cache/cache_test.go +++ b/fs/cache/cache_test.go @@ -116,6 +116,35 @@ func TestGetError(t *testing.T) { assert.Equal(t, 0, Entries()) } +func TestPutErr(t *testing.T) { + create := mockNewFs(t) + + f, err := mockfs.NewFs(context.Background(), "mock", "", nil) + require.NoError(t, err) + + assert.Equal(t, 0, Entries()) + + PutErr("mock:file.txt", f, fs.ErrorIsFile) + + assert.Equal(t, 1, Entries()) + + fNew, err := GetFn(context.Background(), "mock:file.txt", create) + require.Equal(t, fs.ErrorIsFile, err) + require.Equal(t, f, fNew) + + assert.Equal(t, 1, Entries()) + + // Check canonicalisation + + PutErr("mock:/file.txt", f, fs.ErrorIsFile) + + fNew, err = GetFn(context.Background(), "mock:/file.txt", create) + require.Equal(t, fs.ErrorIsFile, err) + require.Equal(t, f, fNew) + + assert.Equal(t, 1, Entries()) +} + func TestPut(t *testing.T) { create := mockNewFs(t) @@ -143,7 +172,6 @@ func TestPut(t *testing.T) { require.Equal(t, f, fNew) assert.Equal(t, 1, Entries()) - } func TestPin(t *testing.T) {