From: Phillip Wood <phillip.wood123@gmail.com>
To: Seyi Kuforiji <kuforiji98@gmail.com>, git@vger.kernel.org
Cc: ps@pks.im, phillip.wood@dunelm.org.uk
Subject: Re: [PATCH 1/5] t/unit-tests: implement oid helper functions in unit-tests.{c,h}
Date: Thu, 20 Feb 2025 14:38:21 +0000 [thread overview]
Message-ID: <c9e8a5f8-fda6-4383-bbb3-0c960a4cf86e@gmail.com> (raw)
In-Reply-To: <20250220082959.10854-2-kuforiji98@gmail.com>
Hi Seyi
On 20/02/2025 08:29, Seyi Kuforiji wrote:
> `get_oid_arbitrary_hex()` and `init_hash_algo()` are both required for
> oid-related tests to run without errors. In the current implementation,
> both functions are defined and declared in the
> `t/unit-tests/lib-oid.{c,h}` which is utilized by oid-related tests in
> the homegrown unit tests structure.
>
> Implement equivalent functions in unit-tests.{c,h}. Both these functions
> become available for oid-related test files implemented using the clar
> testing framework, which requires them. This will be used by subsequent
> commits.
It is nice to see these tests being moved over to clar but I'm not sure
that moving these functions into this file is good idea. All the unit
tests need to link against unit-tests.o but only a subset will want
access to these functions. Putting them in this file means that all the
tests will now depend on code from strbuf.o and hex.o. I think we could
add the new functions to lib-oid.c and then remove the old ones when
there are not needed any more.
Best Wishes
Phillip
> Mentored-by: Patrick Steinhardt <ps@pks.im>
> Signed-off-by: Seyi Kuforiji <kuforiji98@gmail.com>
> ---
> t/unit-tests/unit-test.c | 42 ++++++++++++++++++++++++++++++++++++++++
> t/unit-tests/unit-test.h | 19 ++++++++++++++++++
> 2 files changed, 61 insertions(+)
>
> diff --git a/t/unit-tests/unit-test.c b/t/unit-tests/unit-test.c
> index fa8818842a..13d54f192a 100644
> --- a/t/unit-tests/unit-test.c
> +++ b/t/unit-tests/unit-test.c
> @@ -1,5 +1,7 @@
> #include "unit-test.h"
> +#include "hex.h"
> #include "parse-options.h"
> +#include "strbuf.h"
> #include "string-list.h"
> #include "strvec.h"
>
> @@ -62,3 +64,43 @@ int cmd_main(int argc, const char **argv)
> strvec_clear(&args);
> return ret;
> }
> +
> +int init_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)
> +{
> + int ret;
> + 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);
> +
> + ret = get_oid_hex_algop(buf.buf, oid, algop);
> + cl_assert_equal_i(ret, 0);
> +
> + strbuf_release(&buf);
> +}
> +
> +
> +void cl_parse_any_oid(const char *hex, struct object_id *oid)
> +{
> + int hash_algo = init_hash_algo();
> +
> + cl_assert(hash_algo != GIT_HASH_UNKNOWN);
> + cl_parse_oid(hex, oid, &hash_algos[hash_algo]);
> +}
> diff --git a/t/unit-tests/unit-test.h b/t/unit-tests/unit-test.h
> index 85e5d6a948..ebed51212f 100644
> --- a/t/unit-tests/unit-test.h
> +++ b/t/unit-tests/unit-test.h
> @@ -8,3 +8,22 @@
> snprintf(desc, sizeof(desc), fmt, __VA_ARGS__); \
> clar__fail(__FILE__, __func__, __LINE__, "Test failed.", desc, 1); \
> } while (0)
> +
> +/*
> + * Convert arbitrary hex string to object_id.
> + * For example, passing "abc12" will generate
> + * "abc1200000000000000000000000000000000000" hex of length 40 for SHA-1 and
> + * create object_id with that.
> + * WARNING: passing a string of length more than the hexsz of respective hash
> + * algo is not allowed. The hash algo is decided based on GIT_TEST_DEFAULT_HASH
> + * environment variable.
> + */
> +void cl_parse_any_oid(const char *s, struct object_id *oid);
> +/*
> + * Returns one of GIT_HASH_{SHA1, SHA256, UNKNOWN} based on the value of
> + * GIT_TEST_DEFAULT_HASH environment variable. The fallback value in the
> + * absence of GIT_TEST_DEFAULT_HASH is GIT_HASH_SHA1. It also uses
> + * cl_assert(algo != GIT_HASH_UNKNOWN) before returning to verify if the
> + * GIT_TEST_DEFAULT_HASH's value is valid or not.
> + */
> +int init_hash_algo(void);
next prev parent reply other threads:[~2025-02-20 14:38 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-20 8:29 [PATCH 0/5] t/unit-tests: convert unit-tests to use clar Seyi Kuforiji
2025-02-20 8:29 ` [PATCH 1/5] t/unit-tests: implement oid helper functions in unit-tests.{c,h} Seyi Kuforiji
2025-02-20 14:38 ` Phillip Wood [this message]
2025-02-21 7:59 ` Patrick Steinhardt
2025-02-21 7:59 ` Patrick Steinhardt
2025-02-21 14:50 ` phillip.wood123
2025-02-20 8:29 ` [PATCH 2/5] t/unit-tests: convert oid-array test to use clar Seyi Kuforiji
2025-02-20 14:38 ` Phillip Wood
2025-02-24 9:11 ` Seyi Chamber
2025-02-24 10:12 ` phillip.wood123
2025-02-20 8:29 ` [PATCH 3/5] t/unit-tests: convert oidmap " Seyi Kuforiji
2025-02-21 10:04 ` phillip.wood123
2025-02-24 10:56 ` Seyi Chamber
2025-02-20 8:29 ` [PATCH 4/5] t/unit-tests: convert oidtree " Seyi Kuforiji
2025-02-21 14:48 ` phillip.wood123
2025-02-20 8:29 ` [PATCH 5/5] t/unit-tests: remove lib-oid.{c,h,o} Seyi Kuforiji
2025-02-21 14:52 ` [PATCH 0/5] t/unit-tests: convert unit-tests to use clar phillip.wood123
2025-02-24 15:27 ` [PATCH v2 0/4] " Seyi Kuforiji
2025-02-24 15:27 ` [PATCH v2 1/4] t/unit-tests: implement clar specific oid helper functions Seyi Kuforiji
2025-02-24 17:55 ` Junio C Hamano
2025-02-25 7:14 ` Seyi Chamber
2025-02-25 7:56 ` Patrick Steinhardt
2025-02-24 15:27 ` [PATCH v2 2/4] t/unit-tests: convert oid-array test to use clar test framework Seyi Kuforiji
2025-02-24 15:27 ` [PATCH v2 3/4] t/unit-tests: convert oidmap " Seyi Kuforiji
2025-02-24 15:27 ` [PATCH v2 4/4] t/unit-tests: convert oidtree " Seyi Kuforiji
2025-02-25 10:10 ` [PATCH v3 0/4] t/unit-tests: convert unit-tests to use clar Seyi Kuforiji
2025-02-25 10:10 ` [PATCH v3 1/4] t/unit-tests: implement clar specific oid helper functions Seyi Kuforiji
2025-02-25 10:10 ` [PATCH v3 2/4] t/unit-tests: convert oid-array test to use clar test framework Seyi Kuforiji
2025-02-25 10:10 ` [PATCH v3 3/4] t/unit-tests: convert oidmap " Seyi Kuforiji
2025-02-25 10:10 ` [PATCH v3 4/4] t/unit-tests: convert oidtree " Seyi Kuforiji
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c9e8a5f8-fda6-4383-bbb3-0c960a4cf86e@gmail.com \
--to=phillip.wood123@gmail.com \
--cc=git@vger.kernel.org \
--cc=kuforiji98@gmail.com \
--cc=phillip.wood@dunelm.org.uk \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).