You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
3.5 KiB
166 lines
3.5 KiB
#!/bin/sh |
|
|
|
test_description='Return value of diffs' |
|
|
|
. ./test-lib.sh |
|
|
|
test_expect_success 'setup' ' |
|
echo "1 " >a && |
|
git add . && |
|
git commit -m zeroth && |
|
echo 1 >a && |
|
git add . && |
|
git commit -m first && |
|
echo 2 >b && |
|
git add . && |
|
git commit -a -m second |
|
' |
|
|
|
test_expect_success 'git diff --quiet -w HEAD^^ HEAD^' ' |
|
git diff --quiet -w HEAD^^ HEAD^ |
|
' |
|
|
|
test_expect_success 'git diff --quiet HEAD^^ HEAD^' ' |
|
test_must_fail git diff --quiet HEAD^^ HEAD^ |
|
' |
|
|
|
test_expect_success 'git diff --quiet -w HEAD^ HEAD' ' |
|
test_must_fail git diff --quiet -w HEAD^ HEAD |
|
' |
|
|
|
test_expect_success 'git diff-tree HEAD^ HEAD' ' |
|
git diff-tree --exit-code HEAD^ HEAD |
|
test $? = 1 |
|
' |
|
test_expect_success 'git diff-tree HEAD^ HEAD -- a' ' |
|
git diff-tree --exit-code HEAD^ HEAD -- a |
|
test $? = 0 |
|
' |
|
test_expect_success 'git diff-tree HEAD^ HEAD -- b' ' |
|
git diff-tree --exit-code HEAD^ HEAD -- b |
|
test $? = 1 |
|
' |
|
test_expect_success 'echo HEAD | git diff-tree --stdin' ' |
|
echo $(git rev-parse HEAD) | git diff-tree --exit-code --stdin |
|
test $? = 1 |
|
' |
|
test_expect_success 'git diff-tree HEAD HEAD' ' |
|
git diff-tree --exit-code HEAD HEAD |
|
test $? = 0 |
|
' |
|
test_expect_success 'git diff-files' ' |
|
git diff-files --exit-code |
|
test $? = 0 |
|
' |
|
test_expect_success 'git diff-index --cached HEAD' ' |
|
git diff-index --exit-code --cached HEAD |
|
test $? = 0 |
|
' |
|
test_expect_success 'git diff-index --cached HEAD^' ' |
|
git diff-index --exit-code --cached HEAD^ |
|
test $? = 1 |
|
' |
|
test_expect_success 'git diff-index --cached HEAD^' ' |
|
echo text >>b && |
|
echo 3 >c && |
|
git add . && { |
|
git diff-index --exit-code --cached HEAD^ |
|
test $? = 1 |
|
} |
|
' |
|
test_expect_success 'git diff-tree -Stext HEAD^ HEAD -- b' ' |
|
git commit -m "text in b" && { |
|
git diff-tree -p --exit-code -Stext HEAD^ HEAD -- b |
|
test $? = 1 |
|
} |
|
' |
|
test_expect_success 'git diff-tree -Snot-found HEAD^ HEAD -- b' ' |
|
git diff-tree -p --exit-code -Snot-found HEAD^ HEAD -- b |
|
test $? = 0 |
|
' |
|
test_expect_success 'git diff-files' ' |
|
echo 3 >>c && { |
|
git diff-files --exit-code |
|
test $? = 1 |
|
} |
|
' |
|
test_expect_success 'git diff-index --cached HEAD' ' |
|
git update-index c && { |
|
git diff-index --exit-code --cached HEAD |
|
test $? = 1 |
|
} |
|
' |
|
|
|
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_expect_success 'check honors conflict marker length' ' |
|
git reset --hard && |
|
echo ">>>>>>> boo" >>b && |
|
echo "======" >>a && |
|
git diff --check a && |
|
( |
|
git diff --check b |
|
test $? = 2 |
|
) && |
|
git reset --hard && |
|
echo ">>>>>>>> boo" >>b && |
|
echo "========" >>a && |
|
git diff --check && |
|
echo "b conflict-marker-size=8" >.gitattributes && |
|
( |
|
git diff --check b |
|
test $? = 2 |
|
) && |
|
git diff --check a && |
|
git reset --hard |
|
' |
|
|
|
test_done
|
|
|