]>
Commit | Line | Data |
---|---|---|
54e1abce CW |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2007 Carl D. Worth | |
4 | # | |
5 | ||
6 | test_description='git ls-files test (--with-tree). | |
7 | ||
8 | This test runs git ls-files --with-tree and in particular in | |
9 | a scenario known to trigger a crash with some versions of git. | |
10 | ' | |
11 | . ./test-lib.sh | |
12 | ||
13 | test_expect_success setup ' | |
14 | ||
15 | # The bug we are exercising requires a fair number of entries | |
16 | # in a sub-directory so that add_index_entry will trigger a | |
17 | # realloc. | |
18 | ||
19 | echo file >expected && | |
20 | mkdir sub && | |
21 | bad= && | |
22 | for n in 0 1 2 3 4 5 | |
23 | do | |
24 | for m in 0 1 2 3 4 5 6 7 8 9 | |
25 | do | |
26 | num=00$n$m && | |
27 | >sub/file-$num && | |
28 | echo file-$num >>expected || { | |
29 | bad=t | |
30 | break | |
31 | } | |
32 | done && test -z "$bad" || { | |
33 | bad=t | |
34 | break | |
35 | } | |
36 | done && test -z "$bad" && | |
37 | git add . && | |
38 | git commit -m "add a bunch of files" && | |
39 | ||
40 | # We remove them all so that we will have something to add | |
41 | # back with --with-tree and so that we will definitely be | |
42 | # under the realloc size to trigger the bug. | |
43 | rm -rf sub && | |
44 | git commit -a -m "remove them all" && | |
45 | ||
46 | # The bug also requires some entry before our directory so that | |
47 | # prune_path will modify the_index.cache | |
48 | ||
49 | mkdir a_directory_that_sorts_before_sub && | |
50 | >a_directory_that_sorts_before_sub/file && | |
51 | mkdir sub && | |
52 | >sub/file && | |
53 | git add . | |
54 | ' | |
55 | ||
54e1abce | 56 | test_expect_success 'git -ls-files --with-tree should succeed from subdir' ' |
18a82692 JN |
57 | # We have to run from a sub-directory to trigger prune_path |
58 | # Then we finally get to run our --with-tree test | |
59 | ( | |
60 | cd sub && | |
61 | git ls-files --with-tree=HEAD~1 >../output | |
62 | ) | |
54e1abce CW |
63 | ' |
64 | ||
54e1abce CW |
65 | test_expect_success \ |
66 | 'git -ls-files --with-tree should add entries from named tree.' \ | |
82ebb0b6 | 67 | 'test_cmp expected output' |
54e1abce CW |
68 | |
69 | test_done |