#!/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