]>
Commit | Line | Data |
---|---|---|
34292bdd JS |
1 | #!/bin/sh |
2 | ||
3 | test_description='patience diff algorithm' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | cat >file1 <<\EOF | |
8 | #include <stdio.h> | |
9 | ||
10 | // Frobs foo heartily | |
11 | int frobnitz(int foo) | |
12 | { | |
13 | int i; | |
14 | for(i = 0; i < 10; i++) | |
15 | { | |
16 | printf("Your answer is: "); | |
17 | printf("%d\n", foo); | |
18 | } | |
19 | } | |
20 | ||
21 | int fact(int n) | |
22 | { | |
23 | if(n > 1) | |
24 | { | |
25 | return fact(n-1) * n; | |
26 | } | |
27 | return 1; | |
28 | } | |
29 | ||
30 | int main(int argc, char **argv) | |
31 | { | |
32 | frobnitz(fact(10)); | |
33 | } | |
34 | EOF | |
35 | ||
36 | cat >file2 <<\EOF | |
37 | #include <stdio.h> | |
38 | ||
39 | int fib(int n) | |
40 | { | |
41 | if(n > 2) | |
42 | { | |
43 | return fib(n-1) + fib(n-2); | |
44 | } | |
45 | return 1; | |
46 | } | |
47 | ||
48 | // Frobs foo heartily | |
49 | int frobnitz(int foo) | |
50 | { | |
51 | int i; | |
52 | for(i = 0; i < 10; i++) | |
53 | { | |
54 | printf("%d\n", foo); | |
55 | } | |
56 | } | |
57 | ||
58 | int main(int argc, char **argv) | |
59 | { | |
60 | frobnitz(fib(10)); | |
61 | } | |
62 | EOF | |
63 | ||
64 | cat >expect <<\EOF | |
65 | diff --git a/file1 b/file2 | |
66 | index 6faa5a3..e3af329 100644 | |
67 | --- a/file1 | |
68 | +++ b/file2 | |
69 | @@ -1,26 +1,25 @@ | |
70 | #include <stdio.h> | |
71 | ||
72 | +int fib(int n) | |
73 | +{ | |
74 | + if(n > 2) | |
75 | + { | |
76 | + return fib(n-1) + fib(n-2); | |
77 | + } | |
78 | + return 1; | |
79 | +} | |
80 | + | |
81 | // Frobs foo heartily | |
82 | int frobnitz(int foo) | |
83 | { | |
84 | int i; | |
85 | for(i = 0; i < 10; i++) | |
86 | { | |
87 | - printf("Your answer is: "); | |
88 | printf("%d\n", foo); | |
89 | } | |
90 | } | |
91 | ||
92 | -int fact(int n) | |
93 | -{ | |
94 | - if(n > 1) | |
95 | - { | |
96 | - return fact(n-1) * n; | |
97 | - } | |
98 | - return 1; | |
99 | -} | |
100 | - | |
101 | int main(int argc, char **argv) | |
102 | { | |
103 | - frobnitz(fact(10)); | |
104 | + frobnitz(fib(10)); | |
105 | } | |
106 | EOF | |
107 | ||
108 | test_expect_success 'patience diff' ' | |
109 | ||
110 | test_must_fail git diff --no-index --patience file1 file2 > output && | |
111 | test_cmp expect output | |
112 | ||
113 | ' | |
114 | ||
115 | test_expect_success 'patience diff output is valid' ' | |
116 | ||
117 | mv file2 expect && | |
118 | git apply < output && | |
119 | test_cmp expect file2 | |
120 | ||
121 | ' | |
122 | ||
123 | cat >uniq1 <<\EOF | |
124 | 1 | |
125 | 2 | |
126 | 3 | |
127 | 4 | |
128 | 5 | |
129 | 6 | |
130 | EOF | |
131 | ||
132 | cat >uniq2 <<\EOF | |
133 | a | |
134 | b | |
135 | c | |
136 | d | |
137 | e | |
138 | f | |
139 | EOF | |
140 | ||
141 | cat >expect <<\EOF | |
142 | diff --git a/uniq1 b/uniq2 | |
143 | index b414108..0fdf397 100644 | |
144 | --- a/uniq1 | |
145 | +++ b/uniq2 | |
146 | @@ -1,6 +1,6 @@ | |
147 | -1 | |
148 | -2 | |
149 | -3 | |
150 | -4 | |
151 | -5 | |
152 | -6 | |
153 | +a | |
154 | +b | |
155 | +c | |
156 | +d | |
157 | +e | |
158 | +f | |
159 | EOF | |
160 | ||
161 | test_expect_success 'completely different files' ' | |
162 | ||
163 | test_must_fail git diff --no-index --patience uniq1 uniq2 > output && | |
164 | test_cmp expect output | |
165 | ||
166 | ' | |
167 | ||
168 | test_done |