t7800: run --dir-diff tests with and without symlinks

Currently the difftool --dir-diff tests may or may not use symlinks
depending on the operating system on which they are run.  In one case
this has caused a test failure to be noticed only on Windows when the
test also fails on Linux when difftool is invoked with --no-symlinks.

Rewrite these tests so that they do not depend on the environment but
run explicitly with both --symlinks and --no-symlinks, protecting the
--symlinks version with a SYMLINKS prerequisite.

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
John Keeping 2013-03-29 11:28:36 +00:00 committed by Junio C Hamano
parent 3caf5a93d8
commit e01afdb74b

View file

@ -318,28 +318,39 @@ test_expect_success PERL 'setup change in subdirectory' '
git commit -m "modified both" git commit -m "modified both"
' '
test_expect_success PERL 'difftool -d' ' run_dir_diff_test () {
git difftool -d --extcmd ls branch >output && test_expect_success PERL "$1 --no-symlinks" "
symlinks=--no-symlinks &&
$2
"
test_expect_success PERL,SYMLINKS "$1 --symlinks" "
symlinks=--symlinks &&
$2
"
}
run_dir_diff_test 'difftool -d' '
git difftool -d $symlinks --extcmd ls branch >output &&
grep sub output && grep sub output &&
grep file output grep file output
' '
test_expect_success PERL 'difftool --dir-diff' ' run_dir_diff_test 'difftool --dir-diff' '
git difftool --dir-diff --extcmd ls branch >output && git difftool --dir-diff $symlinks --extcmd ls branch >output &&
grep sub output && grep sub output &&
grep file output grep file output
' '
test_expect_success PERL 'difftool --dir-diff ignores --prompt' ' run_dir_diff_test 'difftool --dir-diff ignores --prompt' '
git difftool --dir-diff --prompt --extcmd ls branch >output && git difftool --dir-diff $symlinks --prompt --extcmd ls branch >output &&
grep sub output && grep sub output &&
grep file output grep file output
' '
test_expect_success PERL 'difftool --dir-diff from subdirectory' ' run_dir_diff_test 'difftool --dir-diff from subdirectory' '
( (
cd sub && cd sub &&
git difftool --dir-diff --extcmd ls branch >output && git difftool --dir-diff $symlinks --extcmd ls branch >output &&
grep sub output && grep sub output &&
grep file output grep file output
) )