| #!/bin/sh | 
 |  | 
 | test_description='am --abort' | 
 |  | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success setup ' | 
 | 	for i in a b c d e f g | 
 | 	do | 
 | 		echo $i | 
 | 	done >file-1 && | 
 | 	cp file-1 file-2 && | 
 | 	test_tick && | 
 | 	git add file-1 file-2 && | 
 | 	git commit -m initial && | 
 | 	git tag initial && | 
 | 	for i in 2 3 4 5 6 | 
 | 	do | 
 | 		echo $i >>file-1 && | 
 | 		echo $i >otherfile-$i && | 
 | 		git add otherfile-$i && | 
 | 		test_tick && | 
 | 		git commit -a -m $i || break | 
 | 	done && | 
 | 	git format-patch --no-numbered initial && | 
 | 	git checkout -b side initial && | 
 | 	echo local change >file-2-expect | 
 | ' | 
 |  | 
 | for with3 in '' ' -3' | 
 | do | 
 | 	test_expect_success "am$with3 stops at a patch that does not apply" ' | 
 |  | 
 | 		git reset --hard initial && | 
 | 		cp file-2-expect file-2 && | 
 |  | 
 | 		test_must_fail git am$with3 000[1245]-*.patch && | 
 | 		git log --pretty=tformat:%s >actual && | 
 | 		for i in 3 2 initial | 
 | 		do | 
 | 			echo $i | 
 | 		done >expect && | 
 | 		test_cmp expect actual | 
 | 	' | 
 |  | 
 | 	test_expect_success "am$with3 --skip continue after failed am$with3" ' | 
 | 		test_must_fail git am$with3 --skip >output && | 
 | 		test "$(grep "^Applying" output)" = "Applying: 6" && | 
 | 		test_cmp file-2-expect file-2 && | 
 | 		test ! -f .git/MERGE_RR | 
 | 	' | 
 |  | 
 | 	test_expect_success "am --abort goes back after failed am$with3" ' | 
 | 		git am --abort && | 
 | 		git rev-parse HEAD >actual && | 
 | 		git rev-parse initial >expect && | 
 | 		test_cmp expect actual && | 
 | 		test_cmp file-2-expect file-2 && | 
 | 		git diff-index --exit-code --cached HEAD && | 
 | 		test ! -f .git/MERGE_RR | 
 | 	' | 
 |  | 
 | done | 
 |  | 
 | test_expect_success 'am --abort will keep the local commits intact' ' | 
 | 	test_must_fail git am 0004-*.patch && | 
 | 	test_commit unrelated && | 
 | 	git rev-parse HEAD >expect && | 
 | 	git am --abort && | 
 | 	git rev-parse HEAD >actual && | 
 | 	test_cmp expect actual | 
 | ' | 
 |  | 
 | test_done |