backend: skip hash calculation when the hashType is None - fixes #8518

When hashType is None `local` backend still runs expensive logic that reads the entire file content to produce an empty string.
This commit is contained in:
Oleksiy Stashok
2025-04-21 22:44:23 -07:00
committed by Nick Craig-Wood
parent 0ee7cd80f2
commit badf16cc34
3 changed files with 25 additions and 0 deletions

View File

@ -204,6 +204,23 @@ func TestSymlinkError(t *testing.T) {
assert.Equal(t, errLinksAndCopyLinks, err)
}
func TestHashWithTypeNone(t *testing.T) {
ctx := context.Background()
r := fstest.NewRun(t)
const filePath = "file.txt"
r.WriteFile(filePath, "content", time.Now())
f := r.Flocal.(*Fs)
// Get the object
o, err := f.NewObject(ctx, filePath)
require.NoError(t, err)
// Test the hash is as we expect
h, err := o.Hash(ctx, hash.None)
require.Empty(t, h)
require.NoError(t, err)
}
// Test hashes on updating an object
func TestHashOnUpdate(t *testing.T) {
ctx := context.Background()