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 >