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>
This commit is contained in:
parent
1d26b252f1
commit
46c8f2988d
165
t/lib-diff-alternative.sh
Normal file
165
t/lib-diff-alternative.sh
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_diff_frobnitz() {
|
||||||
|
cat >file1 <<\EOF
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
// Frobs foo heartily
|
||||||
|
int frobnitz(int foo)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
printf("Your answer is: ");
|
||||||
|
printf("%d\n", foo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int fact(int n)
|
||||||
|
{
|
||||||
|
if(n > 1)
|
||||||
|
{
|
||||||
|
return fact(n-1) * n;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
frobnitz(fact(10));
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >file2 <<\EOF
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int fib(int n)
|
||||||
|
{
|
||||||
|
if(n > 2)
|
||||||
|
{
|
||||||
|
return fib(n-1) + fib(n-2);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Frobs foo heartily
|
||||||
|
int frobnitz(int foo)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
printf("%d\n", foo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
frobnitz(fib(10));
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >expect <<\EOF
|
||||||
|
diff --git a/file1 b/file2
|
||||||
|
index 6faa5a3..e3af329 100644
|
||||||
|
--- a/file1
|
||||||
|
+++ b/file2
|
||||||
|
@@ -1,26 +1,25 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
+int fib(int n)
|
||||||
|
+{
|
||||||
|
+ if(n > 2)
|
||||||
|
+ {
|
||||||
|
+ return fib(n-1) + fib(n-2);
|
||||||
|
+ }
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// Frobs foo heartily
|
||||||
|
int frobnitz(int foo)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
- printf("Your answer is: ");
|
||||||
|
printf("%d\n", foo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-int fact(int n)
|
||||||
|
-{
|
||||||
|
- if(n > 1)
|
||||||
|
- {
|
||||||
|
- return fact(n-1) * n;
|
||||||
|
- }
|
||||||
|
- return 1;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
- frobnitz(fact(10));
|
||||||
|
+ frobnitz(fib(10));
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
STRATEGY=$1
|
||||||
|
|
||||||
|
test_expect_success "$STRATEGY diff" '
|
||||||
|
test_must_fail git diff --no-index "--$STRATEGY" file1 file2 > output &&
|
||||||
|
test_cmp expect output
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success "$STRATEGY diff output is valid" '
|
||||||
|
mv file2 expect &&
|
||||||
|
git apply < output &&
|
||||||
|
test_cmp expect file2
|
||||||
|
'
|
||||||
|
}
|
||||||
|
|
||||||
|
test_diff_unique() {
|
||||||
|
cat >uniq1 <<\EOF
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >uniq2 <<\EOF
|
||||||
|
a
|
||||||
|
b
|
||||||
|
c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
f
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >expect <<\EOF
|
||||||
|
diff --git a/uniq1 b/uniq2
|
||||||
|
index b414108..0fdf397 100644
|
||||||
|
--- a/uniq1
|
||||||
|
+++ b/uniq2
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
-1
|
||||||
|
-2
|
||||||
|
-3
|
||||||
|
-4
|
||||||
|
-5
|
||||||
|
-6
|
||||||
|
+a
|
||||||
|
+b
|
||||||
|
+c
|
||||||
|
+d
|
||||||
|
+e
|
||||||
|
+f
|
||||||
|
EOF
|
||||||
|
|
||||||
|
STRATEGY=$1
|
||||||
|
|
||||||
|
test_expect_success 'completely different files' '
|
||||||
|
test_must_fail git diff --no-index "--$STRATEGY" uniq1 uniq2 > output &&
|
||||||
|
test_cmp expect output
|
||||||
|
'
|
||||||
|
}
|
||||||
|
|
@ -3,166 +3,10 @@
|
|||||||
test_description='patience diff algorithm'
|
test_description='patience diff algorithm'
|
||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
. "$TEST_DIRECTORY"/lib-diff-alternative.sh
|
||||||
|
|
||||||
cat >file1 <<\EOF
|
test_diff_frobnitz "patience"
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
// Frobs foo heartily
|
test_diff_unique "patience"
|
||||||
int frobnitz(int foo)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for(i = 0; i < 10; i++)
|
|
||||||
{
|
|
||||||
printf("Your answer is: ");
|
|
||||||
printf("%d\n", foo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int fact(int n)
|
|
||||||
{
|
|
||||||
if(n > 1)
|
|
||||||
{
|
|
||||||
return fact(n-1) * n;
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
frobnitz(fact(10));
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat >file2 <<\EOF
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
int fib(int n)
|
|
||||||
{
|
|
||||||
if(n > 2)
|
|
||||||
{
|
|
||||||
return fib(n-1) + fib(n-2);
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Frobs foo heartily
|
|
||||||
int frobnitz(int foo)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for(i = 0; i < 10; i++)
|
|
||||||
{
|
|
||||||
printf("%d\n", foo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
frobnitz(fib(10));
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat >expect <<\EOF
|
|
||||||
diff --git a/file1 b/file2
|
|
||||||
index 6faa5a3..e3af329 100644
|
|
||||||
--- a/file1
|
|
||||||
+++ b/file2
|
|
||||||
@@ -1,26 +1,25 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
+int fib(int n)
|
|
||||||
+{
|
|
||||||
+ if(n > 2)
|
|
||||||
+ {
|
|
||||||
+ return fib(n-1) + fib(n-2);
|
|
||||||
+ }
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
// Frobs foo heartily
|
|
||||||
int frobnitz(int foo)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for(i = 0; i < 10; i++)
|
|
||||||
{
|
|
||||||
- printf("Your answer is: ");
|
|
||||||
printf("%d\n", foo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-int fact(int n)
|
|
||||||
-{
|
|
||||||
- if(n > 1)
|
|
||||||
- {
|
|
||||||
- return fact(n-1) * n;
|
|
||||||
- }
|
|
||||||
- return 1;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
- frobnitz(fact(10));
|
|
||||||
+ frobnitz(fib(10));
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
test_expect_success 'patience diff' '
|
|
||||||
|
|
||||||
test_must_fail git diff --no-index --patience file1 file2 > output &&
|
|
||||||
test_cmp expect output
|
|
||||||
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'patience diff output is valid' '
|
|
||||||
|
|
||||||
mv file2 expect &&
|
|
||||||
git apply < output &&
|
|
||||||
test_cmp expect file2
|
|
||||||
|
|
||||||
'
|
|
||||||
|
|
||||||
cat >uniq1 <<\EOF
|
|
||||||
1
|
|
||||||
2
|
|
||||||
3
|
|
||||||
4
|
|
||||||
5
|
|
||||||
6
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat >uniq2 <<\EOF
|
|
||||||
a
|
|
||||||
b
|
|
||||||
c
|
|
||||||
d
|
|
||||||
e
|
|
||||||
f
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat >expect <<\EOF
|
|
||||||
diff --git a/uniq1 b/uniq2
|
|
||||||
index b414108..0fdf397 100644
|
|
||||||
--- a/uniq1
|
|
||||||
+++ b/uniq2
|
|
||||||
@@ -1,6 +1,6 @@
|
|
||||||
-1
|
|
||||||
-2
|
|
||||||
-3
|
|
||||||
-4
|
|
||||||
-5
|
|
||||||
-6
|
|
||||||
+a
|
|
||||||
+b
|
|
||||||
+c
|
|
||||||
+d
|
|
||||||
+e
|
|
||||||
+f
|
|
||||||
EOF
|
|
||||||
|
|
||||||
test_expect_success 'completely different files' '
|
|
||||||
|
|
||||||
test_must_fail git diff --no-index --patience uniq1 uniq2 > output &&
|
|
||||||
test_cmp expect output
|
|
||||||
|
|
||||||
'
|
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user