From: Seyi Kuforiji <kuforiji98@gmail.com>
To: git@vger.kernel.org
Cc: ps@pks.im, phillip.wood@dunelm.org.uk,
Seyi Kuforiji <kuforiji98@gmail.com>
Subject: [PATCH v2 00/10] t/unit-tests: convert unit-tests to use clar
Date: Tue, 29 Apr 2025 18:52:52 +0100 [thread overview]
Message-ID: <20250429175302.23724-1-kuforiji98@gmail.com> (raw)
Hello,
This small patch series marks the final batch of our existing unit test
files transitioned to the Clar testing framework. It covers all the
reftable-related test files, and is part of our ongoing effort to
standardize our testing framework to enhance its maintainability.
Changes in v2:
- some code refactoring based on review, which includes
temporary relocation of reftable helper functions to
t/unit-tests/unit-test.{c,h} files in the initial commit
Thanks
Seyi
Signed-off-by: Seyi Kuforiji <kuforiji98@gmail.com>
Seyi Kuforiji (10):
t/unit-tests: implement reftable test helper functions in
unit-test.{c,h}
t/unit-tests: convert reftable basics test to use clar test framework
t/unit-tests: convert reftable block test to use clar
t/unit-tests: convert reftable merged test to use clar
t/unit-tests: convert reftable pq test to use clar
t/unit-tests: convert reftable reader test to use clar
t/unit-tests: convert reftable readwrite test to use clar
t/unit-tests: convert reftable record test to use clar
t/unit-tests: convert reftable stack test to use clar
t/unit-tests: adapt lib-reftable{c,h} helper functions to clar
Makefile | 20 +-
t/meson.build | 21 +-
t/unit-tests/lib-reftable.c | 26 +-
t/unit-tests/lib-reftable.h | 6 +-
t/unit-tests/t-reftable-basics.c | 219 ----
t/unit-tests/t-reftable-block.c | 383 -------
t/unit-tests/t-reftable-merged.c | 546 ----------
t/unit-tests/t-reftable-pq.c | 161 ---
t/unit-tests/t-reftable-reader.c | 96 --
t/unit-tests/t-reftable-readwrite.c | 985 ------------------
t/unit-tests/t-reftable-record.c | 585 -----------
t/unit-tests/t-reftable-stack.c | 1451 ---------------------------
t/unit-tests/u-reftable-basics.c | 195 ++++
t/unit-tests/u-reftable-block.c | 373 +++++++
t/unit-tests/u-reftable-merged.c | 515 ++++++++++
t/unit-tests/u-reftable-pq.c | 152 +++
t/unit-tests/u-reftable-reader.c | 78 ++
t/unit-tests/u-reftable-readwrite.c | 870 ++++++++++++++++
t/unit-tests/u-reftable-record.c | 565 +++++++++++
t/unit-tests/u-reftable-stack.c | 1247 +++++++++++++++++++++++
20 files changed, 4031 insertions(+), 4463 deletions(-)
delete mode 100644 t/unit-tests/t-reftable-basics.c
delete mode 100644 t/unit-tests/t-reftable-block.c
delete mode 100644 t/unit-tests/t-reftable-merged.c
delete mode 100644 t/unit-tests/t-reftable-pq.c
delete mode 100644 t/unit-tests/t-reftable-reader.c
delete mode 100644 t/unit-tests/t-reftable-readwrite.c
delete mode 100644 t/unit-tests/t-reftable-record.c
delete mode 100644 t/unit-tests/t-reftable-stack.c
create mode 100644 t/unit-tests/u-reftable-basics.c
create mode 100644 t/unit-tests/u-reftable-block.c
create mode 100644 t/unit-tests/u-reftable-merged.c
create mode 100644 t/unit-tests/u-reftable-pq.c
create mode 100644 t/unit-tests/u-reftable-reader.c
create mode 100644 t/unit-tests/u-reftable-readwrite.c
create mode 100644 t/unit-tests/u-reftable-record.c
create mode 100644 t/unit-tests/u-reftable-stack.c
Range-diff against v1:
-: ---------- > 1: d85c5694ca t/unit-tests: implement reftable test helper functions in unit-test.{c,h}
2: 4c5fc06603 ! 2: d24faa0176 t/unit-tests: convert reftable basics test to use clar test framework
@@ Makefile: CLAR_TEST_SUITES += u-oid-array
CLAR_TEST_SUITES += u-reftable-tree
CLAR_TEST_SUITES += u-strbuf
CLAR_TEST_SUITES += u-strcmp-offset
-@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
- CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
+@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
+ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
-UNIT_TEST_PROGRAMS += t-reftable-basics
UNIT_TEST_PROGRAMS += t-reftable-block
3: c9bdff8290 ! 3: d9eb47645b t/unit-tests: convert reftable block test to use clar
@@ Makefile: CLAR_TEST_SUITES += u-oidmap
CLAR_TEST_SUITES += u-reftable-tree
CLAR_TEST_SUITES += u-strbuf
CLAR_TEST_SUITES += u-strcmp-offset
-@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
- CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
+@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
+ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
-UNIT_TEST_PROGRAMS += t-reftable-block
UNIT_TEST_PROGRAMS += t-reftable-merged
4: 60e2ff8bca ! 4: 6ffc7cdfc6 t/unit-tests: convert reftable merged test to use clar
@@ Makefile: CLAR_TEST_SUITES += u-oidtree
CLAR_TEST_SUITES += u-reftable-tree
CLAR_TEST_SUITES += u-strbuf
CLAR_TEST_SUITES += u-strcmp-offset
-@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
- CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
+@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
+ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
-UNIT_TEST_PROGRAMS += t-reftable-merged
UNIT_TEST_PROGRAMS += t-reftable-pq
5: b06520b033 ! 5: 19b08968a0 t/unit-tests: convert reftable pq test to use clar
@@ Makefile: CLAR_TEST_SUITES += u-prio-queue
CLAR_TEST_SUITES += u-reftable-tree
CLAR_TEST_SUITES += u-strbuf
CLAR_TEST_SUITES += u-strcmp-offset
-@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
- CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
+@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
+ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
-UNIT_TEST_PROGRAMS += t-reftable-pq
UNIT_TEST_PROGRAMS += t-reftable-reader
6: 8b8ad57ff5 ! 6: b34d6714ed t/unit-tests: convert reftable reader test to use clar
@@ Makefile: CLAR_TEST_SUITES += u-reftable-basics
CLAR_TEST_SUITES += u-reftable-tree
CLAR_TEST_SUITES += u-strbuf
CLAR_TEST_SUITES += u-strcmp-offset
-@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
- CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
+@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
+ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
-UNIT_TEST_PROGRAMS += t-reftable-reader
UNIT_TEST_PROGRAMS += t-reftable-readwrite
7: da73e8c85b ! 7: 05c909ea94 t/unit-tests: convert reftable readwrite test to use clar
@@ Makefile: CLAR_TEST_SUITES += u-reftable-block
CLAR_TEST_SUITES += u-reftable-tree
CLAR_TEST_SUITES += u-strbuf
CLAR_TEST_SUITES += u-strcmp-offset
-@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
- CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
+@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
+ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
-UNIT_TEST_PROGRAMS += t-reftable-readwrite
UNIT_TEST_PROGRAMS += t-reftable-record
8: ac6fd74321 ! 8: 1515cf15b7 t/unit-tests: convert reftable record test to use clar
@@ Makefile: CLAR_TEST_SUITES += u-reftable-merged
CLAR_TEST_SUITES += u-reftable-tree
CLAR_TEST_SUITES += u-strbuf
CLAR_TEST_SUITES += u-strcmp-offset
-@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
- CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
+@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
+ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
-UNIT_TEST_PROGRAMS += t-reftable-record
UNIT_TEST_PROGRAMS += t-reftable-stack
9: 5bc6a599c6 ! 9: dcbb2b6e56 t/unit-tests: convert reftable stack test to use clar
@@ Makefile: CLAR_TEST_SUITES += u-reftable-pq
CLAR_TEST_SUITES += u-reftable-tree
CLAR_TEST_SUITES += u-strbuf
CLAR_TEST_SUITES += u-strcmp-offset
-@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
- CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
+@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
+ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
-UNIT_TEST_PROGRAMS += t-reftable-stack
UNIT_TEST_PROGS = $(patsubst %,$(UNIT_TEST_BIN)/%$X,$(UNIT_TEST_PROGRAMS))
UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/test-lib.o
-
+ UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
## t/meson.build ##
@@ t/meson.build: clar_test_suites = [
1: 304d17fef8 ! 10: 79aa0145aa t/unit-tests: adapt lib-reftable{c,h} helper functions to clar
@@ Commit message
Adapt functions in lib-reftable.{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.
+ framework, which requires them. This change migrates the helper
+ functions back into `lib-reftable.{c,h}`.
Signed-off-by: Seyi Kuforiji <kuforiji98@gmail.com>
@@ Makefile: CLAR_TEST_SUITES += u-urlmatch-normalization
+CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
+CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
- UNIT_TEST_PROGRAMS += t-reftable-basics
- UNIT_TEST_PROGRAMS += t-reftable-block
-@@ Makefile: UNIT_TEST_PROGRAMS += t-reftable-record
- UNIT_TEST_PROGRAMS += t-reftable-stack
UNIT_TEST_PROGS = $(patsubst %,$(UNIT_TEST_BIN)/%$X,$(UNIT_TEST_PROGRAMS))
UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/test-lib.o
-UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
@@ t/unit-tests/lib-reftable.h
struct reftable_ref_record *refs,
size_t nrecords,
struct reftable_log_record *logs,
+
+ ## t/unit-tests/unit-test.c ##
+@@
+ #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);
+- 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);
+-
+- if (nrefs) {
+- ret = reftable_writer_add_refs(writer, refs, nrefs);
+- cl_assert_equal_i(ret, 0);
+- }
+-
+- if (nlogs) {
+- ret = reftable_writer_add_logs(writer, logs, nlogs);
+- cl_assert_equal_i(ret, 0);
+- }
+-
+- ret = reftable_writer_close(writer);
+- cl_assert_equal_i(ret, 0);
+-
+- stats = reftable_writer_stats(writer);
+- for (size_t i = 0; i < (size_t)stats->ref_stats.blocks; i++) {
+- size_t off = i * (opts.block_size ? opts.block_size
+- : DEFAULT_BLOCK_SIZE);
+- if (!off)
+- off = header_size(opts.hash_id == REFTABLE_HASH_SHA256 ? 2 : 1);
+- cl_assert(buf->buf[off] == 'r');
+- }
+-
+- if (nrefs)
+- cl_assert(stats->ref_stats.blocks > 0);
+- if (nlogs)
+- cl_assert(stats->log_stats.blocks > 0);
+-
+- reftable_writer_free(writer);
+-}
+-
+ static const char * const unit_test_usage[] = {
+ N_("unit-test [<options>]"),
+ NULL,
+
+ ## t/unit-tests/unit-test.h ##
+@@
+ #include "git-compat-util.h"
+ #include "clar/clar.h"
+ #include "clar-decls.h"
+-#include "git-compat-util.h"
+-#include "reftable/reftable-writer.h"
+ #include "strbuf.h"
+
+-struct reftable_buf;
+-
+-void cl_reftable_set_hash(uint8_t *p, int i, enum reftable_hash id);
+-
+-struct reftable_writer *cl_reftable_strbuf_writer(struct reftable_buf *buf,
+- struct reftable_write_options *opts);
+-
+-void cl_reftable_write_to_buf(struct reftable_buf *buf,
+- struct reftable_ref_record *refs,
+- size_t nrecords,
+- struct reftable_log_record *logs,
+- size_t nlogs,
+- struct reftable_write_options *opts);
+-
+ #define cl_failf(fmt, ...) do { \
+ char desc[4096]; \
+ snprintf(desc, sizeof(desc), fmt, __VA_ARGS__); \
--
2.43.0
next reply other threads:[~2025-04-29 17:53 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-29 17:52 Seyi Kuforiji [this message]
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
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=20250429175302.23724-1-kuforiji98@gmail.com \
--to=kuforiji98@gmail.com \
--cc=git@vger.kernel.org \
--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).