Add tests for git push'es mirror mode
Add some tests for git push --mirror mode. Signed-off-by: Andy Whitcroft <apw@shadowen.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									94c89ba662
								
							
						
					
					
						commit
						8e806adb65
					
				|  | @ -0,0 +1,228 @@ | |||
| #!/bin/sh | ||||
|  | ||||
| test_description='pushing to a mirror repository' | ||||
|  | ||||
| . ./test-lib.sh | ||||
|  | ||||
| D=`pwd` | ||||
|  | ||||
| invert () { | ||||
| 	if "$@"; then | ||||
| 		return 1 | ||||
| 	else | ||||
| 		return 0 | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| mk_repo_pair () { | ||||
| 	rm -rf master mirror && | ||||
| 	mkdir mirror && | ||||
| 	( | ||||
| 		cd mirror && | ||||
| 		git init | ||||
| 	) && | ||||
| 	mkdir master && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		git init && | ||||
| 		git config remote.up.url ../mirror | ||||
| 	) | ||||
| } | ||||
|  | ||||
|  | ||||
| # BRANCH tests | ||||
| test_expect_success 'push mirror creates new branches' ' | ||||
|  | ||||
| 	mk_repo_pair && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		echo one >foo && git add foo && git commit -m one && | ||||
| 		git push --mirror up | ||||
| 	) && | ||||
| 	master_master=$(cd master && git show-ref -s --verify refs/heads/master) && | ||||
| 	mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) && | ||||
| 	test "$master_master" = "$mirror_master" | ||||
|  | ||||
| ' | ||||
|  | ||||
| test_expect_success 'push mirror updates existing branches' ' | ||||
|  | ||||
| 	mk_repo_pair && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		echo one >foo && git add foo && git commit -m one && | ||||
| 		git push --mirror up && | ||||
| 		echo two >foo && git add foo && git commit -m two && | ||||
| 		git push --mirror up | ||||
| 	) && | ||||
| 	master_master=$(cd master && git show-ref -s --verify refs/heads/master) && | ||||
| 	mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) && | ||||
| 	test "$master_master" = "$mirror_master" | ||||
|  | ||||
| ' | ||||
|  | ||||
| test_expect_success 'push mirror force updates existing branches' ' | ||||
|  | ||||
| 	mk_repo_pair && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		echo one >foo && git add foo && git commit -m one && | ||||
| 		git push --mirror up && | ||||
| 		echo two >foo && git add foo && git commit -m two && | ||||
| 		git push --mirror up && | ||||
| 		git reset --hard HEAD^ | ||||
| 		git push --mirror up | ||||
| 	) && | ||||
| 	master_master=$(cd master && git show-ref -s --verify refs/heads/master) && | ||||
| 	mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) && | ||||
| 	test "$master_master" = "$mirror_master" | ||||
|  | ||||
| ' | ||||
|  | ||||
| test_expect_success 'push mirror removes branches' ' | ||||
|  | ||||
| 	mk_repo_pair && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		echo one >foo && git add foo && git commit -m one && | ||||
| 		git branch remove master && | ||||
| 		git push --mirror up && | ||||
| 		git branch -D remove | ||||
| 		git push --mirror up | ||||
| 	) && | ||||
| 	( | ||||
| 		cd mirror && | ||||
| 		invert git show-ref -s --verify refs/heads/remove | ||||
| 	) | ||||
|  | ||||
| ' | ||||
|  | ||||
| test_expect_success 'push mirror adds, updates and removes branches together' ' | ||||
|  | ||||
| 	mk_repo_pair && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		echo one >foo && git add foo && git commit -m one && | ||||
| 		git branch remove master && | ||||
| 		git push --mirror up && | ||||
| 		git branch -D remove && | ||||
| 		git branch add master && | ||||
| 		echo two >foo && git add foo && git commit -m two && | ||||
| 		git push --mirror up | ||||
| 	) && | ||||
| 	master_master=$(cd master && git show-ref -s --verify refs/heads/master) && | ||||
| 	master_add=$(cd master && git show-ref -s --verify refs/heads/add) && | ||||
| 	mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) && | ||||
| 	mirror_add=$(cd mirror && git show-ref -s --verify refs/heads/add) && | ||||
| 	test "$master_master" = "$mirror_master" && | ||||
| 	test "$master_add" = "$mirror_add" && | ||||
| 	( | ||||
| 		cd mirror && | ||||
| 		invert git show-ref -s --verify refs/heads/remove | ||||
| 	) | ||||
|  | ||||
| ' | ||||
|  | ||||
|  | ||||
| # TAG tests | ||||
| test_expect_success 'push mirror creates new tags' ' | ||||
|  | ||||
| 	mk_repo_pair && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		echo one >foo && git add foo && git commit -m one && | ||||
| 		git tag -f tmaster master && | ||||
| 		git push --mirror up | ||||
| 	) && | ||||
| 	master_master=$(cd master && git show-ref -s --verify refs/tags/tmaster) && | ||||
| 	mirror_master=$(cd mirror && git show-ref -s --verify refs/tags/tmaster) && | ||||
| 	test "$master_master" = "$mirror_master" | ||||
|  | ||||
| ' | ||||
|  | ||||
| test_expect_success 'push mirror updates existing tags' ' | ||||
|  | ||||
| 	mk_repo_pair && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		echo one >foo && git add foo && git commit -m one && | ||||
| 		git tag -f tmaster master && | ||||
| 		git push --mirror up && | ||||
| 		echo two >foo && git add foo && git commit -m two && | ||||
| 		git tag -f tmaster master && | ||||
| 		git push --mirror up | ||||
| 	) && | ||||
| 	master_master=$(cd master && git show-ref -s --verify refs/tags/tmaster) && | ||||
| 	mirror_master=$(cd mirror && git show-ref -s --verify refs/tags/tmaster) && | ||||
| 	test "$master_master" = "$mirror_master" | ||||
|  | ||||
| ' | ||||
|  | ||||
| test_expect_success 'push mirror force updates existing tags' ' | ||||
|  | ||||
| 	mk_repo_pair && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		echo one >foo && git add foo && git commit -m one && | ||||
| 		git tag -f tmaster master && | ||||
| 		git push --mirror up && | ||||
| 		echo two >foo && git add foo && git commit -m two && | ||||
| 		git tag -f tmaster master && | ||||
| 		git push --mirror up && | ||||
| 		git reset --hard HEAD^ | ||||
| 		git tag -f tmaster master && | ||||
| 		git push --mirror up | ||||
| 	) && | ||||
| 	master_master=$(cd master && git show-ref -s --verify refs/tags/tmaster) && | ||||
| 	mirror_master=$(cd mirror && git show-ref -s --verify refs/tags/tmaster) && | ||||
| 	test "$master_master" = "$mirror_master" | ||||
|  | ||||
| ' | ||||
|  | ||||
| test_expect_success 'push mirror removes tags' ' | ||||
|  | ||||
| 	mk_repo_pair && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		echo one >foo && git add foo && git commit -m one && | ||||
| 		git tag -f tremove master && | ||||
| 		git push --mirror up && | ||||
| 		git tag -d tremove | ||||
| 		git push --mirror up | ||||
| 	) && | ||||
| 	( | ||||
| 		cd mirror && | ||||
| 		invert git show-ref -s --verify refs/tags/tremove | ||||
| 	) | ||||
|  | ||||
| ' | ||||
|  | ||||
| test_expect_success 'push mirror adds, updates and removes tags together' ' | ||||
|  | ||||
| 	mk_repo_pair && | ||||
| 	( | ||||
| 		cd master && | ||||
| 		echo one >foo && git add foo && git commit -m one && | ||||
| 		git tag -f tmaster master && | ||||
| 		git tag -f tremove master && | ||||
| 		git push --mirror up && | ||||
| 		git tag -d tremove && | ||||
| 		git tag tadd master && | ||||
| 		echo two >foo && git add foo && git commit -m two && | ||||
| 		git tag -f tmaster master && | ||||
| 		git push --mirror up | ||||
| 	) && | ||||
| 	master_master=$(cd master && git show-ref -s --verify refs/tags/tmaster) && | ||||
| 	master_add=$(cd master && git show-ref -s --verify refs/tags/tadd) && | ||||
| 	mirror_master=$(cd mirror && git show-ref -s --verify refs/tags/tmaster) && | ||||
| 	mirror_add=$(cd mirror && git show-ref -s --verify refs/tags/tadd) && | ||||
| 	test "$master_master" = "$mirror_master" && | ||||
| 	test "$master_add" = "$mirror_add" && | ||||
| 	( | ||||
| 		cd mirror && | ||||
| 		invert git show-ref -s --verify refs/tags/tremove | ||||
| 	) | ||||
|  | ||||
| ' | ||||
|  | ||||
| test_done | ||||
		Loading…
	
		Reference in New Issue
	
	 Andy Whitcroft
						Andy Whitcroft