# Helpers shared by the test scripts for diff algorithms (patience, # histogram, etc). test_diff_frobnitz() { cat >file1 <<\EOF #include // 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 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 file1=$(git rev-parse --short $(git hash-object file1)) file2=$(git rev-parse --short $(git hash-object file2)) cat >expect < +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 uniq1=$(git rev-parse --short $(git hash-object uniq1)) uniq2=$(git rev-parse --short $(git hash-object uniq2)) cat >expect < output && test_cmp expect output ' }