 d492b31caf
			
		
	
	d492b31caf
	
	
	
		
			
			This patch changes every occurrence of "! git" -- with the meaning that a git call has to gracefully fail -- into "test_must_fail git". This is useful to - make sure the test does not fail because of a signal, e.g. SIGSEGV, and - advertise the use of "test_must_fail" for new tests. Signed-off-by: Stephan Beyer <s-beyer@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # Copyright (c) 2008 Johannes Schindelin
 | |
| #
 | |
| 
 | |
| test_description='Test rebasing and stashing with dirty submodules'
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| test_expect_success setup '
 | |
| 
 | |
| 	echo file > file &&
 | |
| 	git add file &&
 | |
| 	test_tick &&
 | |
| 	git commit -m initial &&
 | |
| 	git clone . submodule &&
 | |
| 	git add submodule &&
 | |
| 	test_tick &&
 | |
| 	git commit -m submodule &&
 | |
| 	echo second line >> file &&
 | |
| 	(cd submodule && git pull) &&
 | |
| 	test_tick &&
 | |
| 	git commit -m file-and-submodule -a
 | |
| 
 | |
| '
 | |
| 
 | |
| test_expect_success 'rebase with a dirty submodule' '
 | |
| 
 | |
| 	(cd submodule &&
 | |
| 	 echo 3rd line >> file &&
 | |
| 	 test_tick &&
 | |
| 	 git commit -m fork -a) &&
 | |
| 	echo unrelated >> file2 &&
 | |
| 	git add file2 &&
 | |
| 	test_tick &&
 | |
| 	git commit -m unrelated file2 &&
 | |
| 	echo other line >> file &&
 | |
| 	test_tick &&
 | |
| 	git commit -m update file &&
 | |
| 	CURRENT=$(cd submodule && git rev-parse HEAD) &&
 | |
| 	EXPECTED=$(git rev-parse HEAD~2:submodule) &&
 | |
| 	GIT_TRACE=1 git rebase --onto HEAD~2 HEAD^ &&
 | |
| 	STORED=$(git rev-parse HEAD:submodule) &&
 | |
| 	test $EXPECTED = $STORED &&
 | |
| 	test $CURRENT = $(cd submodule && git rev-parse HEAD)
 | |
| 
 | |
| '
 | |
| 
 | |
| cat > fake-editor.sh << \EOF
 | |
| #!/bin/sh
 | |
| echo $EDITOR_TEXT
 | |
| EOF
 | |
| chmod a+x fake-editor.sh
 | |
| 
 | |
| test_expect_success 'interactive rebase with a dirty submodule' '
 | |
| 
 | |
| 	test submodule = $(git diff --name-only) &&
 | |
| 	HEAD=$(git rev-parse HEAD) &&
 | |
| 	GIT_EDITOR="\"$(pwd)/fake-editor.sh\"" EDITOR_TEXT="pick $HEAD" \
 | |
| 		git rebase -i HEAD^ &&
 | |
| 	test submodule = $(git diff --name-only)
 | |
| 
 | |
| '
 | |
| 
 | |
| test_expect_success 'rebase with dirty file and submodule fails' '
 | |
| 
 | |
| 	echo yet another line >> file &&
 | |
| 	test_tick &&
 | |
| 	git commit -m next file &&
 | |
| 	echo rewrite > file &&
 | |
| 	test_tick &&
 | |
| 	git commit -m rewrite file &&
 | |
| 	echo dirty > file &&
 | |
| 	test_must_fail git rebase --onto HEAD~2 HEAD^
 | |
| 
 | |
| '
 | |
| 
 | |
| test_expect_success 'stash with a dirty submodule' '
 | |
| 
 | |
| 	echo new > file &&
 | |
| 	CURRENT=$(cd submodule && git rev-parse HEAD) &&
 | |
| 	git stash &&
 | |
| 	test new != $(cat file) &&
 | |
| 	test submodule = $(git diff --name-only) &&
 | |
| 	test $CURRENT = $(cd submodule && git rev-parse HEAD) &&
 | |
| 	git stash apply &&
 | |
| 	test new = $(cat file) &&
 | |
| 	test $CURRENT = $(cd submodule && git rev-parse HEAD)
 | |
| 
 | |
| '
 | |
| 
 | |
| test_done
 |