]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t7800-difftool.sh
Sync with 2.32.4
[thirdparty/git.git] / t / t7800-difftool.sh
index 77db0282081a86322883079bdec213dd51e86413..a264ffc0a7a6248e16b8d5a8d423abcfddde6da5 100755 (executable)
@@ -675,7 +675,6 @@ test_expect_success SYMLINKS 'difftool --dir-diff handles modified symlinks' '
        rm c &&
        ln -s d c &&
        cat >expect <<-EOF &&
-               b
                c
 
                c
@@ -711,7 +710,6 @@ test_expect_success SYMLINKS 'difftool --dir-diff handles modified symlinks' '
        # Deleted symlinks
        rm -f c &&
        cat >expect <<-EOF &&
-               b
                c
 
        EOF
@@ -724,6 +722,71 @@ test_expect_success SYMLINKS 'difftool --dir-diff handles modified symlinks' '
        test_cmp expect actual
 '
 
+test_expect_success SYMLINKS 'difftool --dir-diff writes symlinks as raw text' '
+       # Start out on a branch called "branch-init".
+       git init -b branch-init symlink-files &&
+       (
+               cd symlink-files &&
+               # This test ensures that symlinks are written as raw text.
+               # The "cat" tools output link and file contents.
+               git config difftool.cat-left-link.cmd "cat \"\$LOCAL/link\"" &&
+               git config difftool.cat-left-a.cmd "cat \"\$LOCAL/file-a\"" &&
+               git config difftool.cat-right-link.cmd "cat \"\$REMOTE/link\"" &&
+               git config difftool.cat-right-b.cmd "cat \"\$REMOTE/file-b\"" &&
+
+               # Record the empty initial state so that we can come back here
+               # later and not have to consider the any cases where difftool
+               # will create symlinks back into the worktree.
+               test_tick &&
+               git commit --allow-empty -m init &&
+
+               # Create a file called "file-a" with a symlink pointing to it.
+               git switch -c branch-a &&
+               echo a >file-a &&
+               ln -s file-a link &&
+               git add file-a link &&
+               test_tick &&
+               git commit -m link-to-file-a &&
+
+               # Create a file called "file-b" and point the symlink to it.
+               git switch -c branch-b &&
+               echo b >file-b &&
+               rm link &&
+               ln -s file-b link &&
+               git add file-b link &&
+               git rm file-a &&
+               test_tick &&
+               git commit -m link-to-file-b &&
+
+               # Checkout the initial branch so that the --symlinks behavior is
+               # not activated. The two directories should be completely
+               # independent with no symlinks pointing back here.
+               git switch branch-init &&
+
+               # The left link must be "file-a" and "file-a" must contain "a".
+               echo file-a >expect &&
+               git difftool --symlinks --dir-diff --tool cat-left-link \
+                       branch-a branch-b >actual &&
+               test_cmp expect actual &&
+
+               echo a >expect &&
+               git difftool --symlinks --dir-diff --tool cat-left-a \
+                       branch-a branch-b >actual &&
+               test_cmp expect actual &&
+
+               # The right link must be "file-b" and "file-b" must contain "b".
+               echo file-b >expect &&
+               git difftool --symlinks --dir-diff --tool cat-right-link \
+                       branch-a branch-b >actual &&
+               test_cmp expect actual &&
+
+               echo b >expect &&
+               git difftool --symlinks --dir-diff --tool cat-right-b \
+                       branch-a branch-b >actual &&
+               test_cmp expect actual
+       )
+'
+
 test_expect_success 'add -N and difftool -d' '
        test_when_finished git reset --hard &&
 
@@ -771,7 +834,7 @@ test_expect_success 'difftool --rotate-to' '
        echo 4 >4 &&
        git add 1 2 4 &&
        git commit -a -m "124" &&
-       git difftool --no-prompt --extcmd=cat --rotate-to="2" HEAD^ >output&&
+       git difftool --no-prompt --extcmd=cat --rotate-to="2" HEAD^ >output &&
        cat >expect <<-\EOF &&
        2
        4