Code

Sync with 1.7.9.5
[git.git] / t / t4119-apply-config.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2007 Junio C Hamano
4 #
6 test_description='git apply --whitespace=strip and configuration file.
8 '
10 . ./test-lib.sh
12 test_expect_success setup '
13         mkdir sub &&
14         echo A >sub/file1 &&
15         cp sub/file1 saved &&
16         git add sub/file1 &&
17         echo "B " >sub/file1 &&
18         git diff >patch.file
19 '
21 # Also handcraft GNU diff output; note this has trailing whitespace.
22 tr '_' ' ' >gpatch.file <<\EOF &&
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
27 +B_
28 EOF
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 &&
36 check_result () {
37         if grep " " "$1"
38         then
39                 echo "Eh?"
40                 false
41         elif grep B "$1"
42         then
43                 echo Happy
44         else
45                 echo "Huh?"
46                 false
47         fi
48 }
50 test_expect_success 'apply --whitespace=strip' '
52         rm -f sub/file1 &&
53         cp saved sub/file1 &&
54         git update-index --refresh &&
56         git apply --whitespace=strip patch.file &&
57         check_result sub/file1
58 '
60 test_expect_success 'apply --whitespace=strip from config' '
62         rm -f sub/file1 &&
63         cp saved sub/file1 &&
64         git update-index --refresh &&
66         git config apply.whitespace strip &&
67         git apply patch.file &&
68         check_result sub/file1
69 '
71 D=`pwd`
73 test_expect_success 'apply --whitespace=strip in subdir' '
75         cd "$D" &&
76         git config --unset-all apply.whitespace &&
77         rm -f sub/file1 &&
78         cp saved sub/file1 &&
79         git update-index --refresh &&
81         cd sub &&
82         git apply --whitespace=strip ../patch.file &&
83         check_result file1
84 '
86 test_expect_success 'apply --whitespace=strip from config in subdir' '
88         cd "$D" &&
89         git config apply.whitespace strip &&
90         rm -f sub/file1 &&
91         cp saved sub/file1 &&
92         git update-index --refresh &&
94         cd sub &&
95         git apply ../patch.file &&
96         check_result file1
97 '
99 test_expect_success 'same in subdir but with traditional patch input' '
101         cd "$D" &&
102         git config apply.whitespace strip &&
103         rm -f sub/file1 &&
104         cp saved sub/file1 &&
105         git update-index --refresh &&
107         cd sub &&
108         git apply ../gpatch.file &&
109         check_result file1
112 test_expect_success 'same but with traditional patch input of depth 1' '
114         cd "$D" &&
115         git config apply.whitespace strip &&
116         rm -f sub/file1 &&
117         cp saved sub/file1 &&
118         git update-index --refresh &&
120         cd sub &&
121         git apply ../gpatch-sub.file &&
122         check_result file1
125 test_expect_success 'same but with traditional patch input of depth 2' '
127         cd "$D" &&
128         git config apply.whitespace strip &&
129         rm -f sub/file1 &&
130         cp saved sub/file1 &&
131         git update-index --refresh &&
133         cd sub &&
134         git apply ../gpatch-ab-sub.file &&
135         check_result file1
138 test_expect_success 'same but with traditional patch input of depth 1' '
140         cd "$D" &&
141         git config apply.whitespace strip &&
142         rm -f sub/file1 &&
143         cp saved sub/file1 &&
144         git update-index --refresh &&
146         git apply -p0 gpatch-sub.file &&
147         check_result sub/file1
150 test_expect_success 'same but with traditional patch input of depth 2' '
152         cd "$D" &&
153         git config apply.whitespace strip &&
154         rm -f sub/file1 &&
155         cp saved sub/file1 &&
156         git update-index --refresh &&
158         git apply gpatch-ab-sub.file &&
159         check_result sub/file1
162 test_done