|  | #!/bin/sh | 
|  | # | 
|  | # Copyright (c) 2005 Junio C Hamano | 
|  | # Copyright (c) 2005 Robert Fitzsimons | 
|  | # | 
|  |  | 
|  | test_description='git-apply test patches with multiple fragments. | 
|  |  | 
|  | ' | 
|  | . ./test-lib.sh | 
|  |  | 
|  | # setup | 
|  |  | 
|  | cat > patch1.patch <<\EOF | 
|  | diff --git a/main.c b/main.c | 
|  | new file mode 100644 | 
|  | --- /dev/null | 
|  | +++ b/main.c | 
|  | @@ -0,0 +1,23 @@ | 
|  | +#include <stdio.h> | 
|  | + | 
|  | +int func(int num); | 
|  | +void print_int(int num); | 
|  | + | 
|  | +int main() { | 
|  | +	int i; | 
|  | + | 
|  | +	for (i = 0; i < 10; i++) { | 
|  | +		print_int(func(i)); | 
|  | +	} | 
|  | + | 
|  | +	return 0; | 
|  | +} | 
|  | + | 
|  | +int func(int num) { | 
|  | +	return num * num; | 
|  | +} | 
|  | + | 
|  | +void print_int(int num) { | 
|  | +	printf("%d", num); | 
|  | +} | 
|  | + | 
|  | EOF | 
|  | cat > patch2.patch <<\EOF | 
|  | diff --git a/main.c b/main.c | 
|  | --- a/main.c | 
|  | +++ b/main.c | 
|  | @@ -1,7 +1,9 @@ | 
|  | +#include <stdlib.h> | 
|  | #include <stdio.h> | 
|  |  | 
|  | int func(int num); | 
|  | void print_int(int num); | 
|  | +void print_ln(); | 
|  |  | 
|  | int main() { | 
|  | int i; | 
|  | @@ -10,6 +12,8 @@ | 
|  | print_int(func(i)); | 
|  | } | 
|  |  | 
|  | +	print_ln(); | 
|  | + | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | @@ -21,3 +25,7 @@ | 
|  | printf("%d", num); | 
|  | } | 
|  |  | 
|  | +void print_ln() { | 
|  | +	printf("\n"); | 
|  | +} | 
|  | + | 
|  | EOF | 
|  | cat > patch3.patch <<\EOF | 
|  | diff --git a/main.c b/main.c | 
|  | --- a/main.c | 
|  | +++ b/main.c | 
|  | @@ -1,9 +1,7 @@ | 
|  | -#include <stdlib.h> | 
|  | #include <stdio.h> | 
|  |  | 
|  | int func(int num); | 
|  | void print_int(int num); | 
|  | -void print_ln(); | 
|  |  | 
|  | int main() { | 
|  | int i; | 
|  | @@ -12,8 +10,6 @@ | 
|  | print_int(func(i)); | 
|  | } | 
|  |  | 
|  | -	print_ln(); | 
|  | - | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | @@ -25,7 +21,3 @@ | 
|  | printf("%d", num); | 
|  | } | 
|  |  | 
|  | -void print_ln() { | 
|  | -	printf("\n"); | 
|  | -} | 
|  | - | 
|  | EOF | 
|  | cat > patch4.patch <<\EOF | 
|  | diff --git a/main.c b/main.c | 
|  | --- a/main.c | 
|  | +++ b/main.c | 
|  | @@ -1,13 +1,14 @@ | 
|  | #include <stdio.h> | 
|  |  | 
|  | int func(int num); | 
|  | -void print_int(int num); | 
|  | +int func2(int num); | 
|  |  | 
|  | int main() { | 
|  | int i; | 
|  |  | 
|  | for (i = 0; i < 10; i++) { | 
|  | -		print_int(func(i)); | 
|  | +		printf("%d", func(i)); | 
|  | +		printf("%d", func3(i)); | 
|  | } | 
|  |  | 
|  | return 0; | 
|  | @@ -17,7 +18,7 @@ | 
|  | return num * num; | 
|  | } | 
|  |  | 
|  | -void print_int(int num) { | 
|  | -	printf("%d", num); | 
|  | +int func2(int num) { | 
|  | +	return num * num * num; | 
|  | } | 
|  |  | 
|  | EOF | 
|  |  | 
|  | test_expect_success "S = git-apply (1)" \ | 
|  | 'git-apply patch1.patch patch2.patch' | 
|  | mv main.c main.c.git | 
|  |  | 
|  | test_expect_success "S = patch (1)" \ | 
|  | 'cat patch1.patch patch2.patch | patch -p1' | 
|  |  | 
|  | test_expect_success "S = cmp (1)" \ | 
|  | 'cmp main.c.git main.c' | 
|  |  | 
|  | rm -f main.c main.c.git | 
|  |  | 
|  | test_expect_success "S = git-apply (2)" \ | 
|  | 'git-apply patch1.patch patch2.patch patch3.patch' | 
|  | mv main.c main.c.git | 
|  |  | 
|  | test_expect_success "S = patch (2)" \ | 
|  | 'cat patch1.patch patch2.patch patch3.patch | patch -p1' | 
|  |  | 
|  | test_expect_success "S = cmp (2)" \ | 
|  | 'cmp main.c.git main.c' | 
|  |  | 
|  | rm -f main.c main.c.git | 
|  |  | 
|  | test_expect_success "S = git-apply (3)" \ | 
|  | 'git-apply patch1.patch patch4.patch' | 
|  | mv main.c main.c.git | 
|  |  | 
|  | test_expect_success "S = patch (3)" \ | 
|  | 'cat patch1.patch patch4.patch | patch -p1' | 
|  |  | 
|  | test_expect_success "S = cmp (3)" \ | 
|  | 'cmp main.c.git main.c' | 
|  |  | 
|  | test_done | 
|  |  |