Merge branch 'sh/write-pack-file-warning-message-fix' into sh/finish-tmp-packfile
[git] / t / t4035-diff-quiet.sh
1 #!/bin/sh
2
3 test_description='Return value of diffs'
4
5 . ./test-lib.sh
6
7 test_expect_success 'setup' '
8         echo 1 >a &&
9         git add . &&
10         git commit -m first &&
11         echo 2 >b &&
12         git add . &&
13         git commit -a -m second &&
14         mkdir -p test-outside/repo && (
15                 cd test-outside/repo &&
16                 git init &&
17                 echo "1 1" >a &&
18                 git add . &&
19                 git commit -m 1
20         ) &&
21         mkdir -p test-outside/non/git && (
22                 cd test-outside/non/git &&
23                 echo "1 1" >a &&
24                 echo "1 1" >matching-file &&
25                 echo "1 1 " >trailing-space &&
26                 echo "1   1" >extra-space &&
27                 echo "2" >never-match
28         )
29 '
30
31 test_expect_success 'git diff-tree HEAD^ HEAD' '
32         git diff-tree --quiet HEAD^ HEAD >cnt
33         test $? = 1 && test_line_count = 0 cnt
34 '
35 test_expect_success 'git diff-tree HEAD^ HEAD -- a' '
36         git diff-tree --quiet HEAD^ HEAD -- a >cnt
37         test $? = 0 && test_line_count = 0 cnt
38 '
39 test_expect_success 'git diff-tree HEAD^ HEAD -- b' '
40         git diff-tree --quiet HEAD^ HEAD -- b >cnt
41         test $? = 1 && test_line_count = 0 cnt
42 '
43 # this diff outputs one line: sha1 of the given head
44 test_expect_success 'echo HEAD | git diff-tree --stdin' '
45         echo $(git rev-parse HEAD) | git diff-tree --quiet --stdin >cnt
46         test $? = 1 && test_line_count = 1 cnt
47 '
48 test_expect_success 'git diff-tree HEAD HEAD' '
49         git diff-tree --quiet HEAD HEAD >cnt
50         test $? = 0 && test_line_count = 0 cnt
51 '
52 test_expect_success 'git diff-files' '
53         git diff-files --quiet >cnt
54         test $? = 0 && test_line_count = 0 cnt
55 '
56 test_expect_success 'git diff-index --cached HEAD' '
57         git diff-index --quiet --cached HEAD >cnt
58         test $? = 0 && test_line_count = 0 cnt
59 '
60 test_expect_success 'git diff-index --cached HEAD^' '
61         git diff-index --quiet --cached HEAD^ >cnt
62         test $? = 1 && test_line_count = 0 cnt
63 '
64 test_expect_success 'git diff-index --cached HEAD^' '
65         echo text >>b &&
66         echo 3 >c &&
67         git add . && {
68                 git diff-index --quiet --cached HEAD^ >cnt
69                 test $? = 1 && test_line_count = 0 cnt
70         }
71 '
72 test_expect_success 'git diff-tree -Stext HEAD^ HEAD -- b' '
73         git commit -m "text in b" && {
74                 git diff-tree --quiet -Stext HEAD^ HEAD -- b >cnt
75                 test $? = 1 && test_line_count = 0 cnt
76         }
77 '
78 test_expect_success 'git diff-tree -Snot-found HEAD^ HEAD -- b' '
79         git diff-tree --quiet -Snot-found HEAD^ HEAD -- b >cnt
80         test $? = 0 && test_line_count = 0 cnt
81 '
82 test_expect_success 'git diff-files' '
83         echo 3 >>c && {
84                 git diff-files --quiet >cnt
85                 test $? = 1 && test_line_count = 0 cnt
86         }
87 '
88 test_expect_success 'git diff-index --cached HEAD' '
89         git update-index c && {
90                 git diff-index --quiet --cached HEAD >cnt
91                 test $? = 1 && test_line_count = 0 cnt
92         }
93 '
94
95 test_expect_success 'git diff, one file outside repo' '
96         (
97                 cd test-outside/repo &&
98                 test_expect_code 0 git diff --quiet a ../non/git/matching-file &&
99                 test_expect_code 1 git diff --quiet a ../non/git/extra-space
100         )
101 '
102
103 test_expect_success 'git diff, both files outside repo' '
104         (
105                 GIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY/test-outside" &&
106                 export GIT_CEILING_DIRECTORIES &&
107                 cd test-outside/non/git &&
108                 test_expect_code 0 git diff --quiet a matching-file &&
109                 test_expect_code 1 git diff --quiet a extra-space
110         )
111 '
112
113 test_expect_success 'git diff --ignore-space-at-eol, one file outside repo' '
114         (
115                 cd test-outside/repo &&
116                 test_expect_code 0 git diff --quiet --ignore-space-at-eol a ../non/git/trailing-space &&
117                 test_expect_code 1 git diff --quiet --ignore-space-at-eol a ../non/git/extra-space
118         )
119 '
120
121 test_expect_success 'git diff --ignore-space-at-eol, both files outside repo' '
122         (
123                 GIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY/test-outside" &&
124                 export GIT_CEILING_DIRECTORIES &&
125                 cd test-outside/non/git &&
126                 test_expect_code 0 git diff --quiet --ignore-space-at-eol a trailing-space &&
127                 test_expect_code 1 git diff --quiet --ignore-space-at-eol a extra-space
128         )
129 '
130
131 test_expect_success 'git diff --ignore-all-space, one file outside repo' '
132         (
133                 cd test-outside/repo &&
134                 test_expect_code 0 git diff --quiet --ignore-all-space a ../non/git/trailing-space &&
135                 test_expect_code 0 git diff --quiet --ignore-all-space a ../non/git/extra-space &&
136                 test_expect_code 1 git diff --quiet --ignore-all-space a ../non/git/never-match
137         )
138 '
139
140 test_expect_success 'git diff --ignore-all-space, both files outside repo' '
141         (
142                 GIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY/test-outside" &&
143                 export GIT_CEILING_DIRECTORIES &&
144                 cd test-outside/non/git &&
145                 test_expect_code 0 git diff --quiet --ignore-all-space a trailing-space &&
146                 test_expect_code 0 git diff --quiet --ignore-all-space a extra-space &&
147                 test_expect_code 1 git diff --quiet --ignore-all-space a never-match
148         )
149 '
150
151 test_expect_success 'git diff --quiet ignores stat-change only entries' '
152         test-chmtime +10 a &&
153         echo modified >>b &&
154         test_expect_code 1 git diff --quiet
155 '
156
157 test_done