diff options
Diffstat (limited to 't/t5300-pack-object.sh')
| -rwxr-xr-x | t/t5300-pack-object.sh | 95 | 
1 files changed, 95 insertions, 0 deletions
diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh index c955fe44f5..983a39398f 100755 --- a/t/t5300-pack-object.sh +++ b/t/t5300-pack-object.sh @@ -274,4 +274,99 @@ test_expect_success \       packname_4=$(git pack-objects test-4 <obj-list) &&       test 3 = $(ls test-4-*.pack | wc -l)' +test_expect_success 'unpacking with --strict' ' + +	git config --unset pack.packsizelimit && +	for j in a b c d e f g +	do +		for i in 0 1 2 3 4 5 6 7 8 9 +		do +			o=$(echo $j$i | git hash-object -w --stdin) && +			echo "100644 $o	0 $j$i" +		done +	done >LIST && +	rm -f .git/index && +	git update-index --index-info <LIST && +	LIST=$(git write-tree) && +	rm -f .git/index && +	head -n 10 LIST | git update-index --index-info && +	LI=$(git write-tree) && +	rm -f .git/index && +	tail -n 10 LIST | git update-index --index-info && +	ST=$(git write-tree) && +	PACK5=$( git rev-list --objects "$LIST" "$LI" "$ST" | \ +		git pack-objects test-5 ) && +	PACK6=$( ( +			echo "$LIST" +			echo "$LI" +			echo "$ST" +		 ) | git pack-objects test-6 ) && +	test_create_repo test-5 && +	( +		cd test-5 && +		git unpack-objects --strict <../test-5-$PACK5.pack && +		git ls-tree -r $LIST && +		git ls-tree -r $LI && +		git ls-tree -r $ST +	) && +	test_create_repo test-6 && +	( +		# tree-only into empty repo -- many unreachables +		cd test-6 && +		test_must_fail git unpack-objects --strict <../test-6-$PACK6.pack +	) && +	( +		# already populated -- no unreachables +		cd test-5 && +		git unpack-objects --strict <../test-6-$PACK6.pack +	) +' + +test_expect_success 'index-pack with --strict' ' + +	for j in a b c d e f g +	do +		for i in 0 1 2 3 4 5 6 7 8 9 +		do +			o=$(echo $j$i | git hash-object -w --stdin) && +			echo "100644 $o	0 $j$i" +		done +	done >LIST && +	rm -f .git/index && +	git update-index --index-info <LIST && +	LIST=$(git write-tree) && +	rm -f .git/index && +	head -n 10 LIST | git update-index --index-info && +	LI=$(git write-tree) && +	rm -f .git/index && +	tail -n 10 LIST | git update-index --index-info && +	ST=$(git write-tree) && +	PACK5=$( git rev-list --objects "$LIST" "$LI" "$ST" | \ +		git pack-objects test-5 ) && +	PACK6=$( ( +			echo "$LIST" +			echo "$LI" +			echo "$ST" +		 ) | git pack-objects test-6 ) && +	test_create_repo test-7 && +	( +		cd test-7 && +		git index-pack --strict --stdin <../test-5-$PACK5.pack && +		git ls-tree -r $LIST && +		git ls-tree -r $LI && +		git ls-tree -r $ST +	) && +	test_create_repo test-8 && +	( +		# tree-only into empty repo -- many unreachables +		cd test-8 && +		test_must_fail git index-pack --strict --stdin <../test-6-$PACK6.pack +	) && +	( +		# already populated -- no unreachables +		cd test-7 && +		git index-pack --strict --stdin <../test-6-$PACK6.pack +	) +' +  test_done  | 
