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 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 56# We have to run from a sub-directory to trigger prune_path 57# Then we finally get to run our --with-tree test 58cd sub 59 60test_expect_success 'git -ls-files --with-tree should succeed from subdir'' 61 62 git ls-files --with-tree=HEAD~1 >../output 63 64' 65 66cd .. 67test_expect_success \ 68'git -ls-files --with-tree should add entries from named tree.' \ 69'diff -u expected output' 70 71test_done