]>
Commit | Line | Data |
---|---|---|
dc7b2436 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2007 Junio C Hamano | |
4 | # | |
5 | ||
5be60078 | 6 | test_description='git apply --whitespace=strip and configuration file. |
dc7b2436 JH |
7 | |
8 | ' | |
9 | ||
10 | . ./test-lib.sh | |
11 | ||
12 | test_expect_success setup ' | |
56185f49 JH |
13 | mkdir sub && |
14 | echo A >sub/file1 && | |
15 | cp sub/file1 saved && | |
16 | git add sub/file1 && | |
17 | echo "B " >sub/file1 && | |
dc7b2436 JH |
18 | git diff >patch.file |
19 | ' | |
20 | ||
c24e9757 | 21 | # Also handcraft GNU diff output; note this has trailing whitespace. |
74f16b0c | 22 | tr '_' ' ' >gpatch.file <<\EOF && |
c24e9757 JH |
23 | --- file1 2007-02-21 01:04:24.000000000 -0800 |
24 | +++ file1+ 2007-02-21 01:07:44.000000000 -0800 | |
25 | @@ -1 +1 @@ | |
26 | -A | |
74f16b0c | 27 | +B_ |
c24e9757 JH |
28 | EOF |
29 | ||
3e8a5db9 JH |
30 | sed -e 's|file1|sub/&|' gpatch.file >gpatch-sub.file && |
31 | sed -e ' | |
32 | /^--- /s|file1|a/sub/&| | |
33 | /^+++ /s|file1|b/sub/&| | |
34 | ' gpatch.file >gpatch-ab-sub.file && | |
35 | ||
fe6e0eec JH |
36 | check_result () { |
37 | if grep " " "$1" | |
dc7b2436 JH |
38 | then |
39 | echo "Eh?" | |
40 | false | |
fe6e0eec | 41 | elif grep B "$1" |
c24e9757 | 42 | then |
dc7b2436 | 43 | echo Happy |
c24e9757 JH |
44 | else |
45 | echo "Huh?" | |
46 | false | |
dc7b2436 | 47 | fi |
fe6e0eec JH |
48 | } |
49 | ||
50 | test_expect_success 'apply --whitespace=strip' ' | |
51 | ||
52 | rm -f sub/file1 && | |
53 | cp saved sub/file1 && | |
54 | git update-index --refresh && | |
55 | ||
56 | git apply --whitespace=strip patch.file && | |
57 | check_result sub/file1 | |
dc7b2436 JH |
58 | ' |
59 | ||
60 | test_expect_success 'apply --whitespace=strip from config' ' | |
61 | ||
56185f49 JH |
62 | rm -f sub/file1 && |
63 | cp saved sub/file1 && | |
dc7b2436 JH |
64 | git update-index --refresh && |
65 | ||
66 | git config apply.whitespace strip && | |
67 | git apply patch.file && | |
fe6e0eec | 68 | check_result sub/file1 |
dc7b2436 JH |
69 | ' |
70 | ||
6003eb13 | 71 | D=$(pwd) |
dc7b2436 JH |
72 | |
73 | test_expect_success 'apply --whitespace=strip in subdir' ' | |
74 | ||
75 | cd "$D" && | |
a48fcd83 | 76 | git config --unset-all apply.whitespace && |
56185f49 JH |
77 | rm -f sub/file1 && |
78 | cp saved sub/file1 && | |
dc7b2436 JH |
79 | git update-index --refresh && |
80 | ||
81 | cd sub && | |
9987d7c5 | 82 | git apply --whitespace=strip ../patch.file && |
fe6e0eec | 83 | check_result file1 |
dc7b2436 JH |
84 | ' |
85 | ||
86 | test_expect_success 'apply --whitespace=strip from config in subdir' ' | |
87 | ||
88 | cd "$D" && | |
89 | git config apply.whitespace strip && | |
56185f49 JH |
90 | rm -f sub/file1 && |
91 | cp saved sub/file1 && | |
dc7b2436 JH |
92 | git update-index --refresh && |
93 | ||
94 | cd sub && | |
9987d7c5 | 95 | git apply ../patch.file && |
fe6e0eec | 96 | check_result file1 |
c24e9757 JH |
97 | ' |
98 | ||
99 | test_expect_success 'same in subdir but with traditional patch input' ' | |
100 | ||
101 | cd "$D" && | |
102 | git config apply.whitespace strip && | |
103 | rm -f sub/file1 && | |
104 | cp saved sub/file1 && | |
105 | git update-index --refresh && | |
106 | ||
107 | cd sub && | |
3e8a5db9 | 108 | git apply ../gpatch.file && |
fe6e0eec | 109 | check_result file1 |
3e8a5db9 JH |
110 | ' |
111 | ||
112 | test_expect_success 'same but with traditional patch input of depth 1' ' | |
113 | ||
114 | cd "$D" && | |
115 | git config apply.whitespace strip && | |
116 | rm -f sub/file1 && | |
117 | cp saved sub/file1 && | |
118 | git update-index --refresh && | |
119 | ||
120 | cd sub && | |
121 | git apply ../gpatch-sub.file && | |
fe6e0eec | 122 | check_result file1 |
3e8a5db9 JH |
123 | ' |
124 | ||
125 | test_expect_success 'same but with traditional patch input of depth 2' ' | |
126 | ||
127 | cd "$D" && | |
128 | git config apply.whitespace strip && | |
129 | rm -f sub/file1 && | |
130 | cp saved sub/file1 && | |
131 | git update-index --refresh && | |
132 | ||
133 | cd sub && | |
134 | git apply ../gpatch-ab-sub.file && | |
fe6e0eec JH |
135 | check_result file1 |
136 | ' | |
137 | ||
138 | test_expect_success 'same but with traditional patch input of depth 1' ' | |
139 | ||
140 | cd "$D" && | |
141 | git config apply.whitespace strip && | |
142 | rm -f sub/file1 && | |
143 | cp saved sub/file1 && | |
144 | git update-index --refresh && | |
145 | ||
146 | git apply -p0 gpatch-sub.file && | |
147 | check_result sub/file1 | |
148 | ' | |
149 | ||
150 | test_expect_success 'same but with traditional patch input of depth 2' ' | |
151 | ||
152 | cd "$D" && | |
153 | git config apply.whitespace strip && | |
154 | rm -f sub/file1 && | |
155 | cp saved sub/file1 && | |
156 | git update-index --refresh && | |
157 | ||
158 | git apply gpatch-ab-sub.file && | |
159 | check_result sub/file1 | |
dc7b2436 JH |
160 | ' |
161 | ||
d487b0ba JH |
162 | test_expect_success 'in subdir with traditional patch input' ' |
163 | cd "$D" && | |
164 | git config apply.whitespace strip && | |
165 | cat >.gitattributes <<-EOF && | |
166 | /* whitespace=blank-at-eol | |
167 | sub/* whitespace=-blank-at-eol | |
168 | EOF | |
169 | rm -f sub/file1 && | |
170 | cp saved sub/file1 && | |
171 | git update-index --refresh && | |
172 | ||
173 | cd sub && | |
174 | git apply ../gpatch.file && | |
175 | echo "B " >expect && | |
176 | test_cmp expect file1 | |
177 | ' | |
178 | ||
dc7b2436 | 179 | test_done |