104 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			104 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| 
 | |
| test_description='read-tree D/F conflict corner cases'
 | |
| 
 | |
| . ./test-lib.sh
 | |
| . "$TEST_DIRECTORY"/lib-read-tree.sh
 | |
| 
 | |
| maketree () {
 | |
| 	(
 | |
| 		rm -f .git/index .git/index.lock &&
 | |
| 		git clean -d -f -f -q -x &&
 | |
| 		name="$1" &&
 | |
| 		shift &&
 | |
| 		for it
 | |
| 		do
 | |
| 			path=$(expr "$it" : '\([^:]*\)') &&
 | |
| 			mkdir -p $(dirname "$path") &&
 | |
| 			echo "$it" >"$path" &&
 | |
| 			git update-index --add "$path" || exit
 | |
| 		done &&
 | |
| 		git tag "$name" $(git write-tree)
 | |
| 	)
 | |
| }
 | |
| 
 | |
| settree () {
 | |
| 	rm -f .git/index .git/index.lock &&
 | |
| 	git clean -d -f -f -q -x &&
 | |
| 	git read-tree "$1" &&
 | |
| 	git checkout-index -f -q -u -a &&
 | |
| 	git update-index --refresh
 | |
| }
 | |
| 
 | |
| checkindex () {
 | |
| 	git ls-files -s |
 | |
| 	sed "s|^[0-7][0-7]* $_x40 \([0-3]\)	|\1 |" >current &&
 | |
| 	cat >expect &&
 | |
| 	test_cmp expect current
 | |
| }
 | |
| 
 | |
| test_expect_success setup '
 | |
| 	maketree O-000 a/b-2/c/d a/b/c/d a/x &&
 | |
| 	maketree A-000 a/b-2/c/d a/b/c/d a/x &&
 | |
| 	maketree A-001 a/b-2/c/d a/b/c/d a/b/c/e a/x &&
 | |
| 	maketree B-000 a/b-2/c/d a/b     a/x &&
 | |
| 
 | |
| 	maketree O-010 t-0     t/1  t/2 t=3 &&
 | |
| 	maketree A-010 t-0 t            t=3 &&
 | |
| 	maketree B-010         t/1:     t=3: &&
 | |
| 
 | |
| 	maketree O-020 ds/dma/ioat.c ds/dma/ioat_dca.c &&
 | |
| 	maketree A-020 ds/dma/ioat/Makefile ds/dma/ioat/registers.h &&
 | |
| 	:
 | |
| '
 | |
| 
 | |
| test_expect_success '3-way (1)' '
 | |
| 	settree A-000 &&
 | |
| 	read_tree_u_must_succeed -m -u O-000 A-000 B-000 &&
 | |
| 	checkindex <<-EOF
 | |
| 	3 a/b
 | |
| 	0 a/b-2/c/d
 | |
| 	1 a/b/c/d
 | |
| 	2 a/b/c/d
 | |
| 	0 a/x
 | |
| 	EOF
 | |
| '
 | |
| 
 | |
| test_expect_success '3-way (2)' '
 | |
| 	settree A-001 &&
 | |
| 	read_tree_u_must_succeed -m -u O-000 A-001 B-000 &&
 | |
| 	checkindex <<-EOF
 | |
| 	3 a/b
 | |
| 	0 a/b-2/c/d
 | |
| 	1 a/b/c/d
 | |
| 	2 a/b/c/d
 | |
| 	2 a/b/c/e
 | |
| 	0 a/x
 | |
| 	EOF
 | |
| '
 | |
| 
 | |
| test_expect_success '3-way (3)' '
 | |
| 	settree A-010 &&
 | |
| 	read_tree_u_must_succeed -m -u O-010 A-010 B-010 &&
 | |
| 	checkindex <<-EOF
 | |
| 	2 t
 | |
| 	1 t-0
 | |
| 	2 t-0
 | |
| 	1 t/1
 | |
| 	3 t/1
 | |
| 	1 t/2
 | |
| 	0 t=3
 | |
| 	EOF
 | |
| '
 | |
| 
 | |
| test_expect_success '2-way (1)' '
 | |
| 	settree O-020 &&
 | |
| 	read_tree_u_must_succeed -m -u O-020 A-020 &&
 | |
| 	checkindex <<-EOF
 | |
| 	0 ds/dma/ioat/Makefile
 | |
| 	0 ds/dma/ioat/registers.h
 | |
| 	EOF
 | |
| '
 | |
| 
 | |
| test_done
 |