github.com/posener/gitfs@v1.2.2-0.20200410105819-ea4e48d73ab9/fsutil/diff_test.go (about) 1 package fsutil 2 3 import ( 4 "testing" 5 6 "github.com/posener/gitfs/internal/tree" 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestDiff(t *testing.T) { 12 t.Parallel() 13 14 a := make(tree.Tree) 15 a.AddFileContent("content-diff", []byte("1\n2\n")) 16 a.AddFileContent("content-equal", []byte("1\n2\n")) 17 a.AddFileContent("common-dir/only-in-a", []byte("")) 18 a.AddFileContent("file-in-a-dir-in-b", []byte("")) 19 a.AddDir("dir-in-a-file-in-b") 20 21 b := make(tree.Tree) 22 b.AddFileContent("content-diff", []byte("1\n3\n")) 23 b.AddFileContent("content-equal", []byte("1\n2\n")) 24 b.AddFileContent("common-dir/only-in-b", []byte("")) 25 b.AddDir("file-in-a-dir-in-b") 26 b.AddFileContent("dir-in-a-file-in-b", []byte("")) 27 28 want := `Diff between a and b: 29 [common-dir/only-in-a]: only in a 30 [common-dir/only-in-b]: only in b 31 [content-diff]: content diff (-a, +b): 32 2-2 33 2+3 34 [dir-in-a-file-in-b]: on a is directory, on b file 35 [file-in-a-dir-in-b]: on a is file, on b directory 36 ` 37 got, err := Diff(a, b) 38 require.NoError(t, err) 39 assert.Equal(t, want, got.String()) 40 } 41 42 func TestDiffEmpty(t *testing.T) { 43 t.Parallel() 44 45 a := make(tree.Tree) 46 a.AddFileContent("foo", []byte("")) 47 48 b := make(tree.Tree) 49 50 got, err := Diff(a, b) 51 require.NoError(t, err) 52 assert.ElementsMatch(t, []PathDiff{{Path: "foo", Diff: msgOnlyInA}}, got.Diffs) 53 54 // Mirror test 55 got, err = Diff(b, a) 56 require.NoError(t, err) 57 assert.ElementsMatch(t, []PathDiff{{Path: "foo", Diff: msgOnlyInB}}, got.Diffs) 58 }