167 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
| # 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
 | |
| 
 | |
| 	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
 | |
| 	'
 | |
| }
 | |
| 
 |