Re: [PATCH 18/21] t/helper: fix segfault in "oid-array" command without repository

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

 



On Tue, 11 Jun 2024, Patrick Steinhardt <ps@xxxxxx> wrote:
> The "oid-array" test helper can supposedly work without a Git
> repository, but will in fact crash because `the_repository->hash_algo`
> is not initialized. This is because `oid_pos()`, which is used by
> `oid_array_lookup()`, depends on `the_hash_algo->rawsz`.
> 
> Ideally, we'd adapt `oid_pos()` to not depend on `the_hash_algo`
> anymore. That is a bigger untertaking though, so instead we fall back to
> SHA1 when there is no repository.

Thanks for working on this. This would make t-oid-array migration
smoother.

> Signed-off-by: Patrick Steinhardt <ps@xxxxxx>
> ---
>  t/helper/test-oid-array.c |  4 ++++
>  t/t0064-oid-array.sh      | 18 ++++++++++++++++++
>  2 files changed, 22 insertions(+)
> 
> diff --git a/t/helper/test-oid-array.c b/t/helper/test-oid-array.c
> index aafe398ef0..076b849cbf 100644
> --- a/t/helper/test-oid-array.c
> +++ b/t/helper/test-oid-array.c
> @@ -1,3 +1,5 @@
> +#define USE_THE_REPOSITORY_VARIABLE
> +
>  #include "test-tool.h"
>  #include "hex.h"
>  #include "oid-array.h"
> @@ -17,6 +19,8 @@ int cmd__oid_array(int argc UNUSED, const char **argv UNUSED)
>  	int nongit_ok;
>  
>  	setup_git_directory_gently(&nongit_ok);
> +	if (nongit_ok)
> +		repo_set_hash_algo(the_repository, GIT_HASH_SHA1);

Ideally we would want to test with both SHA1 and SHA256 without the
repo, but it is not a necessity for this patch as it would get solved
when we migrate to the unit testing framework.

>  	while (strbuf_getline(&line, stdin) != EOF) {
>  		const char *arg;
> diff --git a/t/t0064-oid-array.sh b/t/t0064-oid-array.sh
> index 88c89e8f48..de74b692d0 100755
> --- a/t/t0064-oid-array.sh
> +++ b/t/t0064-oid-array.sh
> @@ -15,6 +15,24 @@ echoid () {
>  	done
>  }
>  
> +test_expect_success 'without repository' '
> +	cat >expect <<-EOF &&
> +	4444444444444444444444444444444444444444
> +	5555555555555555555555555555555555555555
> +	8888888888888888888888888888888888888888
> +	aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> +	EOF
> +	cat >input <<-EOF &&
> +	append 4444444444444444444444444444444444444444
> +	append 5555555555555555555555555555555555555555
> +	append 8888888888888888888888888888888888888888
> +	append aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> +	for_each_unique
> +	EOF
> +	nongit test-tool oid-array <input >actual &&
> +	test_cmp expect actual
> +'
> +
>  test_expect_success 'ordered enumeration' '
>  	echoid "" 44 55 88 aa >expect &&
>  	{
> -- 
> 2.45.2.436.gcd77e87115.dirty
> 






[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