t/helper: fix segfault in "oid-array" command without repository
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. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
fa9e009aa7
commit
8e9a1d0dc2
|
@ -1,3 +1,5 @@
|
||||||
|
#define USE_THE_REPOSITORY_VARIABLE
|
||||||
|
|
||||||
#include "test-tool.h"
|
#include "test-tool.h"
|
||||||
#include "hex.h"
|
#include "hex.h"
|
||||||
#include "oid-array.h"
|
#include "oid-array.h"
|
||||||
|
@ -17,6 +19,8 @@ int cmd__oid_array(int argc UNUSED, const char **argv UNUSED)
|
||||||
int nongit_ok;
|
int nongit_ok;
|
||||||
|
|
||||||
setup_git_directory_gently(&nongit_ok);
|
setup_git_directory_gently(&nongit_ok);
|
||||||
|
if (nongit_ok)
|
||||||
|
repo_set_hash_algo(the_repository, GIT_HASH_SHA1);
|
||||||
|
|
||||||
while (strbuf_getline(&line, stdin) != EOF) {
|
while (strbuf_getline(&line, stdin) != EOF) {
|
||||||
const char *arg;
|
const char *arg;
|
||||||
|
|
|
@ -15,6 +15,24 @@ echoid () {
|
||||||
done
|
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' '
|
test_expect_success 'ordered enumeration' '
|
||||||
echoid "" 44 55 88 aa >expect &&
|
echoid "" 44 55 88 aa >expect &&
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue