Re: [PATCH 1/2] t5410: test receive-pack connectivity check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Justin Tobler <jltobler@xxxxxxxxx> writes:

> 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@xxxxxxxxx>
> ---
>  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.

>    '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.

> +	# 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

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux