Re: [PATCH 1/2] t5410: test receive-pack connectivity check
- From
Karthik Nayak <karthik.188@gmail.com>
- Date
- May 20, 2025, 09:11 UTC
- Message-ID
- <CAOLa=ZRz8iAF8DhtMnt_usaWSTxjiHQNprGXES6mRAWK4QTG5w@mail.gmail.com>
- In-Reply-To
- <20250520014920.201736-2-jltobler@gmail.com>
Justin Tobler <jltobler@gmail.com> writes:
Show 23 quoted lines
> As part of git-recieve-pack(1), the connectivity of objects is checked.
> Add a test validating that git-receive-pack(1) fails due to an incoming
> packfile that would leave the repository with missing objects. Instead
> of creating a new test file, "t5410" is generalized for receive-pack
> testing.
>
> Signed-off-by: Justin Tobler <jltobler@gmail.com>
> ---
> t/meson.build | 2 +-
> ...ck-alternates.sh => t5410-receive-pack.sh} | 23 ++++++++++++++++++-
> 2 files changed, 23 insertions(+), 2 deletions(-)
> rename t/{t5410-receive-pack-alternates.sh => t5410-receive-pack.sh} (57%)
>
> diff --git a/t/meson.build b/t/meson.build
> index 43c9750b88..6b7c0b167b 100644
> --- a/t/meson.build
> +++ b/t/meson.build
> @@ -628,7 +628,7 @@ integration_tests = [
> 't5407-post-rewrite-hook.sh',
> 't5408-send-pack-stdin.sh',
> 't5409-colorize-remote-messages.sh',
> - 't5410-receive-pack-alternates.sh',
> + 't5410-receive-pack.sh',I think this is much better that creating a new test file, since currently the file houses only 2 tests. When we do start adding a lot more tests we can branch out as necessary.
Show 34 quoted lines
> 't5411-proc-receive-hook.sh',
> 't5500-fetch-pack.sh',
> 't5501-fetch-push-alternates.sh',
> diff --git a/t/t5410-receive-pack-alternates.sh b/t/t5410-receive-pack.sh
> similarity index 57%
> rename from t/t5410-receive-pack-alternates.sh
> rename to t/t5410-receive-pack.sh
> index 4e82fd102e..9afea54a26 100755
> --- a/t/t5410-receive-pack-alternates.sh
> +++ b/t/t5410-receive-pack.sh
> @@ -1,6 +1,6 @@
> #!/bin/sh
>
> -test_description='git receive-pack with alternate ref filtering'
> +test_description='git receive-pack'
>
> GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
> export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
> @@ -41,4 +41,25 @@ test_expect_success 'with core.alternateRefsPrefixes' '
> test_cmp expect actual.haves
> '
>
> +test_expect_success 'receive-pack missing objects fails connectivity check' '
> + test_when_finished rm -rf repo remote.git setup.git &&
> +
> + git init repo &&
> + git -C repo commit --allow-empty -m 1 &&
> + git clone --bare repo setup.git &&
> + git -C repo commit --allow-empty -m 2 &&
> +
> + # Capture git-send-pack(1) output sent to git-receive-pack(1).
> + git -C repo send-pack ../setup.git --all \
> + --receive-pack="tee ${SQ}$(pwd)/out${SQ} | git-receive-pack" &&
> +We don't remove 'out' with 'test_when_finished' but that's okay since 'tee' overrides the file by default. Makes sense.
Show 12 quoted lines
> + # Replay captured git-send-pack(1) output on new empty repository. > + git init --bare remote.git && > + git receive-pack remote.git <out >actual 2>err && > + > + test_grep "missing necessary objects" actual && > + test_grep "fatal: Failed to traverse parents" err && > + test_must_fail git -C remote.git cat-file -e $(git -C repo rev-parse HEAD) > +' > + > test_done > -- > 2.49.0.111.g5b97a56fa0