Merge branch 'maint'
[gitweb.git] / t / t7800-difftool.sh
index 8ee186a5fbda8b52cf3dd817a76f2f560505a253..19c72f55bf60c746f72e640e24043b2d83e00fe3 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# Copyright (c) 2009 David Aguilar
+# Copyright (c) 2009, 2010 David Aguilar
 #
 
 test_description='git-difftool
@@ -15,6 +15,9 @@ if ! test_have_prereq PERL; then
        test_done
 fi
 
+LF='
+'
+
 remove_config_vars()
 {
        # Unset all config variables used by git-difftool
@@ -24,6 +27,7 @@ remove_config_vars()
        git config --unset difftool.prompt
        git config --unset merge.tool
        git config --unset mergetool.test-tool.cmd
+       git config --unset mergetool.prompt
        return 0
 }
 
@@ -156,6 +160,17 @@ test_expect_success 'difftool.prompt config variable is false' '
        restore_test_defaults
 '
 
+# Test that we don't have to pass --no-prompt when mergetool.prompt is false
+test_expect_success 'difftool merge.prompt = false' '
+       git config --unset difftool.prompt
+       git config mergetool.prompt false &&
+
+       diff=$(git difftool branch) &&
+       test "$diff" = "branch" &&
+
+       restore_test_defaults
+'
+
 # Test that the -y flag can override difftool.prompt = true
 test_expect_success 'difftool.prompt can overridden with -y' '
        git config difftool.prompt true &&
@@ -219,19 +234,34 @@ test_expect_success 'difftool.<tool>.path' '
        restore_test_defaults
 '
 
-test_expect_success 'difftool --extcmd=...' '
+test_expect_success 'difftool --extcmd=cat' '
        diff=$(git difftool --no-prompt --extcmd=cat branch) &&
+       test "$diff" = branch"$LF"master
+'
 
-       lines=$(echo "$diff" | wc -l) &&
-       test "$lines" -eq 2 &&
+test_expect_success 'difftool --extcmd cat' '
+       diff=$(git difftool --no-prompt --extcmd cat branch) &&
+       test "$diff" = branch"$LF"master
+'
 
-       lines=$(echo "$diff" | grep master | wc -l) &&
-       test "$lines" -eq 1 &&
+test_expect_success 'difftool -x cat' '
+       diff=$(git difftool --no-prompt -x cat branch) &&
+       test "$diff" = branch"$LF"master
+'
 
-       lines=$(echo "$diff" | grep branch | wc -l) &&
-       test "$lines" -eq 1 &&
+test_expect_success 'difftool --extcmd echo arg1' '
+       diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"echo\ \$1\" branch)
+       test "$diff" = file
+'
 
-       restore_test_defaults
+test_expect_success 'difftool --extcmd cat arg1' '
+       diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"cat\ \$1\" branch)
+       test "$diff" = master
+'
+
+test_expect_success 'difftool --extcmd cat arg2' '
+       diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"cat\ \$2\" branch)
+       test "$diff" = branch
 '
 
 test_done