33 lines
		
	
	
		
			1000 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			33 lines
		
	
	
		
			1000 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| 
 | |
| test_description="Test that merge state is as expected after failed merge"
 | |
| 
 | |
| GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 | |
| export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 | |
| . ./test-lib.sh
 | |
| 
 | |
| test_expect_success 'Ensure we restore original state if no merge strategy handles it' '
 | |
| 	test_commit --no-tag "Initial" base base &&
 | |
| 
 | |
| 	for b in branch1 branch2 branch3
 | |
| 	do
 | |
| 		git checkout -b $b main &&
 | |
| 		test_commit --no-tag "Change on $b" base $b || return 1
 | |
| 	done &&
 | |
| 
 | |
| 	git checkout branch1 &&
 | |
| 	# This is a merge that octopus cannot handle.  Note, that it does not
 | |
| 	# just hit conflicts, it completely fails and says that it cannot
 | |
| 	# handle this type of merge.
 | |
| 	test_expect_code 2 git merge branch2 branch3 >output 2>&1 &&
 | |
| 	grep "fatal: merge program failed" output &&
 | |
| 	grep "Should not be doing an octopus" output &&
 | |
| 
 | |
| 	# Make sure we did not leave stray changes around when no appropriate
 | |
| 	# merge strategy was found
 | |
| 	git diff --exit-code --name-status &&
 | |
| 	test_path_is_missing .git/MERGE_HEAD
 | |
| '
 | |
| 
 | |
| test_done
 |