110 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| 
 | |
| test_description='rebase topology tests with merges'
 | |
| . ./test-lib.sh
 | |
| . "$TEST_DIRECTORY"/lib-rebase.sh
 | |
| 
 | |
| test_revision_subjects () {
 | |
| 	expected="$1"
 | |
| 	shift
 | |
| 	set -- $(git log --format=%s --no-walk=unsorted "$@")
 | |
| 	test "$expected" = "$*"
 | |
| }
 | |
| 
 | |
| # a---b-----------c
 | |
| #      \           \
 | |
| #       d-------e   \
 | |
| #        \       \   \
 | |
| #         n---o---w---v
 | |
| #              \
 | |
| #               z
 | |
| test_expect_success 'setup of non-linear-history' '
 | |
| 	test_commit a &&
 | |
| 	test_commit b &&
 | |
| 	test_commit c &&
 | |
| 	git checkout b &&
 | |
| 	test_commit d &&
 | |
| 	test_commit e &&
 | |
| 
 | |
| 	git checkout c &&
 | |
| 	test_commit g &&
 | |
| 	revert h g &&
 | |
| 	git checkout d &&
 | |
| 	cherry_pick gp g &&
 | |
| 	test_commit i &&
 | |
| 	git checkout b &&
 | |
| 	test_commit f &&
 | |
| 
 | |
| 	git checkout d &&
 | |
| 	test_commit n &&
 | |
| 	test_commit o &&
 | |
| 	test_merge w e &&
 | |
| 	test_merge v c &&
 | |
| 	git checkout o &&
 | |
| 	test_commit z
 | |
| '
 | |
| 
 | |
| test_run_rebase () {
 | |
| 	result=$1
 | |
| 	shift
 | |
| 	test_expect_$result "rebase $* after merge from upstream" "
 | |
| 		reset_rebase &&
 | |
| 		git rebase $* e w &&
 | |
| 		test_cmp_rev e HEAD~2 &&
 | |
| 		test_linear_range 'n o' e..
 | |
| 	"
 | |
| }
 | |
| test_run_rebase success --apply
 | |
| test_run_rebase success -m
 | |
| test_run_rebase success -i
 | |
| 
 | |
| test_run_rebase () {
 | |
| 	result=$1
 | |
| 	shift
 | |
| 	expected=$1
 | |
| 	shift
 | |
| 	test_expect_$result "rebase $* of non-linear history is linearized in place" "
 | |
| 		reset_rebase &&
 | |
| 		git rebase $* d w &&
 | |
| 		test_cmp_rev d HEAD~3 &&
 | |
| 		test_linear_range "\'"$expected"\'" d..
 | |
| 	"
 | |
| }
 | |
| test_run_rebase success 'n o e' --apply
 | |
| test_run_rebase success 'n o e' -m
 | |
| test_run_rebase success 'n o e' -i
 | |
| 
 | |
| test_run_rebase () {
 | |
| 	result=$1
 | |
| 	shift
 | |
| 	expected=$1
 | |
| 	shift
 | |
| 	test_expect_$result "rebase $* of non-linear history is linearized upstream" "
 | |
| 		reset_rebase &&
 | |
| 		git rebase $* c w &&
 | |
| 		test_cmp_rev c HEAD~4 &&
 | |
| 		test_linear_range "\'"$expected"\'" c..
 | |
| 	"
 | |
| }
 | |
| test_run_rebase success 'd n o e' --apply
 | |
| test_run_rebase success 'd n o e' -m
 | |
| test_run_rebase success 'd n o e' -i
 | |
| 
 | |
| test_run_rebase () {
 | |
| 	result=$1
 | |
| 	shift
 | |
| 	expected=$1
 | |
| 	shift
 | |
| 	test_expect_$result "rebase $* of non-linear history with merges after upstream merge is linearized" "
 | |
| 		reset_rebase &&
 | |
| 		git rebase $* c v &&
 | |
| 		test_cmp_rev c HEAD~4 &&
 | |
| 		test_linear_range "\'"$expected"\'" c..
 | |
| 	"
 | |
| }
 | |
| test_run_rebase success 'd n o e' --apply
 | |
| test_run_rebase success 'd n o e' -m
 | |
| test_run_rebase success 'd n o e' -i
 | |
| 
 | |
| test_done
 |