| #!/bin/sh | 
 | # | 
 | # Copyright (c) 2007 Carl D. Worth | 
 | # | 
 |  | 
 | test_description='git ls-files test (--with-tree). | 
 |  | 
 | This test runs git ls-files --with-tree and in particular in | 
 | a scenario known to trigger a crash with some versions of git. | 
 | ' | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success setup ' | 
 |  | 
 | 	# The bug we are exercising requires a fair number of entries | 
 | 	# in a sub-directory so that add_index_entry will trigger a | 
 | 	# realloc. | 
 |  | 
 | 	echo file >expected && | 
 | 	mkdir sub && | 
 | 	for n in 0 1 2 3 4 5 | 
 | 	do | 
 | 		for m in 0 1 2 3 4 5 6 7 8 9 | 
 | 		do | 
 | 			num=00$n$m && | 
 | 			>sub/file-$num && | 
 | 			echo file-$num >>expected || | 
 | 			return 1 | 
 | 		done | 
 | 	done && | 
 | 	git add . && | 
 | 	git commit -m "add a bunch of files" && | 
 |  | 
 | 	# We remove them all so that we will have something to add | 
 | 	# back with --with-tree and so that we will definitely be | 
 | 	# under the realloc size to trigger the bug. | 
 | 	rm -rf sub && | 
 | 	git commit -a -m "remove them all" && | 
 |  | 
 | 	# The bug also requires some entry before our directory so that | 
 | 	# prune_path will modify the_index.cache | 
 |  | 
 | 	mkdir a_directory_that_sorts_before_sub && | 
 | 	>a_directory_that_sorts_before_sub/file && | 
 | 	mkdir sub && | 
 | 	>sub/file && | 
 | 	git add . | 
 | ' | 
 |  | 
 | test_expect_success 'git -ls-files --with-tree should succeed from subdir' ' | 
 | 	# We have to run from a sub-directory to trigger prune_path | 
 | 	# Then we finally get to run our --with-tree test | 
 | 	( | 
 | 		cd sub && | 
 | 		git ls-files --with-tree=HEAD~1 >../output | 
 | 	) | 
 | ' | 
 |  | 
 | test_expect_success \ | 
 |     'git -ls-files --with-tree should add entries from named tree.' \ | 
 |     'test_cmp expected output' | 
 |  | 
 | test_done |