1#!/bin/sh 2# 3# Copyright (c) 2007 Carl D. Worth 4# 5 6test_description='git ls-files test (--with-tree). 7 8This test runs git ls-files --with-tree and in particular in 9a scenario known to trigger a crash with some versions of git. 10' 11. ./test-lib.sh 12 13test_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 for n in 0 1 2 3 4 5 22 do 23 for m in 0 1 2 3 4 5 6 7 8 9 24 do 25 num=00$n$m&& 26 >sub/file-$num&& 27 echo file-$num>>expected || 28 return 1 29 done 30 done && 31 git add . && 32 git commit -m "add a bunch of files" && 33 34 # We remove them all so that we will have something to add 35 # back with --with-tree and so that we will definitely be 36 # under the realloc size to trigger the bug. 37 rm -rf sub && 38 git commit -a -m "remove them all" && 39 40 # The bug also requires some entry before our directory so that 41 # prune_path will modify the_index.cache 42 43 mkdir a_directory_that_sorts_before_sub && 44 >a_directory_that_sorts_before_sub/file && 45 mkdir sub && 46 >sub/file && 47 git add . 48' 49 50test_expect_success 'git -ls-files --with-tree should succeed from subdir'' 51 # We have to run from a sub-directory to trigger prune_path 52 # Then we finally get to run our --with-tree test 53 ( 54 cd sub && 55 git ls-files --with-tree=HEAD~1 >../output 56 ) 57' 58 59test_expect_success \ 60'git -ls-files --with-tree should add entries from named tree.' \ 61'test_cmp expected output' 62 63test_done