Code

Merge branch 'maint'
[git.git] / t / t4017-diff-retval.sh
index 68731908beaae88da6cc309fea91e84df533dfdc..60dd2014d5ae5d5e9e168b8b60278d90ef93cc53 100755 (executable)
@@ -76,4 +76,55 @@ test_expect_success 'git diff-index --cached HEAD' '
        }
 '
 
+test_expect_success '--check --exit-code returns 0 for no difference' '
+
+       git diff --check --exit-code
+
+'
+
+test_expect_success '--check --exit-code returns 1 for a clean difference' '
+
+       echo "good" > a &&
+       git diff --check --exit-code
+       test $? = 1
+
+'
+
+test_expect_success '--check --exit-code returns 3 for a dirty difference' '
+
+       echo "bad   " >> a &&
+       git diff --check --exit-code
+       test $? = 3
+
+'
+
+test_expect_success '--check with --no-pager returns 2 for dirty difference' '
+
+       git --no-pager diff --check
+       test $? = 2
+
+'
+
+
+test_expect_success 'check should test not just the last line' '
+       echo "" >>a &&
+       git --no-pager diff --check
+       test $? = 2
+
+'
+
+test_expect_success 'check detects leftover conflict markers' '
+       git reset --hard &&
+       git checkout HEAD^ &&
+       echo binary >>b &&
+       git commit -m "side" b &&
+       test_must_fail git merge master &&
+       git add b && (
+               git --no-pager diff --cached --check >test.out
+               test $? = 2
+       ) &&
+       test 3 = $(grep "conflict marker" test.out | wc -l) &&
+       git reset --hard
+'
+
 test_done