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