| #include "unit-test.h" | |
| #include "lib-oid.h" | |
| #include "strbuf.h" | |
| #include "hex.h" | |
| int cl_setup_hash_algo(void) | |
| { | |
| static int algo = -1; | |
| if (algo < 0) { | |
| const char *algo_name = getenv("GIT_TEST_DEFAULT_HASH"); | |
| algo = algo_name ? hash_algo_by_name(algo_name) : GIT_HASH_SHA1; | |
| cl_assert(algo != GIT_HASH_UNKNOWN); | |
| } | |
| return algo; | |
| } | |
| static void cl_parse_oid(const char *hex, struct object_id *oid, | |
| const struct git_hash_algo *algop) | |
| { | |
| size_t sz = strlen(hex); | |
| struct strbuf buf = STRBUF_INIT; | |
| cl_assert(sz <= algop->hexsz); | |
| strbuf_add(&buf, hex, sz); | |
| strbuf_addchars(&buf, '0', algop->hexsz - sz); | |
| cl_assert_equal_i(get_oid_hex_algop(buf.buf, oid, algop), 0); | |
| strbuf_release(&buf); | |
| } | |
| void cl_parse_any_oid(const char *hex, struct object_id *oid) | |
| { | |
| int hash_algo = cl_setup_hash_algo(); | |
| cl_assert(hash_algo != GIT_HASH_UNKNOWN); | |
| cl_parse_oid(hex, oid, &hash_algos[hash_algo]); | |
| } |