On Mon, Oct 17 2022, Heather Lapointe via GitGitGadget wrote: > From: Heather Lapointe <alpha@alphaservcomputing.solutions> [In addition to what others mentioned] > +test_description='git archive --recurse-submodules test' > + > +. ./test-lib.sh > + > +check_tar() { > + tarfile=$1.tar > + listfile=$1.lst This "listfile" is used nowhere?" > + dir=$1 > + dir_with_prefix=$dir/$2 Nor dir_with_prefix? > + > + test_expect_success ' extract tar archive' ' > + (mkdir $dir && cd $dir && "$TAR" xf -) <$tarfile Aside from what Jonathan mentioned, maybe we can just use one variable here then? mkdir $foo ... <$foo.tar > + test_expect_success " validate extra file $path_in_archive" ' > + test -f $dir/$path_in_archive && Instead use "test_path_is_file", and in general for "test <whatever>" check out if we have a wrapper in test-lib-functions.sh. > +check_not_added() { > + dir=$1 > + path_in_archive=$2 > + > + test_expect_success " validate unpresent file $path_in_archive" ' > + ! test -f $dir/$path_in_archive && > + ! test -d $dir/$path_in_archive Don't test for what a thing isn't, but what it is. Can't we do that here? > +test_expect_success 'setup' ' > + rm -rf repo_with_submodules submodule1 uninited_repo_with_submodules && Don't have a test rm -rf stuff from a previous block, but have "test_when_finished" clean up after that previous test instead. > + git init repo_with_submodules && > + git init submodule1 && > + ( > + cd submodule1 && This: > + echo "dir1/sub1/file1.txt" > "file1.txt" && > + git add file1.txt && > + git commit -m "initialize with file1.txt" Looks like you can use test_commit instead. And note you can use -C, so you won't need the sub-shell either, I think. > + ) && > + ( > + cd repo_with_submodules && > + echo "file2" > file2.txt && > + git add file2.txt && > + git commit -m "initialize with file2.txt" && Ditto. > + mkdir -p dir1 && Let's drop "-p" here, to check for errors. > +test_expect_success 'archive with recurse, non-init' ' > + ! git -C uninited_repo_with_submodules archive --recurse-submodules -v HEAD >b2-err.tar For git, don't use !, use test_must_fail, ! hides segfaults. Does this test pass when you build with SANITIZE=leak? Then you can do this at the top: TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh If you can't test that locally pushing to GitHub CI will tell you...