# Helpers shared by the test scripts for diff algorithms (patience, # histogram, etc). 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 file1=$(git rev-parse --short $(git hash-object file1)) file2=$(git rev-parse --short $(git hash-object file2)) cat >expect <<EOF diff --git a/file1 b/file2 index $file1..$file2 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 uniq1=$(git rev-parse --short $(git hash-object uniq1)) uniq2=$(git rev-parse --short $(git hash-object uniq2)) cat >expect <<EOF diff --git a/uniq1 b/uniq2 index $uniq1..$uniq2 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 ' }