blob: 95a7ca707045cad3362b92c18df73e82206a2844 [file] [log] [blame]
Alex Riesen41bbf9d2007-03-14 01:17:04 +01001#!/bin/sh
2
3test_description='Return value of diffs'
4
5. ./test-lib.sh
6
7test_expect_success 'setup' '
Larry D'Anna1caaf222010-02-21 21:58:44 -05008 echo "1 " >a &&
9 git add . &&
10 git commit -m zeroth &&
Alex Riesen41bbf9d2007-03-14 01:17:04 +010011 echo 1 >a &&
12 git add . &&
13 git commit -m first &&
14 echo 2 >b &&
15 git add . &&
16 git commit -a -m second
17'
18
Larry D'Anna1caaf222010-02-21 21:58:44 -050019test_expect_success 'git diff --quiet -w HEAD^^ HEAD^' '
20 git diff --quiet -w HEAD^^ HEAD^
21'
22
23test_expect_success 'git diff --quiet HEAD^^ HEAD^' '
24 test_must_fail git diff --quiet HEAD^^ HEAD^
25'
26
27test_expect_success 'git diff --quiet -w HEAD^ HEAD' '
28 test_must_fail git diff --quiet -w HEAD^ HEAD
29'
30
Alex Riesen41bbf9d2007-03-14 01:17:04 +010031test_expect_success 'git diff-tree HEAD^ HEAD' '
Elijah Newrendd0c69e2010-10-03 14:00:01 -060032 test_expect_code 1 git diff-tree --exit-code HEAD^ HEAD
Alex Riesen41bbf9d2007-03-14 01:17:04 +010033'
34test_expect_success 'git diff-tree HEAD^ HEAD -- a' '
35 git diff-tree --exit-code HEAD^ HEAD -- a
Alex Riesen41bbf9d2007-03-14 01:17:04 +010036'
37test_expect_success 'git diff-tree HEAD^ HEAD -- b' '
Elijah Newrendd0c69e2010-10-03 14:00:01 -060038 test_expect_code 1 git diff-tree --exit-code HEAD^ HEAD -- b
Alex Riesen41bbf9d2007-03-14 01:17:04 +010039'
40test_expect_success 'echo HEAD | git diff-tree --stdin' '
Elijah Newrendd0c69e2010-10-03 14:00:01 -060041 echo $(git rev-parse HEAD) | test_expect_code 1 git diff-tree --exit-code --stdin
Alex Riesen41bbf9d2007-03-14 01:17:04 +010042'
43test_expect_success 'git diff-tree HEAD HEAD' '
44 git diff-tree --exit-code HEAD HEAD
Alex Riesen41bbf9d2007-03-14 01:17:04 +010045'
46test_expect_success 'git diff-files' '
47 git diff-files --exit-code
Alex Riesen41bbf9d2007-03-14 01:17:04 +010048'
49test_expect_success 'git diff-index --cached HEAD' '
50 git diff-index --exit-code --cached HEAD
Alex Riesen41bbf9d2007-03-14 01:17:04 +010051'
52test_expect_success 'git diff-index --cached HEAD^' '
Elijah Newrendd0c69e2010-10-03 14:00:01 -060053 test_expect_code 1 git diff-index --exit-code --cached HEAD^
Alex Riesen41bbf9d2007-03-14 01:17:04 +010054'
55test_expect_success 'git diff-index --cached HEAD^' '
56 echo text >>b &&
57 echo 3 >c &&
Elijah Newrendd0c69e2010-10-03 14:00:01 -060058 git add . &&
59 test_expect_code 1 git diff-index --exit-code --cached HEAD^
Alex Riesen41bbf9d2007-03-14 01:17:04 +010060'
61test_expect_success 'git diff-tree -Stext HEAD^ HEAD -- b' '
Elijah Newrendd0c69e2010-10-03 14:00:01 -060062 git commit -m "text in b" &&
63 test_expect_code 1 git diff-tree -p --exit-code -Stext HEAD^ HEAD -- b
Alex Riesen41bbf9d2007-03-14 01:17:04 +010064'
65test_expect_success 'git diff-tree -Snot-found HEAD^ HEAD -- b' '
66 git diff-tree -p --exit-code -Snot-found HEAD^ HEAD -- b
Alex Riesen41bbf9d2007-03-14 01:17:04 +010067'
68test_expect_success 'git diff-files' '
Elijah Newrendd0c69e2010-10-03 14:00:01 -060069 echo 3 >>c &&
70 test_expect_code 1 git diff-files --exit-code
Alex Riesen41bbf9d2007-03-14 01:17:04 +010071'
72test_expect_success 'git diff-index --cached HEAD' '
Elijah Newrendd0c69e2010-10-03 14:00:01 -060073 git update-index c &&
74 test_expect_code 1 git diff-index --exit-code --cached HEAD
Alex Riesen41bbf9d2007-03-14 01:17:04 +010075'
76
Wincent Colaiuta5973a072007-12-14 12:23:44 +010077test_expect_success '--check --exit-code returns 0 for no difference' '
78
79 git diff --check --exit-code
80
81'
82
83test_expect_success '--check --exit-code returns 1 for a clean difference' '
84
85 echo "good" > a &&
Elijah Newrendd0c69e2010-10-03 14:00:01 -060086 test_expect_code 1 git diff --check --exit-code
Wincent Colaiuta5973a072007-12-14 12:23:44 +010087
88'
89
90test_expect_success '--check --exit-code returns 3 for a dirty difference' '
91
92 echo "bad " >> a &&
Elijah Newrendd0c69e2010-10-03 14:00:01 -060093 test_expect_code 3 git diff --check --exit-code
Wincent Colaiuta5973a072007-12-14 12:23:44 +010094
95'
96
97test_expect_success '--check with --no-pager returns 2 for dirty difference' '
98
Elijah Newrendd0c69e2010-10-03 14:00:01 -060099 test_expect_code 2 git --no-pager diff --check
Wincent Colaiuta5973a072007-12-14 12:23:44 +0100100
101'
102
Junio C Hamano18374e52008-06-26 13:16:33 -0700103test_expect_success 'check should test not just the last line' '
104 echo "" >>a &&
Elijah Newrendd0c69e2010-10-03 14:00:01 -0600105 test_expect_code 2 git --no-pager diff --check
Junio C Hamano18374e52008-06-26 13:16:33 -0700106
107'
108
Junio C Hamano04954042008-06-26 15:37:21 -0700109test_expect_success 'check detects leftover conflict markers' '
110 git reset --hard &&
111 git checkout HEAD^ &&
112 echo binary >>b &&
113 git commit -m "side" b &&
114 test_must_fail git merge master &&
Elijah Newrendd0c69e2010-10-03 14:00:01 -0600115 git add b &&
116 test_expect_code 2 git --no-pager diff --cached --check >test.out &&
Brian Gernhardtab20fda2008-06-29 16:49:06 -0400117 test 3 = $(grep "conflict marker" test.out | wc -l) &&
Junio C Hamano04954042008-06-26 15:37:21 -0700118 git reset --hard
119'
120
Junio C Hamanoa757c642010-03-24 19:21:32 -0700121test_expect_success 'check honors conflict marker length' '
122 git reset --hard &&
123 echo ">>>>>>> boo" >>b &&
124 echo "======" >>a &&
125 git diff --check a &&
Elijah Newrendd0c69e2010-10-03 14:00:01 -0600126 test_expect_code 2 git diff --check b &&
Junio C Hamanoa757c642010-03-24 19:21:32 -0700127 git reset --hard &&
128 echo ">>>>>>>> boo" >>b &&
129 echo "========" >>a &&
130 git diff --check &&
131 echo "b conflict-marker-size=8" >.gitattributes &&
Elijah Newrendd0c69e2010-10-03 14:00:01 -0600132 test_expect_code 2 git diff --check b &&
Junio C Hamanoa757c642010-03-24 19:21:32 -0700133 git diff --check a &&
134 git reset --hard
135'
136
Alex Riesen41bbf9d2007-03-14 01:17:04 +0100137test_done