Re: [PATCH v3 9/9] archive: add tests for git archive --recurse-submodules
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Oct 28, 2022, 00:17 UTC
- Message-ID
- <221028.86wn8k94pu.gmgdl@evledraar.gmail.com>
- In-Reply-To
- <f88ebbaf17cbf1a0b57336430bd43ade94406f38.1665973401.git.gitgitgadget@gmail.com>
On Mon, Oct 17 2022, Heather Lapointe via GitGitGadget wrote:
> From: Heather Lapointe <alpha@alphaservcomputing.solutions>
[In addition to what others mentioned]
Show 7 quoted lines
> +test_description='git archive --recurse-submodules test'
> +
> +. ./test-lib.sh
> +
> +check_tar() {
> + tarfile=$1.tar
> + listfile=$1.lstThis "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.
Show 7 quoted lines
> +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_archiveDon'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.
Show 6 quoted lines
> + ) && > + ( > + 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...