Seyi Kuforiji | a16a2ee | 2025-02-25 11:10:41 +0100 | [diff] [blame] | 1 | #include "unit-test.h" |
Ghanshyam Thakkar | ed54840 | 2024-06-08 22:27:09 +0530 | [diff] [blame] | 2 | #include "lib-oid.h" |
| 3 | #include "strbuf.h" |
| 4 | #include "hex.h" |
| 5 | |
Seyi Kuforiji | a16a2ee | 2025-02-25 11:10:41 +0100 | [diff] [blame] | 6 | int cl_setup_hash_algo(void) |
Ghanshyam Thakkar | ed54840 | 2024-06-08 22:27:09 +0530 | [diff] [blame] | 7 | { |
| 8 | static int algo = -1; |
| 9 | |
| 10 | if (algo < 0) { |
| 11 | const char *algo_name = getenv("GIT_TEST_DEFAULT_HASH"); |
| 12 | algo = algo_name ? hash_algo_by_name(algo_name) : GIT_HASH_SHA1; |
| 13 | |
Seyi Kuforiji | a16a2ee | 2025-02-25 11:10:41 +0100 | [diff] [blame] | 14 | cl_assert(algo != GIT_HASH_UNKNOWN); |
Ghanshyam Thakkar | ed54840 | 2024-06-08 22:27:09 +0530 | [diff] [blame] | 15 | } |
| 16 | return algo; |
| 17 | } |
| 18 | |
Seyi Kuforiji | a16a2ee | 2025-02-25 11:10:41 +0100 | [diff] [blame] | 19 | static void cl_parse_oid(const char *hex, struct object_id *oid, |
Ghanshyam Thakkar | ed54840 | 2024-06-08 22:27:09 +0530 | [diff] [blame] | 20 | const struct git_hash_algo *algop) |
| 21 | { |
Ghanshyam Thakkar | ed54840 | 2024-06-08 22:27:09 +0530 | [diff] [blame] | 22 | size_t sz = strlen(hex); |
| 23 | struct strbuf buf = STRBUF_INIT; |
| 24 | |
Seyi Kuforiji | a16a2ee | 2025-02-25 11:10:41 +0100 | [diff] [blame] | 25 | cl_assert(sz <= algop->hexsz); |
Ghanshyam Thakkar | ed54840 | 2024-06-08 22:27:09 +0530 | [diff] [blame] | 26 | |
| 27 | strbuf_add(&buf, hex, sz); |
| 28 | strbuf_addchars(&buf, '0', algop->hexsz - sz); |
| 29 | |
Seyi Kuforiji | a16a2ee | 2025-02-25 11:10:41 +0100 | [diff] [blame] | 30 | cl_assert_equal_i(get_oid_hex_algop(buf.buf, oid, algop), 0); |
Ghanshyam Thakkar | ed54840 | 2024-06-08 22:27:09 +0530 | [diff] [blame] | 31 | |
| 32 | strbuf_release(&buf); |
Ghanshyam Thakkar | ed54840 | 2024-06-08 22:27:09 +0530 | [diff] [blame] | 33 | } |
| 34 | |
Ghanshyam Thakkar | ed54840 | 2024-06-08 22:27:09 +0530 | [diff] [blame] | 35 | |
Seyi Kuforiji | a16a2ee | 2025-02-25 11:10:41 +0100 | [diff] [blame] | 36 | void cl_parse_any_oid(const char *hex, struct object_id *oid) |
| 37 | { |
| 38 | int hash_algo = cl_setup_hash_algo(); |
| 39 | |
| 40 | cl_assert(hash_algo != GIT_HASH_UNKNOWN); |
| 41 | cl_parse_oid(hex, oid, &hash_algos[hash_algo]); |
Ghanshyam Thakkar | ed54840 | 2024-06-08 22:27:09 +0530 | [diff] [blame] | 42 | } |