-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add test case for ls-files --with-tree
This tests basic functionality and also exercises a bug noticed by Keith Packard, (prune_cache followed by add_index_entry can trigger an attempt to realloc a pointer into the middle of an allocated buffer). Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Carl Worth
authored and
Junio C Hamano
committed
Oct 3, 2007
1 parent
95af39f
commit 54e1abc
Showing
1 changed file
with
71 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
#!/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 && | ||
bad= && | ||
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 || { | ||
bad=t | ||
break | ||
} | ||
done && test -z "$bad" || { | ||
bad=t | ||
break | ||
} | ||
done && test -z "$bad" && | ||
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 . | ||
' | ||
|
||
# We have to run from a sub-directory to trigger prune_path | ||
# Then we finally get to run our --with-tree test | ||
cd sub | ||
|
||
test_expect_success 'git -ls-files --with-tree should succeed from subdir' ' | ||
git ls-files --with-tree=HEAD~1 >../output | ||
' | ||
|
||
cd .. | ||
test_expect_success \ | ||
'git -ls-files --with-tree should add entries from named tree.' \ | ||
'diff -u expected output' | ||
|
||
test_done |