git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 00/10] t/unit-tests: convert unit-tests to use clar

From
Seyi Kuforiji <kuforiji98@gmail.com>
Date
Apr 29, 2025, 17:52 UTC
Message-ID
<20250429175302.23724-1-kuforiji98@gmail.com>
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: Seyi Kuforiji
Message 1 of 31 in “t/unit-tests: convert unit-tests to use clar”
  1. 00/10 t/unit-tests: convert unit-tests to use clarSeyi Kuforiji, Apr 29, 2025
  2. 01/10 t/unit-tests: implement reftable test helper functions in unit-test.{c,h}Seyi Kuforiji, Apr 29, 2025
  3. Junio C HamanoApr 29, 2025
  4. Patrick SteinhardtMay 2, 2025
  5. Patrick SteinhardtMay 2, 2025
  6. 02/10 t/unit-tests: convert reftable basics test to use clar test frameworkSeyi Kuforiji, Apr 29, 2025
  7. Patrick SteinhardtMay 2, 2025
  8. 03/10 t/unit-tests: convert reftable block test to use clarSeyi Kuforiji, Apr 29, 2025
  9. Patrick SteinhardtMay 2, 2025
  10. Seyi ChamberMay 5, 2025
  11. Patrick SteinhardtMay 5, 2025
  12. Junio C HamanoMay 5, 2025
  13. Patrick SteinhardtMay 6, 2025
  14. 04/10 t/unit-tests: convert reftable merged test to use clarSeyi Kuforiji, Apr 29, 2025
  15. Patrick SteinhardtMay 2, 2025
  16. 05/10 t/unit-tests: convert reftable pq test to use clarSeyi Kuforiji, Apr 29, 2025
  17. 06/10 t/unit-tests: convert reftable reader test to use clarSeyi Kuforiji, Apr 29, 2025
  18. Patrick SteinhardtMay 2, 2025
  19. 07/10 t/unit-tests: convert reftable readwrite test to use clarSeyi Kuforiji, Apr 29, 2025
  20. Patrick SteinhardtMay 2, 2025
  21. 08/10 t/unit-tests: convert reftable record test to use clarSeyi Kuforiji, Apr 29, 2025
  22. 09/10 t/unit-tests: convert reftable stack test to use clarSeyi Kuforiji, Apr 29, 2025
  23. Patrick SteinhardtMay 2, 2025
  24. Seyi ChamberMay 5, 2025
  25. Patrick SteinhardtMay 5, 2025
  26. 10/10 t/unit-tests: adapt lib-reftable{c,h} helper functions to clarSeyi Kuforiji, Apr 29, 2025
  27. Patrick SteinhardtMay 2, 2025
  28. Seyi ChamberMay 5, 2025
  29. Patrick SteinhardtMay 5, 2025
  30. Seyi ChamberMay 26, 2025
  31. Patrick SteinhardtMay 26, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.