From: Patrick Steinhardt <ps@pks.im>
To: Seyi Kuforiji <kuforiji98@gmail.com>
Cc: git@vger.kernel.org, phillip.wood@dunelm.org.uk
Subject: Re: [PATCH v2 01/10] t/unit-tests: implement reftable test helper functions in unit-test.{c,h}
Date: Fri, 2 May 2025 11:57:36 +0200 [thread overview]
Message-ID: <aBSXEEjRyh2cQ4Jm@pks.im> (raw)
In-Reply-To: <20250429175302.23724-2-kuforiji98@gmail.com>
On Tue, Apr 29, 2025 at 06:52:53PM +0100, Seyi Kuforiji wrote:
> Helper functions defined in `t/unit-tests/lib-reftable.{c,h}` are
> required for the reftable-related test files to run efficeintly. In the
> current implementation these functions are designed to conform with our
> homegrown unit-testing structure. So in other to convert the reftable
> test files, there is need for a clar specific implementation of these
> helper functions.
>
> type cast `for (size_t i = 0; i < (size_t)stats->ref_stats.blocks;
> i++)`, implement equivalent helper functions in unit-test.{c,h} to use
> clar. These functions conform with the clar testing framework and become
> available for all reftable-related test files implemented using the clar
> testing framework, which requires them. This will be used by subsequent
> commits.
>
> Signed-off-by: Seyi Kuforiji <kuforiji98@gmail.com>
> ---
> t/unit-tests/unit-test.c | 93 ++++++++++++++++++++++++++++++++++++++++
> t/unit-tests/unit-test.h | 16 +++++++
> 2 files changed, 109 insertions(+)
I think this functionality should be added to
"t/unit-tests/lib-reftable.{c,h}" instead of to the generic unit testing
library as it is highly specific to reftables.
> diff --git a/t/unit-tests/unit-test.c b/t/unit-tests/unit-test.c
> index 5af645048a..6c2a4e6aa8 100644
> --- a/t/unit-tests/unit-test.c
> +++ b/t/unit-tests/unit-test.c
> @@ -1,10 +1,103 @@
> #include "unit-test.h"
> #include "hex.h"
> #include "parse-options.h"
> +#include "reftable/constants.h"
> +#include "reftable/writer.h"
> #include "strbuf.h"
> #include "string-list.h"
> #include "strvec.h"
>
> +void cl_reftable_set_hash(uint8_t *p, int i, enum reftable_hash id)
> +{
> + memset(p, (uint8_t)i, hash_size(id));
> +}
> +
> +static ssize_t strbuf_writer_write(void *b, const void *data, size_t sz)
> +{
> + strbuf_add(b, data, sz);
> + return sz;
> +}
> +
> +static int strbuf_writer_flush(void *arg UNUSED)
> +{
> + return 0;
> +}
> +
> +struct reftable_writer *cl_reftable_strbuf_writer(struct reftable_buf *buf,
> + struct reftable_write_options *opts)
> +{
> + struct reftable_writer *writer;
> + int ret = reftable_writer_new(&writer, &strbuf_writer_write, &strbuf_writer_flush,
> + buf, opts);
> + cl_assert(ret == 0);
We typically don't explicitly compare with zero, so this should rather
be `cl_assert(!ret)`.
> + return writer;
> +}
> +
> +void cl_reftable_write_to_buf(struct reftable_buf *buf,
> + struct reftable_ref_record *refs,
> + size_t nrefs,
> + struct reftable_log_record *logs,
> + size_t nlogs,
> + struct reftable_write_options *_opts)
> +{
> + struct reftable_write_options opts = { 0 };
> + const struct reftable_stats *stats;
> + struct reftable_writer *writer;
> + uint64_t min = 0xffffffff;
> + uint64_t max = 0;
> + int ret;
> +
> + if (_opts)
> + opts = *_opts;
> +
> + for (size_t i = 0; i < nrefs; i++) {
> + uint64_t ui = refs[i].update_index;
> + if (ui > max)
> + max = ui;
> + if (ui < min)
> + min = ui;
> + }
> + for (size_t i = 0; i < nlogs; i++) {
> + uint64_t ui = logs[i].update_index;
> + if (ui > max)
> + max = ui;
> + if (ui < min)
> + min = ui;
> + }
> +
> + writer = cl_reftable_strbuf_writer(buf, &opts);
> + reftable_writer_set_limits(writer, min, max);
This function may return an error, as well, so let's verify it while at
it.
Patrick
next prev parent reply other threads:[~2025-05-02 9:57 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-29 17:52 [PATCH v2 00/10] t/unit-tests: convert unit-tests to use clar Seyi Kuforiji
2025-04-29 17:52 ` [PATCH v2 01/10] t/unit-tests: implement reftable test helper functions in unit-test.{c,h} Seyi Kuforiji
2025-04-29 23:04 ` Junio C Hamano
2025-05-02 9:57 ` Patrick Steinhardt
2025-05-02 9:57 ` Patrick Steinhardt [this message]
2025-04-29 17:52 ` [PATCH v2 02/10] t/unit-tests: convert reftable basics test to use clar test framework Seyi Kuforiji
2025-05-02 9:57 ` Patrick Steinhardt
2025-04-29 17:52 ` [PATCH v2 03/10] t/unit-tests: convert reftable block test to use clar Seyi Kuforiji
2025-05-02 9:57 ` Patrick Steinhardt
2025-05-05 7:37 ` Seyi Chamber
2025-05-05 9:52 ` Patrick Steinhardt
2025-05-05 21:14 ` Junio C Hamano
2025-05-06 5:10 ` Patrick Steinhardt
2025-04-29 17:52 ` [PATCH v2 04/10] t/unit-tests: convert reftable merged " Seyi Kuforiji
2025-05-02 9:57 ` Patrick Steinhardt
2025-04-29 17:52 ` [PATCH v2 05/10] t/unit-tests: convert reftable pq " Seyi Kuforiji
2025-04-29 17:52 ` [PATCH v2 06/10] t/unit-tests: convert reftable reader " Seyi Kuforiji
2025-05-02 9:57 ` Patrick Steinhardt
2025-04-29 17:52 ` [PATCH v2 07/10] t/unit-tests: convert reftable readwrite " Seyi Kuforiji
2025-05-02 9:57 ` Patrick Steinhardt
2025-04-29 17:53 ` [PATCH v2 08/10] t/unit-tests: convert reftable record " Seyi Kuforiji
2025-04-29 17:53 ` [PATCH v2 09/10] t/unit-tests: convert reftable stack " Seyi Kuforiji
2025-05-02 9:57 ` Patrick Steinhardt
2025-05-05 9:11 ` Seyi Chamber
2025-05-05 9:52 ` Patrick Steinhardt
2025-04-29 17:53 ` [PATCH v2 10/10] t/unit-tests: adapt lib-reftable{c,h} helper functions to clar Seyi Kuforiji
2025-05-02 9:57 ` Patrick Steinhardt
2025-05-05 7:27 ` Seyi Chamber
2025-05-05 9:52 ` Patrick Steinhardt
2025-05-26 9:04 ` Seyi Chamber
2025-05-26 12:56 ` Patrick Steinhardt
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=aBSXEEjRyh2cQ4Jm@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=kuforiji98@gmail.com \
--cc=phillip.wood@dunelm.org.uk \
/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).