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  }