73 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
# Based on a test case submitted by Björn Steinbrink.
 | 
						|
 | 
						|
test_description='git blame on conflicted files'
 | 
						|
. ./test-lib.sh
 | 
						|
 | 
						|
test_expect_success 'setup first case' '
 | 
						|
	# Create the old file
 | 
						|
	echo "Old line" > file1 &&
 | 
						|
	git add file1 &&
 | 
						|
	git commit --author "Old Line <ol@localhost>" -m file1.a &&
 | 
						|
 | 
						|
	# Branch
 | 
						|
	git checkout -b foo &&
 | 
						|
 | 
						|
	# Do an ugly move and change
 | 
						|
	git rm file1 &&
 | 
						|
	echo "New line ..."  > file2 &&
 | 
						|
	echo "... and more" >> file2 &&
 | 
						|
	git add file2 &&
 | 
						|
	git commit --author "U Gly <ug@localhost>" -m ugly &&
 | 
						|
 | 
						|
	# Back to master and change something
 | 
						|
	git checkout master &&
 | 
						|
	echo "
 | 
						|
 | 
						|
bla" >> file1 &&
 | 
						|
	git commit --author "Old Line <ol@localhost>" -a -m file1.b &&
 | 
						|
 | 
						|
	# Back to foo and merge master
 | 
						|
	git checkout foo &&
 | 
						|
	if git merge master; then
 | 
						|
		echo needed conflict here
 | 
						|
		exit 1
 | 
						|
	else
 | 
						|
		echo merge failed - resolving automatically
 | 
						|
	fi &&
 | 
						|
	echo "New line ...
 | 
						|
... and more
 | 
						|
 | 
						|
bla
 | 
						|
Even more" > file2 &&
 | 
						|
	git rm file1 &&
 | 
						|
	git commit --author "M Result <mr@localhost>" -a -m merged &&
 | 
						|
 | 
						|
	# Back to master and change file1 again
 | 
						|
	git checkout master &&
 | 
						|
	sed s/bla/foo/ <file1 >X &&
 | 
						|
	rm file1 &&
 | 
						|
	mv X file1 &&
 | 
						|
	git commit --author "No Bla <nb@localhost>" -a -m replace &&
 | 
						|
 | 
						|
	# Try to merge into foo again
 | 
						|
	git checkout foo &&
 | 
						|
	if git merge master; then
 | 
						|
		echo needed conflict here
 | 
						|
		exit 1
 | 
						|
	else
 | 
						|
		echo merge failed - test is setup
 | 
						|
	fi
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success \
 | 
						|
	'blame runs on unconflicted file while other file has conflicts' '
 | 
						|
	git blame file2
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'blame does not crash with conflicted file in stages 1,3' '
 | 
						|
	git blame file1
 | 
						|
'
 | 
						|
 | 
						|
test_done
 |