Merge http://www.kernel.org/pub/scm/gitk/gitk
[git] / t / t4109-apply-multifrag.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2005 Junio C Hamano
4 # Copyright (c) 2005 Robert Fitzsimons
5 #
6
7 test_description='git-apply test patches with multiple fragments.
8
9 '
10 . ./test-lib.sh
11
12 # setup
13
14 cat > patch1.patch <<\EOF
15 diff --git a/main.c b/main.c
16 new file mode 100644
17 --- /dev/null
18 +++ b/main.c
19 @@ -0,0 +1,23 @@
20 +#include <stdio.h>
21 +
22 +int func(int num);
23 +void print_int(int num);
24 +
25 +int main() {
26 +       int i;
27 +
28 +       for (i = 0; i < 10; i++) {
29 +               print_int(func(i));
30 +       }
31 +
32 +       return 0;
33 +}
34 +
35 +int func(int num) {
36 +       return num * num;
37 +}
38 +
39 +void print_int(int num) {
40 +       printf("%d", num);
41 +}
42 +
43 EOF
44 cat > patch2.patch <<\EOF
45 diff --git a/main.c b/main.c
46 --- a/main.c
47 +++ b/main.c
48 @@ -1,7 +1,9 @@
49 +#include <stdlib.h>
50  #include <stdio.h>
51  
52  int func(int num);
53  void print_int(int num);
54 +void print_ln();
55  
56  int main() {
57         int i;
58 @@ -10,6 +12,8 @@
59                 print_int(func(i));
60         }
61  
62 +       print_ln();
63 +
64         return 0;
65  }
66  
67 @@ -21,3 +25,7 @@
68         printf("%d", num);
69  }
70  
71 +void print_ln() {
72 +       printf("\n");
73 +}
74 +
75 EOF
76 cat > patch3.patch <<\EOF
77 diff --git a/main.c b/main.c
78 --- a/main.c
79 +++ b/main.c
80 @@ -1,9 +1,7 @@
81 -#include <stdlib.h>
82  #include <stdio.h>
83  
84  int func(int num);
85  void print_int(int num);
86 -void print_ln();
87  
88  int main() {
89         int i;
90 @@ -12,8 +10,6 @@
91                 print_int(func(i));
92         }
93  
94 -       print_ln();
95 -
96         return 0;
97  }
98  
99 @@ -25,7 +21,3 @@
100         printf("%d", num);
101  }
102  
103 -void print_ln() {
104 -       printf("\n");
105 -}
106 -
107 EOF
108 cat > patch4.patch <<\EOF
109 diff --git a/main.c b/main.c
110 --- a/main.c
111 +++ b/main.c
112 @@ -1,13 +1,14 @@
113  #include <stdio.h>
114  
115  int func(int num);
116 -void print_int(int num);
117 +int func2(int num);
118  
119  int main() {
120         int i;
121  
122         for (i = 0; i < 10; i++) {
123 -               print_int(func(i));
124 +               printf("%d", func(i));
125 +               printf("%d", func3(i));
126         }
127  
128         return 0;
129 @@ -17,7 +18,7 @@
130         return num * num;
131  }
132  
133 -void print_int(int num) {
134 -       printf("%d", num);
135 +int func2(int num) {
136 +       return num * num * num;
137  }
138  
139 EOF
140
141 test_expect_success "S = git-apply (1)" \
142     'git-apply patch1.patch patch2.patch'
143 mv main.c main.c.git
144
145 test_expect_success "S = patch (1)" \
146     'cat patch1.patch patch2.patch | patch -p1'
147
148 test_expect_success "S = cmp (1)" \
149     'cmp main.c.git main.c'
150
151 rm -f main.c main.c.git
152
153 test_expect_success "S = git-apply (2)" \
154     'git-apply patch1.patch patch2.patch patch3.patch'
155 mv main.c main.c.git
156
157 test_expect_success "S = patch (2)" \
158     'cat patch1.patch patch2.patch patch3.patch | patch -p1'
159
160 test_expect_success "S = cmp (2)" \
161     'cmp main.c.git main.c'
162
163 rm -f main.c main.c.git
164
165 test_expect_success "S = git-apply (3)" \
166     'git-apply patch1.patch patch4.patch'
167 mv main.c main.c.git
168
169 test_expect_success "S = patch (3)" \
170     'cat patch1.patch patch4.patch | patch -p1'
171
172 test_expect_success "S = cmp (3)" \
173     'cmp main.c.git main.c'
174
175 test_done
176