Merge branch 'nd/gc-lock-against-each-other'
[git] / t / lib-diff-alternative.sh
1 #!/bin/sh
2
3 test_diff_frobnitz() {
4         cat >file1 <<\EOF
5 #include <stdio.h>
6
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 }
17
18 int fact(int n)
19 {
20     if(n > 1)
21     {
22         return fact(n-1) * n;
23     }
24     return 1;
25 }
26
27 int main(int argc, char **argv)
28 {
29     frobnitz(fact(10));
30 }
31 EOF
32
33         cat >file2 <<\EOF
34 #include <stdio.h>
35
36 int fib(int n)
37 {
38     if(n > 2)
39     {
40         return fib(n-1) + fib(n-2);
41     }
42     return 1;
43 }
44
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 }
54
55 int main(int argc, char **argv)
56 {
57     frobnitz(fib(10));
58 }
59 EOF
60
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>
68  
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  }
88  
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
104
105         STRATEGY=$1
106
107         test_expect_success "$STRATEGY diff" '
108                 test_must_fail git diff --no-index "--$STRATEGY" file1 file2 > output &&
109                 test_cmp expect output
110         '
111
112         test_expect_success "$STRATEGY diff output is valid" '
113                 mv file2 expect &&
114                 git apply < output &&
115                 test_cmp expect file2
116         '
117 }
118
119 test_diff_unique() {
120         cat >uniq1 <<\EOF
121 1
122 2
123 3
124 4
125 5
126 6
127 EOF
128
129         cat >uniq2 <<\EOF
130 a
131 b
132 c
133 d
134 e
135 f
136 EOF
137
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
157
158         STRATEGY=$1
159
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 }
165