diff --git a/backend/crypt/crypt.go b/backend/crypt/crypt.go index 85972298e..1aece2753 100644 --- a/backend/crypt/crypt.go +++ b/backend/crypt/crypt.go @@ -1047,10 +1047,11 @@ func (o *ObjectInfo) Hash(ctx context.Context, hash hash.Type) (string, error) { // Get the underlying object if there is one if srcObj, ok = o.ObjectInfo.(fs.Object); ok { // Prefer direct interface assertion - } else if do, ok := o.ObjectInfo.(fs.ObjectUnWrapper); ok { - // Otherwise likely is an operations.OverrideRemote + } else if do, ok := o.ObjectInfo.(*fs.OverrideRemote); ok { + // Unwrap if it is an operations.OverrideRemote srcObj = do.UnWrap() } else { + // Otherwise don't unwrap any further return "", nil } // if this is wrapping a local object then we work out the hash diff --git a/backend/crypt/crypt_internal_test.go b/backend/crypt/crypt_internal_test.go index 825877630..07dee6ac5 100644 --- a/backend/crypt/crypt_internal_test.go +++ b/backend/crypt/crypt_internal_test.go @@ -17,19 +17,6 @@ import ( "github.com/stretchr/testify/require" ) -type testWrapper struct { - fs.ObjectInfo -} - -// UnWrap returns the Object that this Object is wrapping or nil if it -// isn't wrapping anything -func (o testWrapper) UnWrap() fs.Object { - if o, ok := o.ObjectInfo.(fs.Object); ok { - return o - } - return nil -} - // Create a temporary local fs to upload things from func makeTempLocalFs(t *testing.T) (localFs fs.Fs, cleanup func()) { @@ -83,7 +70,7 @@ func testObjectInfo(t *testing.T, f *Fs, wrap bool) { var oi fs.ObjectInfo = obj if wrap { // wrap the object in an fs.ObjectUnwrapper if required - oi = testWrapper{oi} + oi = fs.NewOverrideRemote(oi, "new_remote") } // wrap the object in a crypt for upload using the nonce we