github.com/divyam234/rclone@v1.64.1/fs/fingerprint_test.go (about) 1 package fs_test 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 8 "github.com/divyam234/rclone/fs" 9 "github.com/divyam234/rclone/fs/hash" 10 "github.com/divyam234/rclone/fstest/mockfs" 11 "github.com/divyam234/rclone/fstest/mockobject" 12 "github.com/stretchr/testify/assert" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestFingerprint(t *testing.T) { 17 ctx := context.Background() 18 fMock, err := mockfs.NewFs(ctx, "test", "root", nil) 19 require.NoError(t, err) 20 f := fMock.(*mockfs.Fs) 21 f.SetHashes(hash.NewHashSet(hash.MD5)) 22 23 for i, test := range []struct { 24 fast bool 25 slowModTime bool 26 slowHash bool 27 want string 28 }{ 29 {fast: false, slowModTime: false, slowHash: false, want: "4,0001-01-01 00:00:00 +0000 UTC,8d777f385d3dfec8815d20f7496026dc"}, 30 {fast: false, slowModTime: false, slowHash: true, want: "4,0001-01-01 00:00:00 +0000 UTC,8d777f385d3dfec8815d20f7496026dc"}, 31 {fast: false, slowModTime: true, slowHash: false, want: "4,0001-01-01 00:00:00 +0000 UTC,8d777f385d3dfec8815d20f7496026dc"}, 32 {fast: false, slowModTime: true, slowHash: true, want: "4,0001-01-01 00:00:00 +0000 UTC,8d777f385d3dfec8815d20f7496026dc"}, 33 {fast: true, slowModTime: false, slowHash: false, want: "4,0001-01-01 00:00:00 +0000 UTC,8d777f385d3dfec8815d20f7496026dc"}, 34 {fast: true, slowModTime: false, slowHash: true, want: "4,0001-01-01 00:00:00 +0000 UTC"}, 35 {fast: true, slowModTime: true, slowHash: false, want: "4,8d777f385d3dfec8815d20f7496026dc"}, 36 {fast: true, slowModTime: true, slowHash: true, want: "4"}, 37 } { 38 what := fmt.Sprintf("#%d fast=%v,slowModTime=%v,slowHash=%v", i, test.fast, test.slowModTime, test.slowHash) 39 o := mockobject.New("potato").WithContent([]byte("data"), mockobject.SeekModeRegular) 40 o.SetFs(f) 41 f.Features().SlowModTime = test.slowModTime 42 f.Features().SlowHash = test.slowHash 43 got := fs.Fingerprint(ctx, o, test.fast) 44 assert.Equal(t, test.want, got, what) 45 } 46 }