]>
Commit | Line | Data |
---|---|---|
4be60962 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2005 Junio C Hamano | |
4 | # | |
5 | ||
5be60078 | 6 | test_description='git apply boundary tests |
4be60962 JH |
7 | |
8 | ' | |
9 | . ./test-lib.sh | |
10 | ||
11 | L="c d e f g h i j k l m n o p q r s t u v w x" | |
12 | ||
13 | test_expect_success setup ' | |
14 | for i in b '"$L"' y | |
15 | do | |
16 | echo $i | |
17 | done >victim && | |
18 | cat victim >original && | |
19 | git update-index --add victim && | |
20 | ||
21 | : add to the head | |
22 | for i in a b '"$L"' y | |
23 | do | |
24 | echo $i | |
25 | done >victim && | |
26 | cat victim >add-a-expect && | |
27 | git diff victim >add-a-patch.with && | |
28 | git diff --unified=0 >add-a-patch.without && | |
29 | ||
ed0f47a8 JH |
30 | : insert at line two |
31 | for i in b a '"$L"' y | |
32 | do | |
33 | echo $i | |
34 | done >victim && | |
35 | cat victim >insert-a-expect && | |
36 | git diff victim >insert-a-patch.with && | |
37 | git diff --unified=0 >insert-a-patch.without && | |
38 | ||
4be60962 JH |
39 | : modify at the head |
40 | for i in a '"$L"' y | |
41 | do | |
42 | echo $i | |
43 | done >victim && | |
44 | cat victim >mod-a-expect && | |
45 | git diff victim >mod-a-patch.with && | |
46 | git diff --unified=0 >mod-a-patch.without && | |
47 | ||
48 | : remove from the head | |
49 | for i in '"$L"' y | |
50 | do | |
51 | echo $i | |
52 | done >victim && | |
53 | cat victim >del-a-expect && | |
54 | git diff victim >del-a-patch.with | |
55 | git diff --unified=0 >del-a-patch.without && | |
56 | ||
57 | : add to the tail | |
58 | for i in b '"$L"' y z | |
59 | do | |
60 | echo $i | |
61 | done >victim && | |
62 | cat victim >add-z-expect && | |
63 | git diff victim >add-z-patch.with && | |
64 | git diff --unified=0 >add-z-patch.without && | |
65 | ||
66 | : modify at the tail | |
ed0f47a8 | 67 | for i in b '"$L"' z |
4be60962 JH |
68 | do |
69 | echo $i | |
70 | done >victim && | |
71 | cat victim >mod-z-expect && | |
72 | git diff victim >mod-z-patch.with && | |
73 | git diff --unified=0 >mod-z-patch.without && | |
74 | ||
75 | : remove from the tail | |
76 | for i in b '"$L"' | |
77 | do | |
78 | echo $i | |
79 | done >victim && | |
80 | cat victim >del-z-expect && | |
81 | git diff victim >del-z-patch.with | |
82 | git diff --unified=0 >del-z-patch.without && | |
83 | ||
84 | : done | |
85 | ' | |
86 | ||
87 | for with in with without | |
88 | do | |
89 | case "$with" in | |
90 | with) u= ;; | |
91 | without) u='--unidiff-zero ' ;; | |
92 | esac | |
ed0f47a8 | 93 | for kind in add-a add-z insert-a mod-a mod-z del-a del-z |
4be60962 JH |
94 | do |
95 | test_expect_success "apply $kind-patch $with context" ' | |
96 | cat original >victim && | |
97 | git update-index victim && | |
98 | git apply --index '"$u$kind-patch.$with"' || { | |
99 | cat '"$kind-patch.$with"' | |
100 | (exit 1) | |
101 | } && | |
3af82863 | 102 | test_cmp '"$kind"'-expect victim |
4be60962 JH |
103 | ' |
104 | done | |
105 | done | |
106 | ||
ed0f47a8 | 107 | for kind in add-a add-z insert-a mod-a mod-z del-a del-z |
4be60962 JH |
108 | do |
109 | rm -f $kind-ng.without | |
110 | sed -e "s/^diff --git /diff /" \ | |
111 | -e '/^index /d' \ | |
112 | <$kind-patch.without >$kind-ng.without | |
113 | test_expect_success "apply non-git $kind-patch without context" ' | |
114 | cat original >victim && | |
115 | git update-index victim && | |
116 | git apply --unidiff-zero --index '"$kind-ng.without"' || { | |
117 | cat '"$kind-ng.without"' | |
118 | (exit 1) | |
119 | } && | |
3af82863 | 120 | test_cmp '"$kind"'-expect victim |
4be60962 JH |
121 | ' |
122 | done | |
123 | ||
ee5a317e JH |
124 | test_expect_success 'two lines' ' |
125 | ||
126 | >file && | |
127 | git add file && | |
128 | echo aaa >file && | |
129 | git diff >patch && | |
130 | git add file && | |
131 | echo bbb >file && | |
132 | git add file && | |
133 | test_must_fail git apply --check patch | |
134 | ||
135 | ' | |
136 | ||
24ff4d56 BG |
137 | test_expect_success 'apply patch with 3 context lines matching at end' ' |
138 | { echo a; echo b; echo c; echo d; } >file && | |
139 | git add file && | |
140 | echo e >>file && | |
141 | git diff >patch && | |
142 | >file && | |
143 | test_must_fail git apply patch | |
144 | ' | |
145 | ||
4be60962 | 146 | test_done |