From a10fbf16ea3296eccad201f642a861b8839730d3 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Mon, 30 Nov 2020 11:52:25 +0000 Subject: [PATCH] fs/cache: add ClearConfig method to clear all remotes based on Config #4811 --- fs/cache/cache.go | 7 +++++++ fs/cache/cache_test.go | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/fs/cache/cache.go b/fs/cache/cache.go index 961dd3c7d..e86bd0ec8 100644 --- a/fs/cache/cache.go +++ b/fs/cache/cache.go @@ -124,6 +124,13 @@ func Put(fsString string, f fs.Fs) { addMapping(fsString, canonicalName) } +// ClearConfig deletes all entries which were based on the config name passed in +// +// Returns number of entries deleted +func ClearConfig(name string) (deleted int) { + return c.DeletePrefix(name + ":") +} + // Clear removes everything from the cache func Clear() { c.Clear() diff --git a/fs/cache/cache_test.go b/fs/cache/cache_test.go index 8f35ebd89..c23739588 100644 --- a/fs/cache/cache_test.go +++ b/fs/cache/cache_test.go @@ -166,6 +166,22 @@ func TestPin(t *testing.T) { Unpin(f2) } +func TestClearConfig(t *testing.T) { + cleanup, create := mockNewFs(t) + defer cleanup() + + assert.Equal(t, 0, c.Entries()) + + _, err := GetFn(context.Background(), "mock:/file.txt", create) + require.Equal(t, fs.ErrorIsFile, err) + + assert.Equal(t, 2, Entries()) // file + parent + + assert.Equal(t, 2, ClearConfig("mock")) + + assert.Equal(t, 0, Entries()) +} + func TestClear(t *testing.T) { cleanup, create := mockNewFs(t) defer cleanup()