1# Helpers shared by the test scripts for diff algorithms (patience, 2# histogram, etc). 3 4test_diff_frobnitz() { 5 cat >file1 <<\EOF 6#include <stdio.h> 7 8// Frobs foo heartily 9int frobnitz(int foo) 10{ 11 int i; 12 for(i = 0; i < 10; i++) 13 { 14 printf("Your answer is: "); 15 printf("%d\n", foo); 16 } 17} 18 19int fact(int n) 20{ 21 if(n > 1) 22 { 23 return fact(n-1) * n; 24 } 25 return 1; 26} 27 28int main(int argc, char **argv) 29{ 30 frobnitz(fact(10)); 31} 32EOF 33 34 cat >file2 <<\EOF 35#include <stdio.h> 36 37int fib(int n) 38{ 39 if(n > 2) 40 { 41 return fib(n-1) + fib(n-2); 42 } 43 return 1; 44} 45 46// Frobs foo heartily 47int frobnitz(int foo) 48{ 49 int i; 50 for(i = 0; i < 10; i++) 51 { 52 printf("%d\n", foo); 53 } 54} 55 56int main(int argc, char **argv) 57{ 58 frobnitz(fib(10)); 59} 60EOF 61 62 file1=$(git rev-parse --short $(git hash-object file1)) 63 file2=$(git rev-parse --short $(git hash-object file2)) 64 cat >expect <<EOF 65diff --git a/file1 b/file2 66index $file1..$file2 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 } 106EOF 107 108 STRATEGY=$1 109 110 test_expect_success "$STRATEGY diff" ' 111 test_must_fail git diff --no-index "--$STRATEGY" file1 file2 > output && 112 test_cmp expect output 113 ' 114 115 test_expect_success "$STRATEGY diff output is valid" ' 116 mv file2 expect && 117 git apply < output && 118 test_cmp expect file2 119 ' 120} 121 122test_diff_unique() { 123 cat >uniq1 <<\EOF 1241 1252 1263 1274 1285 1296 130EOF 131 132 cat >uniq2 <<\EOF 133a 134b 135c 136d 137e 138f 139EOF 140 141 uniq1=$(git rev-parse --short $(git hash-object uniq1)) 142 uniq2=$(git rev-parse --short $(git hash-object uniq2)) 143 cat >expect <<EOF 144diff --git a/uniq1 b/uniq2 145index $uniq1..$uniq2 100644 146--- a/uniq1 147+++ b/uniq2 148@@ -1,6 +1,6 @@ 149-1 150-2 151-3 152-4 153-5 154-6 155+a 156+b 157+c 158+d 159+e 160+f 161EOF 162 163 STRATEGY=$1 164 165 test_expect_success 'completely different files' ' 166 test_must_fail git diff --no-index "--$STRATEGY" uniq1 uniq2 > output && 167 test_cmp expect output 168 ' 169} 170 171