]>
Commit | Line | Data |
---|---|---|
d8faea9d JN |
1 | #!/bin/sh |
2 | ||
3 | test_description='diff --relative tests' | |
4 | . ./test-lib.sh | |
5 | ||
6 | test_expect_success 'setup' ' | |
7 | git commit --allow-empty -m empty && | |
8 | echo content >file1 && | |
9 | mkdir subdir && | |
10 | echo other content >subdir/file2 && | |
c28ded83 LA |
11 | blob_file1=$(git hash-object file1) && |
12 | blob_file2=$(git hash-object subdir/file2) && | |
d8faea9d JN |
13 | git add . && |
14 | git commit -m one | |
15 | ' | |
16 | ||
f1e4fb24 JH |
17 | check_diff () { |
18 | dir=$1 | |
19 | shift | |
20 | expect=$1 | |
21 | shift | |
c28ded83 | 22 | short_blob=$(git rev-parse --short $blob_file2) |
f1e4fb24 JH |
23 | cat >expected <<-EOF |
24 | diff --git a/$expect b/$expect | |
25 | new file mode 100644 | |
5c024287 | 26 | index 0000000..$short_blob |
f1e4fb24 JH |
27 | --- /dev/null |
28 | +++ b/$expect | |
29 | @@ -0,0 +1 @@ | |
30 | +other content | |
31 | EOF | |
32 | test_expect_success "-p $*" " | |
33 | git -C '$dir' diff -p $* HEAD^ >actual && | |
34 | test_cmp expected actual | |
35 | " | |
d8faea9d JN |
36 | } |
37 | ||
f1e4fb24 JH |
38 | check_numstat () { |
39 | dir=$1 | |
40 | shift | |
41 | expect=$1 | |
42 | shift | |
43 | cat >expected <<-EOF | |
44 | 1 0 $expect | |
45 | EOF | |
46 | test_expect_success "--numstat $*" " | |
47 | echo '1 0 $expect' >expected && | |
48 | git -C '$dir' diff --numstat $* HEAD^ >actual && | |
49 | test_cmp expected actual | |
50 | " | |
6dd88832 JN |
51 | } |
52 | ||
f1e4fb24 JH |
53 | check_stat () { |
54 | dir=$1 | |
55 | shift | |
56 | expect=$1 | |
57 | shift | |
58 | cat >expected <<-EOF | |
59 | $expect | 1 + | |
60 | 1 file changed, 1 insertion(+) | |
61 | EOF | |
62 | test_expect_success "--stat $*" " | |
63 | git -C '$dir' diff --stat $* HEAD^ >actual && | |
64 | test_i18ncmp expected actual | |
65 | " | |
d8faea9d JN |
66 | } |
67 | ||
f1e4fb24 JH |
68 | check_raw () { |
69 | dir=$1 | |
70 | shift | |
71 | expect=$1 | |
72 | shift | |
73 | cat >expected <<-EOF | |
c28ded83 | 74 | :000000 100644 $ZERO_OID $blob_file2 A $expect |
f1e4fb24 JH |
75 | EOF |
76 | test_expect_success "--raw $*" " | |
77 | git -C '$dir' diff --no-abbrev --raw $* HEAD^ >actual && | |
78 | test_cmp expected actual | |
79 | " | |
d8faea9d JN |
80 | } |
81 | ||
6d7c17ec JK |
82 | for type in diff numstat stat raw |
83 | do | |
84 | check_$type . file2 --relative=subdir/ | |
85 | check_$type . file2 --relative=subdir | |
86 | check_$type subdir file2 --relative | |
87 | check_$type . dir/file2 --relative=sub | |
d8faea9d JN |
88 | done |
89 | ||
c28ded83 LA |
90 | check_diff_relative_option () { |
91 | dir=$1 | |
92 | shift | |
93 | expect=$1 | |
94 | shift | |
95 | relative_opt=$1 | |
96 | shift | |
97 | test_expect_success "config diff.relative $relative_opt -p $*" " | |
98 | short_blob=\$(git rev-parse --short $blob_file2) && | |
99 | cat >expected <<-EOF && | |
100 | diff --git a/$expect b/$expect | |
101 | new file mode 100644 | |
102 | index 0000000..\$short_blob | |
103 | --- /dev/null | |
104 | +++ b/$expect | |
105 | @@ -0,0 +1 @@ | |
106 | +other content | |
107 | EOF | |
108 | test_config -C $dir diff.relative $relative_opt && | |
109 | git -C '$dir' diff -p $* HEAD^ >actual && | |
110 | test_cmp expected actual | |
111 | " | |
112 | } | |
113 | ||
114 | check_diff_no_relative_option () { | |
115 | dir=$1 | |
116 | shift | |
117 | expect=$1 | |
118 | shift | |
119 | relative_opt=$1 | |
120 | shift | |
121 | test_expect_success "config diff.relative $relative_opt -p $*" " | |
122 | short_blob_file1=\$(git rev-parse --short $blob_file1) && | |
123 | short_blob_file2=\$(git rev-parse --short $blob_file2) && | |
124 | cat >expected <<-EOF && | |
125 | diff --git a/file1 b/file1 | |
126 | new file mode 100644 | |
127 | index 0000000..\$short_blob_file1 | |
128 | --- /dev/null | |
129 | +++ b/file1 | |
130 | @@ -0,0 +1 @@ | |
131 | +content | |
132 | diff --git a/$expect b/$expect | |
133 | new file mode 100644 | |
134 | index 0000000..\$short_blob_file2 | |
135 | --- /dev/null | |
136 | +++ b/$expect | |
137 | @@ -0,0 +1 @@ | |
138 | +other content | |
139 | EOF | |
140 | test_config -C $dir diff.relative $relative_opt && | |
141 | git -C '$dir' diff -p $* HEAD^ >actual && | |
142 | test_cmp expected actual | |
143 | " | |
144 | } | |
145 | ||
146 | check_diff_no_relative_option . subdir/file2 false | |
147 | check_diff_no_relative_option . subdir/file2 true --no-relative | |
148 | check_diff_no_relative_option . subdir/file2 false --no-relative | |
149 | check_diff_no_relative_option subdir subdir/file2 false | |
150 | check_diff_no_relative_option subdir subdir/file2 true --no-relative | |
151 | check_diff_no_relative_option subdir subdir/file2 false --no-relative | |
152 | ||
153 | check_diff_relative_option . file2 false --relative=subdir/ | |
154 | check_diff_relative_option . file2 false --relative=subdir | |
155 | check_diff_relative_option . file2 true --relative=subdir/ | |
156 | check_diff_relative_option . file2 true --relative=subdir | |
157 | check_diff_relative_option subdir file2 false --relative | |
158 | check_diff_relative_option subdir file2 true --relative | |
159 | check_diff_relative_option subdir file2 true | |
160 | check_diff_relative_option subdir file2 false --no-relative --relative | |
161 | check_diff_relative_option subdir file2 true --no-relative --relative | |
162 | check_diff_relative_option . file2 false --no-relative --relative=subdir | |
163 | check_diff_relative_option . file2 true --no-relative --relative=subdir | |
164 | ||
d8faea9d | 165 | test_done |