t4033-diff-patience: factor out tests
Group the test cases into two functions, test_diff_(frobnitz|unique). This in preparation for the histogram diff algorithm, which would also re-use these test cases. Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Tay Ray Chuan committed
Jul 7, 2011 at 12:23 UTC
46c8f2988dc9a6012babd5833a6245ceff214483
2 files changed
+168
-159
t/lib-diff-alternative.sh
new
+165
@@ -0,0 +1,165 @@
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
+
t/t4033-diff-patience.sh
+3
-159
@@ -3,166 +3,10 @@
3
test_description='patience diff algorithm'
4
5
. ./test-lib.sh
6
+. "$TEST_DIRECTORY"/lib-diff-alternative.sh
7
7
-cat >file1 <<\EOF
8
-#include <stdio.h>
8
+test_diff_frobnitz "patience"
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
-'
10
+test_diff_unique "patience"
11
12
test_done