Merge branch 'rr/rebase-autostash'
[gitweb.git] / t / t4011-diff-symlink.sh
index cb47ec17f911c822a042758a30590a1ebf86faae..13e7f621ab79f95cc7c3057d9de5710813049102 100755 (executable)
@@ -9,7 +9,7 @@ test_description='Test diff of symlinks.
 . ./test-lib.sh
 . "$TEST_DIRECTORY"/diff-lib.sh
 
-test_expect_success SYMLINKS 'diff new symlink' '
+test_expect_success 'diff new symlink and file' '
        cat >expected <<-\EOF &&
        diff --git a/frotz b/frotz
        new file mode 120000
@@ -19,22 +19,33 @@ test_expect_success SYMLINKS 'diff new symlink' '
        @@ -0,0 +1 @@
        +xyzzy
        \ No newline at end of file
+       diff --git a/nitfol b/nitfol
+       new file mode 100644
+       index 0000000..7c465af
+       --- /dev/null
+       +++ b/nitfol
+       @@ -0,0 +1 @@
+       +xyzzy
        EOF
-       ln -s xyzzy frotz &&
+
+       # the empty tree
        git update-index &&
        tree=$(git write-tree) &&
-       git update-index --add frotz &&
+
+       test_ln_s_add xyzzy frotz &&
+       echo xyzzy >nitfol &&
+       git update-index --add nitfol &&
        GIT_DIFF_OPTS=--unified=0 git diff-index -M -p $tree >current &&
        compare_diff_patch expected current
 '
 
-test_expect_success SYMLINKS 'diff unchanged symlink'  '
+test_expect_success 'diff unchanged symlink and file'  '
        tree=$(git write-tree) &&
-       git update-index frotz &&
+       git update-index frotz nitfol &&
        test -z "$(git diff-index --name-only $tree)"
 '
 
-test_expect_success SYMLINKS 'diff removed symlink' '
+test_expect_success 'diff removed symlink and file' '
        cat >expected <<-\EOF &&
        diff --git a/frotz b/frotz
        deleted file mode 120000
@@ -44,22 +55,41 @@ test_expect_success SYMLINKS 'diff removed symlink' '
        @@ -1 +0,0 @@
        -xyzzy
        \ No newline at end of file
+       diff --git a/nitfol b/nitfol
+       deleted file mode 100644
+       index 7c465af..0000000
+       --- a/nitfol
+       +++ /dev/null
+       @@ -1 +0,0 @@
+       -xyzzy
        EOF
        mv frotz frotz2 &&
+       mv nitfol nitfol2 &&
        git diff-index -M -p $tree >current &&
        compare_diff_patch expected current
 '
 
-test_expect_success SYMLINKS 'diff identical, but newly created symlink' '
-       cat >expected <<-\EOF &&
-       diff --git a/frotz b/frotz
-       EOF
-       ln -s xyzzy frotz &&
+test_expect_success 'diff identical, but newly created symlink and file' '
+       >expected &&
+       rm -f frotz nitfol &&
+       echo xyzzy >nitfol &&
+       test-chmtime +10 nitfol &&
+       if test_have_prereq SYMLINKS
+       then
+               ln -s xyzzy frotz
+       else
+               printf xyzzy >frotz
+               # the symlink property propagates from the index
+       fi &&
        git diff-index -M -p $tree >current &&
+       compare_diff_patch expected current &&
+
+       >expected &&
+       git diff-index -M -p -w $tree >current &&
        compare_diff_patch expected current
 '
 
-test_expect_success SYMLINKS 'diff different symlink' '
+test_expect_success 'diff different symlink and file' '
        cat >expected <<-\EOF &&
        diff --git a/frotz b/frotz
        index 7c465af..df1db54 120000
@@ -70,9 +100,23 @@ test_expect_success SYMLINKS 'diff different symlink' '
        \ No newline at end of file
        +yxyyz
        \ No newline at end of file
+       diff --git a/nitfol b/nitfol
+       index 7c465af..df1db54 100644
+       --- a/nitfol
+       +++ b/nitfol
+       @@ -1 +1 @@
+       -xyzzy
+       +yxyyz
        EOF
        rm -f frotz &&
-       ln -s yxyyz frotz &&
+       if test_have_prereq SYMLINKS
+       then
+               ln -s yxyyz frotz
+       else
+               printf yxyyz >frotz
+               # the symlink property propagates from the index
+       fi &&
+       echo yxyyz >nitfol &&
        git diff-index -M -p $tree >current &&
        compare_diff_patch expected current
 '