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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 v3:
 - some code refactoring based on review, which includes initial creation
 of reftable helper functions to
 t/unit-tests/lib-reftable-clar-test.{c,h} files in the initial commit

Thanks
Seyi

Signed-off-by: Seyi Kuforiji <kuforiji98@xxxxxxxxx>

Seyi Kuforiji (10):
  t/unit-tests: implement clar specific reftable test helper functions
  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 table 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: finalize migration of reftable-related tests

 Makefile                                      |  22 +-
 t/Makefile                                    |   1 -
 t/meson.build                                 |  42 +-
 t/unit-tests/lib-reftable.c                   |  35 +-
 t/unit-tests/lib-reftable.h                   |  15 +-
 t/unit-tests/t-reftable-basics.c              | 219 ------
 t/unit-tests/u-reftable-basics.c              | 227 ++++++
 ...{t-reftable-block.c => u-reftable-block.c} | 164 ++--
 ...-reftable-merged.c => u-reftable-merged.c} | 160 ++--
 .../{t-reftable-pq.c => u-reftable-pq.c}      |  59 +-
 ...ble-readwrite.c => u-reftable-readwrite.c} | 384 ++++-----
 ...-reftable-record.c => u-reftable-record.c} | 217 +++---
 ...{t-reftable-stack.c => u-reftable-stack.c} | 726 +++++++-----------
 ...{t-reftable-table.c => u-reftable-table.c} |  71 +-
 14 files changed, 1021 insertions(+), 1321 deletions(-)
 delete mode 100644 t/unit-tests/t-reftable-basics.c
 create mode 100644 t/unit-tests/u-reftable-basics.c
 rename t/unit-tests/{t-reftable-block.c => u-reftable-block.c} (74%)
 rename t/unit-tests/{t-reftable-merged.c => u-reftable-merged.c} (77%)
 rename t/unit-tests/{t-reftable-pq.c => u-reftable-pq.c} (64%)
 rename t/unit-tests/{t-reftable-readwrite.c => u-reftable-readwrite.c} (69%)
 rename t/unit-tests/{t-reftable-record.c => u-reftable-record.c} (63%)
 rename t/unit-tests/{t-reftable-stack.c => u-reftable-stack.c} (59%)
 rename t/unit-tests/{t-reftable-table.c => u-reftable-table.c} (76%)

Range-diff against v2:
 1:  d85c5694ca !  1:  53a64f5551 t/unit-tests: implement reftable test helper functions in unit-test.{c,h}
    @@ Metadata
     Author: Seyi Kuforiji <kuforiji98@xxxxxxxxx>
     
      ## Commit message ##
    -    t/unit-tests: implement reftable test helper functions in unit-test.{c,h}
    +    t/unit-tests: implement clar specific reftable test helper functions
     
         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
    +    required for the reftable-related test files to run. 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.
    +    Implement equivalent helper functions in `lib-reftable-clar.{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@xxxxxxxxx>
     
    - ## t/unit-tests/unit-test.c ##
    + ## Makefile ##
    +@@ Makefile: CLAR_TEST_OBJS = $(patsubst %,$(UNIT_TEST_DIR)/%.o,$(CLAR_TEST_SUITES))
    + 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
    ++CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable-clar.o
    + 
    + UNIT_TEST_PROGRAMS += t-reftable-basics
    + UNIT_TEST_PROGRAMS += t-reftable-block
    +
    + ## t/meson.build ##
    +@@ t/meson.build: clar_test_suites = [
    + clar_sources = [
    +   'unit-tests/clar/clar.c',
    +   'unit-tests/unit-test.c',
    +-  'unit-tests/lib-oid.c'
    ++  'unit-tests/lib-oid.c',
    ++  'unit-tests/lib-reftable-clar.c'
    + ]
    + 
    + clar_decls_h = custom_target(
    +
    + ## t/unit-tests/lib-reftable-clar.c (new) ##
     @@
    - #include "unit-test.h"
    - #include "hex.h"
    - #include "parse-options.h"
    ++#include "unit-test.h"
    ++#include "lib-reftable-clar.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"
    - 
    ++#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));
    @@ t/unit-tests/unit-test.c
     +	struct reftable_writer *writer;
     +	int ret = reftable_writer_new(&writer, &strbuf_writer_write, &strbuf_writer_flush,
     +				      buf, opts);
    -+	cl_assert(ret == 0);
    ++	cl_assert(!ret);
     +	return writer;
     +}
     +
    @@ t/unit-tests/unit-test.c
     +	}
     +
     +	writer = cl_reftable_strbuf_writer(buf, &opts);
    -+	reftable_writer_set_limits(writer, min, max);
    ++	ret = reftable_writer_set_limits(writer, min, max);
    ++	cl_assert_equal_i(ret, 0);
     +
     +	if (nrefs) {
     +		ret = reftable_writer_add_refs(writer, refs, nrefs);
    @@ t/unit-tests/unit-test.c
     +
     +	reftable_writer_free(writer);
     +}
    -+
    - static const char * const unit_test_usage[] = {
    - 	N_("unit-test [<options>]"),
    - 	NULL,
     
    - ## t/unit-tests/unit-test.h ##
    + ## t/unit-tests/lib-reftable-clar.h (new) ##
     @@
    - #include "git-compat-util.h"
    - #include "clar/clar.h"
    - #include "clar-decls.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"
    - 
    ++#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);
    ++						  struct reftable_write_options *opts);
     +
     +void cl_reftable_write_to_buf(struct reftable_buf *buf,
     +			     struct reftable_ref_record *refs,
    @@ t/unit-tests/unit-test.h
     +			     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:  d24faa0176 !  2:  fec29d94d8 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)/clar/clar.o
    - CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
    +@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
      CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
    + CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable-clar.o
      
     -UNIT_TEST_PROGRAMS += t-reftable-basics
      UNIT_TEST_PROGRAMS += t-reftable-block
    @@ t/unit-tests/u-reftable-basics.c (new)
     +*/
     +
     +#include "unit-test.h"
    ++#include "lib-reftable-clar.h"
     +#include "reftable/basics.h"
     +
     +struct integer_needle_lesseq_args {
    @@ t/unit-tests/u-reftable-basics.c (new)
     +				&integer_needle_lesseq, &args);
     +		cl_assert_equal_i(idx, testcases[i].expected_idx);
     +	}
    -+
     +}
     +
     +void test_reftable_basics__names_length(void)
    @@ t/unit-tests/u-reftable-basics.c (new)
     +	free_names(out);
     +}
     +
    ++void test_reftable_basics__parse_names_drop_empty_string(void)
    ++{
    ++	char in[] = "a\n\nb\n";
    ++	char **out = parse_names(in, strlen(in));
    ++	cl_assert(out != NULL);
    ++	cl_assert_equal_s(out[0], "a");
    ++	/* simply '\n' should be dropped as empty string */
    ++	cl_assert_equal_s(out[1], "b");
    ++	cl_assert(out[2] == NULL);
    ++	free_names(out);
    ++}
    ++
     +void test_reftable_basics__common_prefix_size(void)
     +{
     +	struct reftable_buf a = REFTABLE_BUF_INIT;
    @@ t/unit-tests/u-reftable-basics.c (new)
     +	};
     +
     +	for (size_t i = 0; i < ARRAY_SIZE(cases); i++) {
    -+		reftable_buf_reset(&a);
    -+		reftable_buf_reset(&b);
     +		cl_assert_equal_i(reftable_buf_addstr(&a, cases[i].a), 0);
     +		cl_assert_equal_i(reftable_buf_addstr(&b, cases[i].b), 0);
     +		cl_assert_equal_i(common_prefix_size(&a, &b), cases[i].want);
    ++		reftable_buf_reset(&a);
    ++		reftable_buf_reset(&b);
     +	}
     +	reftable_buf_release(&a);
     +	reftable_buf_release(&b);
     +}
     +
    ++void test_reftable_basics__put_get_be64(void)
    ++{
    ++	uint64_t in = 0x1122334455667788;
    ++	uint8_t dest[8];
    ++	uint64_t out;
    ++	reftable_put_be64(dest, in);
    ++	out = reftable_get_be64(dest);
    ++	cl_assert(in == out);
    ++}
    ++
    ++void test_reftable_basics__put_get_be32(void)
    ++{
    ++	uint32_t in = 0x11223344;
    ++	uint8_t dest[4];
    ++	uint32_t out;
    ++	reftable_put_be32(dest, in);
    ++	out = reftable_get_be32(dest);
    ++	cl_assert_equal_i(in, out);
    ++}
    ++
     +void test_reftable_basics__put_get_be24(void)
     +{
     +	uint32_t in = 0x112233;
    @@ t/unit-tests/u-reftable-basics.c (new)
     +	cl_assert_equal_i(in, out);
     +}
     +
    -+void test_reftable_basics__grow_alloc(void)
    ++void test_reftable_basics__alloc_grow(void)
     +{
     +	int *arr = NULL, *old_arr;
     +	size_t alloc = 0, old_alloc;
    @@ t/unit-tests/u-reftable-basics.c (new)
     +	reftable_free(arr);
     +}
     +
    -+void test_reftable_basics__grow_alloc_or_null(void)
    ++void test_reftable_basics__alloc_grow_or_null(void)
     +{
     +	int *arr = NULL;
     +	size_t alloc = 0, old_alloc;
 3:  d9eb47645b !  3:  57d7541caa 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)/clar/clar.o
    - CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
    +@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
      CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
    + CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable-clar.o
      
     -UNIT_TEST_PROGRAMS += t-reftable-block
      UNIT_TEST_PROGRAMS += t-reftable-merged
      UNIT_TEST_PROGRAMS += t-reftable-pq
    - UNIT_TEST_PROGRAMS += t-reftable-reader
    + UNIT_TEST_PROGRAMS += t-reftable-readwrite
     
      ## t/meson.build ##
     @@ t/meson.build: clar_test_suites = [
    @@ t/meson.build: clar_unit_tests = executable('unit-tests',
     -  'unit-tests/t-reftable-block.c',
        'unit-tests/t-reftable-merged.c',
        'unit-tests/t-reftable-pq.c',
    -   'unit-tests/t-reftable-reader.c',
    +   'unit-tests/t-reftable-readwrite.c',
     
      ## t/unit-tests/t-reftable-block.c => t/unit-tests/u-reftable-block.c ##
     @@ t/unit-tests/u-reftable-block.c: license that can be found in the LICENSE file or at
    @@ t/unit-tests/u-reftable-block.c: license that can be found in the LICENSE file o
      
     -#include "test-lib.h"
     +#include "unit-test.h"
    ++#include "lib-reftable-clar.h"
      #include "reftable/block.h"
      #include "reftable/blocksource.h"
      #include "reftable/constants.h"
    @@ t/unit-tests/u-reftable-block.c: license that can be found in the LICENSE file o
      	const int header_off = 21; /* random */
      	struct reftable_record recs[30];
     @@ t/unit-tests/u-reftable-block.c: static void t_ref_block_read_write(void)
    - 	struct reftable_buf want = REFTABLE_BUF_INIT, buf = REFTABLE_BUF_INIT;
    - 
    - 	REFTABLE_CALLOC_ARRAY(block.data, block_size);
    --	check(block.data != NULL);
    -+	cl_assert(block.data != NULL);
    - 	block.len = block_size;
    - 	block_source_from_buf(&block.source ,&buf);
    - 	ret = block_writer_init(&bw, BLOCK_TYPE_REF, block.data, block_size,
    + 	struct reftable_buf block_data = REFTABLE_BUF_INIT;
    + 
    + 	REFTABLE_CALLOC_ARRAY(block_data.buf, block_size);
    +-	check(block_data.buf != NULL);
    ++	cl_assert(block_data.buf != NULL);
    + 	block_data.len = block_size;
    + 
    +-	ret = block_writer_init(&bw, REFTABLE_BLOCK_TYPE_REF, (uint8_t *) block_data.buf, block_size,
    ++	ret = block_writer_init(&bw, REFTABLE_BLOCK_TYPE_REF,
    ++				(uint8_t *) block_data.buf, block_size,
      				header_off, hash_size(REFTABLE_HASH_SHA1));
     -	check(!ret);
     +	cl_assert(ret == 0);
    @@ t/unit-tests/u-reftable-block.c: static void t_ref_block_read_write(void)
      	}
      
      	for (i = 0; i < N; i++) {
    -@@ t/unit-tests/u-reftable-block.c: static void t_ref_block_read_write(void)
      		reftable_record_key(&recs[i], &want);
      
    - 		ret = block_iter_seek_key(&it, &br, &want);
    + 		ret = block_iter_seek_key(&it, &want);
     -		check_int(ret, ==, 0);
     +		cl_assert_equal_i(ret, 0);
      
    @@ t/unit-tests/u-reftable-block.c: static void t_ref_block_read_write(void)
     +		cl_assert_equal_i(reftable_record_equal(&recs[i], &rec, REFTABLE_HASH_SIZE_SHA1), 1);
      
      		want.len--;
    - 		ret = block_iter_seek_key(&it, &br, &want);
    + 		ret = block_iter_seek_key(&it, &want);
     -		check_int(ret, ==, 0);
     +		cl_assert_equal_i(ret, 0);
      
    @@ t/unit-tests/u-reftable-block.c: static void t_ref_block_read_write(void)
     +		cl_assert_equal_i(reftable_record_equal(&recs[10 * (i / 10)], &rec, REFTABLE_HASH_SIZE_SHA1), 1);
      	}
      
    - 	block_reader_release(&br);
    + 	reftable_block_release(&block);
     @@ t/unit-tests/u-reftable-block.c: static void t_ref_block_read_write(void)
      		reftable_record_release(&recs[i]);
      }
    @@ t/unit-tests/u-reftable-block.c: static void t_ref_block_read_write(void)
      	const int header_off = 21;
      	struct reftable_record recs[30];
     @@ t/unit-tests/u-reftable-block.c: static void t_log_block_read_write(void)
    - 	struct reftable_buf want = REFTABLE_BUF_INIT, buf = REFTABLE_BUF_INIT;
    - 
    - 	REFTABLE_CALLOC_ARRAY(block.data, block_size);
    --	check(block.data != NULL);
    -+	cl_assert(block.data != NULL);
    - 	block.len = block_size;
    - 	block_source_from_buf(&block.source ,&buf);
    - 	ret = block_writer_init(&bw, BLOCK_TYPE_LOG, block.data, block_size,
    + 	struct reftable_buf block_data = REFTABLE_BUF_INIT;
    + 
    + 	REFTABLE_CALLOC_ARRAY(block_data.buf, block_size);
    +-	check(block_data.buf != NULL);
    ++	cl_assert(block_data.buf != NULL);
    + 	block_data.len = block_size;
    + 
    + 	ret = block_writer_init(&bw, REFTABLE_BLOCK_TYPE_LOG, (uint8_t *) block_data.buf, block_size,
      				header_off, hash_size(REFTABLE_HASH_SHA1));
     -	check(!ret);
     +	cl_assert(ret == 0);
    @@ t/unit-tests/u-reftable-block.c: static void t_log_block_read_write(void)
      	}
      
      	for (i = 0; i < N; i++) {
    - 		block_iter_reset(&it);
      		reftable_buf_reset(&want);
     -		check(!reftable_buf_addstr(&want, recs[i].u.log.refname));
     +		cl_assert(reftable_buf_addstr(&want, recs[i].u.log.refname) == 0);
      
    - 		ret = block_iter_seek_key(&it, &br, &want);
    + 		ret = block_iter_seek_key(&it, &want);
     -		check_int(ret, ==, 0);
     +		cl_assert_equal_i(ret, 0);
      
    @@ t/unit-tests/u-reftable-block.c: static void t_log_block_read_write(void)
     +		cl_assert_equal_i(reftable_record_equal(&recs[i], &rec, REFTABLE_HASH_SIZE_SHA1), 1);
      
      		want.len--;
    - 		ret = block_iter_seek_key(&it, &br, &want);
    + 		ret = block_iter_seek_key(&it, &want);
     -		check_int(ret, ==, 0);
     +		cl_assert_equal_i(ret, 0);
      
    @@ t/unit-tests/u-reftable-block.c: static void t_log_block_read_write(void)
     +		cl_assert_equal_i(reftable_record_equal(&recs[10 * (i / 10)], &rec, REFTABLE_HASH_SIZE_SHA1), 1);
      	}
      
    - 	block_reader_release(&br);
    + 	reftable_block_release(&block);
     @@ t/unit-tests/u-reftable-block.c: static void t_log_block_read_write(void)
      		reftable_record_release(&recs[i]);
      }
    @@ t/unit-tests/u-reftable-block.c: static void t_log_block_read_write(void)
      	const int header_off = 21;
      	struct reftable_record recs[30];
     @@ t/unit-tests/u-reftable-block.c: static void t_obj_block_read_write(void)
    - 	struct reftable_buf want = REFTABLE_BUF_INIT, buf = REFTABLE_BUF_INIT;
    - 
    - 	REFTABLE_CALLOC_ARRAY(block.data, block_size);
    --	check(block.data != NULL);
    -+	cl_assert(block.data != NULL);
    - 	block.len = block_size;
    - 	block_source_from_buf(&block.source, &buf);
    - 	ret = block_writer_init(&bw, BLOCK_TYPE_OBJ, block.data, block_size,
    + 	struct reftable_buf block_data = REFTABLE_BUF_INIT;
    + 
    + 	REFTABLE_CALLOC_ARRAY(block_data.buf, block_size);
    +-	check(block_data.buf != NULL);
    ++	cl_assert(block_data.buf != NULL);
    + 	block_data.len = block_size;
    + 
    + 	ret = block_writer_init(&bw, REFTABLE_BLOCK_TYPE_OBJ, (uint8_t *) block_data.buf, block_size,
      				header_off, hash_size(REFTABLE_HASH_SHA1));
     -	check(!ret);
     +	cl_assert(ret == 0);
    @@ t/unit-tests/u-reftable-block.c: static void t_obj_block_read_write(void)
      	}
      
      	for (i = 0; i < N; i++) {
    -@@ t/unit-tests/u-reftable-block.c: static void t_obj_block_read_write(void)
      		reftable_record_key(&recs[i], &want);
      
    - 		ret = block_iter_seek_key(&it, &br, &want);
    + 		ret = block_iter_seek_key(&it, &want);
     -		check_int(ret, ==, 0);
     +		cl_assert_equal_i(ret, 0);
      
    @@ t/unit-tests/u-reftable-block.c: static void t_obj_block_read_write(void)
     +		cl_assert_equal_i(reftable_record_equal(&recs[i], &rec, REFTABLE_HASH_SIZE_SHA1), 1);
      	}
      
    - 	block_reader_release(&br);
    + 	reftable_block_release(&block);
     @@ t/unit-tests/u-reftable-block.c: static void t_obj_block_read_write(void)
      		reftable_record_release(&recs[i]);
      }
    @@ t/unit-tests/u-reftable-block.c: static void t_obj_block_read_write(void)
      	const int header_off = 21;
      	struct reftable_record recs[30];
     @@ t/unit-tests/u-reftable-block.c: static void t_index_block_read_write(void)
    - 	struct reftable_buf want = REFTABLE_BUF_INIT, buf = REFTABLE_BUF_INIT;
    - 
    - 	REFTABLE_CALLOC_ARRAY(block.data, block_size);
    --	check(block.data != NULL);
    -+	cl_assert(block.data != NULL);
    - 	block.len = block_size;
    - 	block_source_from_buf(&block.source, &buf);
    - 	ret = block_writer_init(&bw, BLOCK_TYPE_INDEX, block.data, block_size,
    + 	struct reftable_buf block_data = REFTABLE_BUF_INIT;
    + 
    + 	REFTABLE_CALLOC_ARRAY(block_data.buf, block_size);
    +-	check(block_data.buf != NULL);
    ++	cl_assert(block_data.buf != NULL);
    + 	block_data.len = block_size;
    + 
    + 	ret = block_writer_init(&bw, REFTABLE_BLOCK_TYPE_INDEX, (uint8_t *) block_data.buf, block_size,
      				header_off, hash_size(REFTABLE_HASH_SHA1));
     -	check(!ret);
     +	cl_assert(ret == 0);
    @@ t/unit-tests/u-reftable-block.c: static void t_index_block_read_write(void)
     @@ t/unit-tests/u-reftable-block.c: static void t_index_block_read_write(void)
      
      		reftable_buf_init(&recs[i].u.idx.last_key);
    - 		recs[i].type = BLOCK_TYPE_INDEX;
    + 		recs[i].type = REFTABLE_BLOCK_TYPE_INDEX;
     -		check(!reftable_buf_addstr(&recs[i].u.idx.last_key, buf));
    -+		cl_assert(reftable_buf_addstr(&recs[i].u.idx.last_key, buf) == 0);
    ++		cl_assert(!reftable_buf_addstr(&recs[i].u.idx.last_key, buf));
      		recs[i].u.idx.offset = i;
      
      		ret = block_writer_add(&bw, &recs[i]);
    @@ t/unit-tests/u-reftable-block.c: static void t_index_block_read_write(void)
      	}
      
      	for (i = 0; i < N; i++) {
    -@@ t/unit-tests/u-reftable-block.c: static void t_index_block_read_write(void)
      		reftable_record_key(&recs[i], &want);
      
    - 		ret = block_iter_seek_key(&it, &br, &want);
    + 		ret = block_iter_seek_key(&it, &want);
     -		check_int(ret, ==, 0);
     +		cl_assert_equal_i(ret, 0);
      
    @@ t/unit-tests/u-reftable-block.c: static void t_index_block_read_write(void)
     +		cl_assert_equal_i(reftable_record_equal(&recs[i], &rec, REFTABLE_HASH_SIZE_SHA1), 1);
      
      		want.len--;
    - 		ret = block_iter_seek_key(&it, &br, &want);
    + 		ret = block_iter_seek_key(&it, &want);
     -		check_int(ret, ==, 0);
     +		cl_assert_equal_i(ret, 0);
      
    @@ t/unit-tests/u-reftable-block.c: static void t_index_block_read_write(void)
     +		cl_assert_equal_i(reftable_record_equal(&recs[10 * (i / 10)], &rec, REFTABLE_HASH_SIZE_SHA1), 1);
      	}
      
    - 	block_reader_release(&br);
    + 	reftable_block_release(&block);
     @@ t/unit-tests/u-reftable-block.c: static void t_index_block_read_write(void)
    - 	for (i = 0; i < N; i++)
      		reftable_record_release(&recs[i]);
      }
    + 
    +-static void t_block_iterator(void)
    ++void test_reftable_block__iterator(void)
    + {
    + 	struct reftable_block_source source = { 0 };
    + 	struct block_writer writer = {
    +@@ t/unit-tests/u-reftable-block.c: static void t_block_iterator(void)
    + 
    + 	data.len = 1024;
    + 	REFTABLE_CALLOC_ARRAY(data.buf, data.len);
    +-	check(data.buf != NULL);
    ++	cl_assert(data.buf != NULL);
    + 
    +-	err = block_writer_init(&writer, REFTABLE_BLOCK_TYPE_REF, (uint8_t *) data.buf, data.len,
    ++	err = block_writer_init(&writer, REFTABLE_BLOCK_TYPE_REF,
    ++				(uint8_t *) data.buf, data.len,
    + 				0, hash_size(REFTABLE_HASH_SHA1));
    +-	check(!err);
    ++	cl_assert(!err);
    + 
    + 	for (size_t i = 0; i < ARRAY_SIZE(expected_refs); i++) {
    + 		expected_refs[i] = (struct reftable_record) {
    +@@ t/unit-tests/u-reftable-block.c: static void t_block_iterator(void)
    + 		memset(expected_refs[i].u.ref.value.val1, i, REFTABLE_HASH_SIZE_SHA1);
    + 
    + 		err = block_writer_add(&writer, &expected_refs[i]);
    +-		check_int(err, ==, 0);
    ++		cl_assert_equal_i(err, 0);
    + 	}
    + 
    + 	err = block_writer_finish(&writer);
    +-	check_int(err, >, 0);
    ++	cl_assert(err > 0);
    + 
    + 	block_source_from_buf(&source, &data);
    + 	reftable_block_init(&block, &source, 0, 0, data.len,
    + 			    REFTABLE_HASH_SIZE_SHA1, REFTABLE_BLOCK_TYPE_REF);
    + 
    + 	err = reftable_block_init_iterator(&block, &it);
    +-	check_int(err, ==, 0);
    ++	cl_assert_equal_i(err, 0);
    + 
    + 	for (size_t i = 0; ; i++) {
    + 		err = reftable_iterator_next_ref(&it, &ref);
    + 		if (err > 0) {
    +-			check_int(i, ==, ARRAY_SIZE(expected_refs));
    ++			cl_assert_equal_i(i, ARRAY_SIZE(expected_refs));
    + 			break;
    + 		}
    +-		check_int(err, ==, 0);
    ++		cl_assert_equal_i(err, 0);
    + 
    +-		check(reftable_ref_record_equal(&ref, &expected_refs[i].u.ref,
    +-						REFTABLE_HASH_SIZE_SHA1));
    ++		cl_assert(reftable_ref_record_equal(&ref,
    ++						    &expected_refs[i].u.ref, REFTABLE_HASH_SIZE_SHA1));
    + 	}
    + 
    + 	err = reftable_iterator_seek_ref(&it, "refs/heads/does-not-exist");
    +-	check_int(err, ==, 0);
    ++	cl_assert_equal_i(err, 0);
    + 	err = reftable_iterator_next_ref(&it, &ref);
    +-	check_int(err, ==, 1);
    ++	cl_assert_equal_i(err, 1);
    + 
    + 	err = reftable_iterator_seek_ref(&it, "refs/heads/branch-13");
    +-	check_int(err, ==, 0);
    ++	cl_assert_equal_i(err, 0);
    + 	err = reftable_iterator_next_ref(&it, &ref);
    +-	check_int(err, ==, 0);
    +-	check(reftable_ref_record_equal(&ref, &expected_refs[13].u.ref,
    +-					REFTABLE_HASH_SIZE_SHA1));
    ++	cl_assert_equal_i(err, 0);
    ++	cl_assert(reftable_ref_record_equal(&ref,
    ++					    &expected_refs[13].u.ref,REFTABLE_HASH_SIZE_SHA1));
    + 
    + 	for (size_t i = 0; i < ARRAY_SIZE(expected_refs); i++)
    + 		reftable_free(expected_refs[i].u.ref.refname);
    +@@ t/unit-tests/u-reftable-block.c: static void t_block_iterator(void)
    + 	block_writer_release(&writer);
    + 	reftable_buf_release(&data);
    + }
     -
     -int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
     -{
    @@ t/unit-tests/u-reftable-block.c: static void t_index_block_read_write(void)
     -	TEST(t_log_block_read_write(), "read-write operations on log blocks work");
     -	TEST(t_obj_block_read_write(), "read-write operations on obj blocks work");
     -	TEST(t_ref_block_read_write(), "read-write operations on ref blocks work");
    +-	TEST(t_block_iterator(), "block iterator works");
     -
     -	return test_done();
     -}
 4:  6ffc7cdfc6 !  4:  db11c0eb30 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)/clar/clar.o
    - CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
    +@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
      CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
    + CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable-clar.o
      
     -UNIT_TEST_PROGRAMS += t-reftable-merged
      UNIT_TEST_PROGRAMS += t-reftable-pq
    - UNIT_TEST_PROGRAMS += t-reftable-reader
      UNIT_TEST_PROGRAMS += t-reftable-readwrite
    + UNIT_TEST_PROGRAMS += t-reftable-record
     
      ## t/meson.build ##
     @@ t/meson.build: clar_test_suites = [
    @@ t/meson.build: clar_unit_tests = executable('unit-tests',
      unit_test_programs = [
     -  'unit-tests/t-reftable-merged.c',
        'unit-tests/t-reftable-pq.c',
    -   'unit-tests/t-reftable-reader.c',
        'unit-tests/t-reftable-readwrite.c',
    +   'unit-tests/t-reftable-record.c',
     
      ## t/unit-tests/t-reftable-merged.c => t/unit-tests/u-reftable-merged.c ##
     @@ t/unit-tests/u-reftable-merged.c: license that can be found in the LICENSE file or at
    @@ t/unit-tests/u-reftable-merged.c: license that can be found in the LICENSE file
      */
      
     -#include "test-lib.h"
    +-#include "lib-reftable.h"
     +#include "unit-test.h"
    - #include "lib-reftable.h"
    ++#include "lib-reftable-clar.h"
      #include "reftable/blocksource.h"
      #include "reftable/constants.h"
    + #include "reftable/merged.h"
     @@ t/unit-tests/u-reftable-merged.c: merged_table_from_records(struct reftable_ref_record **refs,
      	int err;
      
    - 	REFTABLE_CALLOC_ARRAY(*readers, n);
    --	check(*readers != NULL);
    -+	cl_assert(*readers != NULL);
    + 	REFTABLE_CALLOC_ARRAY(*tables, n);
    +-	check(*tables != NULL);
    ++	cl_assert(*tables != NULL);
      	REFTABLE_CALLOC_ARRAY(*source, n);
     -	check(*source != NULL);
     +	cl_assert(*source != NULL);
    @@ t/unit-tests/u-reftable-merged.c: merged_table_from_records(struct reftable_ref_
     +		cl_reftable_write_to_buf(&buf[i], refs[i], sizes[i], NULL, 0, &opts);
      		block_source_from_buf(&(*source)[i], &buf[i]);
      
    - 		err = reftable_reader_new(&(*readers)[i], &(*source)[i],
    - 					  "name");
    + 		err = reftable_table_new(&(*tables)[i], &(*source)[i],
    + 					 "name");
     -		check(!err);
    -+		cl_assert(err == 0);
    ++		cl_assert(!err);
      	}
      
    - 	err = reftable_merged_table_new(&mt, *readers, n, REFTABLE_HASH_SHA1);
    + 	err = reftable_merged_table_new(&mt, *tables, n, REFTABLE_HASH_SHA1);
     -	check(!err);
    -+	cl_assert(err == 0);
    ++	cl_assert(!err);
      	return mt;
      }
      
    -@@ t/unit-tests/u-reftable-merged.c: static void readers_destroy(struct reftable_reader **readers, const size_t n)
    - 	reftable_free(readers);
    +@@ t/unit-tests/u-reftable-merged.c: static void tables_destroy(struct reftable_table **tables, const size_t n)
    + 	reftable_free(tables);
      }
      
     -static void t_merged_single_record(void)
    -+void test_reftable_merged__merged_single_record(void)
    ++void test_reftable_merged__single_record(void)
      {
      	struct reftable_ref_record r1[] = { {
      		.refname = (char *) "b",
     @@ t/unit-tests/u-reftable-merged.c: static void t_merged_single_record(void)
      	int err;
      
    - 	err = merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
    + 	err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
     -	check(!err);
    -+	cl_assert(err == 0);
    ++	cl_assert(!err);
      	err = reftable_iterator_seek_ref(&it, "a");
     -	check(!err);
     +	cl_assert(err == 0);
    @@ t/unit-tests/u-reftable-merged.c: static void t_merged_single_record(void)
     -	check(!err);
     -	check(reftable_ref_record_equal(&r2[0], &ref, REFTABLE_HASH_SIZE_SHA1));
     +	cl_assert(err == 0);
    -+	cl_assert(reftable_ref_record_equal(&r2[0], &ref, REFTABLE_HASH_SIZE_SHA1) != 0);
    ++	cl_assert(reftable_ref_record_equal(&r2[0], &ref,
    ++					    REFTABLE_HASH_SIZE_SHA1) != 0);
      	reftable_ref_record_release(&ref);
      	reftable_iterator_destroy(&it);
    - 	readers_destroy(readers, 3);
    + 	tables_destroy(tables, 3);
     @@ t/unit-tests/u-reftable-merged.c: static void t_merged_single_record(void)
      	reftable_free(bs);
      }
      
     -static void t_merged_refs(void)
    -+void test_reftable_merged__merged_refs(void)
    ++void test_reftable_merged__refs(void)
      {
      	struct reftable_ref_record r1[] = {
      		{
     @@ t/unit-tests/u-reftable-merged.c: static void t_merged_refs(void)
      	size_t i;
      
    - 	err = merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
    + 	err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
     -	check(!err);
    -+	cl_assert(err == 0);
    ++	cl_assert(!err);
      	err = reftable_iterator_seek_ref(&it, "a");
     -	check(!err);
     -	check_int(reftable_merged_table_hash_id(mt), ==, REFTABLE_HASH_SHA1);
    @@ t/unit-tests/u-reftable-merged.c: static void t_merged_refs(void)
     -		check(reftable_ref_record_equal(want[i], &out[i],
     -						 REFTABLE_HASH_SIZE_SHA1));
     +		cl_assert(reftable_ref_record_equal(want[i], &out[i],
    -+											REFTABLE_HASH_SIZE_SHA1) != 0);
    ++						    REFTABLE_HASH_SIZE_SHA1) != 0);
      	for (i = 0; i < len; i++)
      		reftable_ref_record_release(&out[i]);
      	reftable_free(out);
    @@ t/unit-tests/u-reftable-merged.c: static void t_merged_refs(void)
      }
      
     -static void t_merged_seek_multiple_times(void)
    -+void test_reftable_merged__merged_seek_multiple_times(void)
    ++void test_reftable_merged__seek_multiple_times(void)
      {
      	struct reftable_ref_record r1[] = {
      		{
    @@ t/unit-tests/u-reftable-merged.c: static void t_merged_seek_multiple_times(void)
     -		check(err == 1);
     +		cl_assert(reftable_iterator_next_ref(&it, &rec) == 0);
     +		cl_assert_equal_i(reftable_ref_record_equal(&rec, &r1[1],
    -+													REFTABLE_HASH_SIZE_SHA1), 1);
    ++							    REFTABLE_HASH_SIZE_SHA1), 1);
      
     -		err = reftable_iterator_next_ref(&it, &rec);
     -		check(!err);
    @@ t/unit-tests/u-reftable-merged.c: static void t_merged_seek_multiple_times(void)
     -		check(err == 1);
     +		cl_assert(reftable_iterator_next_ref(&it, &rec) == 0);
     +		cl_assert_equal_i(reftable_ref_record_equal(&rec, &r2[1],
    -+													REFTABLE_HASH_SIZE_SHA1), 1);
    ++							    REFTABLE_HASH_SIZE_SHA1), 1);
      
     -		err = reftable_iterator_next_ref(&it, &rec);
     -		check(err > 0);
    @@ t/unit-tests/u-reftable-merged.c: static void t_merged_seek_multiple_times(void)
      }
      
     -static void t_merged_seek_multiple_times_without_draining(void)
    -+void test_reftable_merged__merged_seek_multiple_times_no_drain(void)
    ++void test_reftable_merged__seek_multiple_times_no_drain(void)
      {
      	struct reftable_ref_record r1[] = {
      		{
    @@ t/unit-tests/u-reftable-merged.c: static void t_merged_seek_multiple_times_witho
      	struct reftable_merged_table *mt;
     -	int err;
      
    - 	mt = merged_table_from_records(refs, &sources, &readers, sizes, bufs, 2);
    - 	merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
    + 	mt = merged_table_from_records(refs, &sources, &tables, sizes, bufs, 2);
    + 	merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
      
     -	err = reftable_iterator_seek_ref(&it, "b");
     -	check(!err);
    @@ t/unit-tests/u-reftable-merged.c: static void t_merged_seek_multiple_times_witho
     +	cl_assert(reftable_iterator_seek_ref(&it, "b") == 0);
     +	cl_assert(reftable_iterator_next_ref(&it, &rec) == 0);
     +	cl_assert_equal_i(reftable_ref_record_equal(&rec, &r2[0],
    -+												REFTABLE_HASH_SIZE_SHA1), 1);
    ++						    REFTABLE_HASH_SIZE_SHA1), 1);
      
     -	err = reftable_iterator_seek_ref(&it, "a");
     -	check(!err);
    @@ t/unit-tests/u-reftable-merged.c: static void t_merged_seek_multiple_times_witho
     +	cl_assert(reftable_iterator_seek_ref(&it, "a") == 0);
     +	cl_assert(reftable_iterator_next_ref(&it, &rec) == 0);
     +	cl_assert_equal_i(reftable_ref_record_equal(&rec, &r1[0],
    -+												REFTABLE_HASH_SIZE_SHA1), 1);
    ++						    REFTABLE_HASH_SIZE_SHA1), 1);
      
      	for (size_t i = 0; i < ARRAY_SIZE(bufs); i++)
      		reftable_buf_release(&bufs[i]);
     @@ t/unit-tests/u-reftable-merged.c: merged_table_from_log_records(struct reftable_log_record **logs,
      	int err;
      
    - 	REFTABLE_CALLOC_ARRAY(*readers, n);
    --	check(*readers != NULL);
    -+	cl_assert(*readers != NULL);
    + 	REFTABLE_CALLOC_ARRAY(*tables, n);
    +-	check(*tables != NULL);
    ++	cl_assert(*tables != NULL);
      	REFTABLE_CALLOC_ARRAY(*source, n);
     -	check(*source != NULL);
     +	cl_assert(*source != NULL);
    @@ t/unit-tests/u-reftable-merged.c: merged_table_from_log_records(struct reftable_
     +		cl_reftable_write_to_buf(&buf[i], NULL, 0, logs[i], sizes[i], &opts);
      		block_source_from_buf(&(*source)[i], &buf[i]);
      
    - 		err = reftable_reader_new(&(*readers)[i], &(*source)[i],
    - 					  "name");
    + 		err = reftable_table_new(&(*tables)[i], &(*source)[i],
    + 					 "name");
     -		check(!err);
    -+		cl_assert(err == 0);
    ++		cl_assert(!err);
      	}
      
    --	err = reftable_merged_table_new(&mt, *readers, n, REFTABLE_HASH_SHA1);
    + 	err = reftable_merged_table_new(&mt, *tables, n, REFTABLE_HASH_SHA1);
     -	check(!err);
    -+	cl_assert(reftable_merged_table_new(&mt, *readers, n, REFTABLE_HASH_SHA1) == 0);
    ++	cl_assert(!err);
      	return mt;
      }
      
     -static void t_merged_logs(void)
    -+void test_reftable_merged__merged_logs(void)
    ++void test_reftable_merged__logs(void)
      {
      	struct reftable_log_record r1[] = {
      		{
     @@ t/unit-tests/u-reftable-merged.c: static void t_merged_logs(void)
      	struct reftable_merged_table *mt = merged_table_from_log_records(
    - 		logs, &bs, &readers, sizes, bufs, 3);
    + 		logs, &bs, &tables, sizes, bufs, 3);
      	struct reftable_iterator it = { 0 };
     -	int err;
      	struct reftable_log_record *out = NULL;
      	size_t len = 0;
      	size_t cap = 0;
      	size_t i;
    ++	int err;
      
    --	err = merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
    + 	err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_LOG);
     -	check(!err);
    --	err = reftable_iterator_seek_log(&it, "a");
    ++	cl_assert(!err);
    + 	err = reftable_iterator_seek_log(&it, "a");
     -	check(!err);
     -	check_int(reftable_merged_table_hash_id(mt), ==, REFTABLE_HASH_SHA1);
     -	check_int(reftable_merged_table_min_update_index(mt), ==, 1);
     -	check_int(reftable_merged_table_max_update_index(mt), ==, 3);
    -+	cl_assert(merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG) == 0);
    -+	cl_assert(reftable_iterator_seek_log(&it, "a") == 0);
    ++	cl_assert(!err);
     +	cl_assert_equal_i(reftable_merged_table_hash_id(mt), REFTABLE_HASH_SHA1);
     +	cl_assert_equal_i(reftable_merged_table_min_update_index(mt), 1);
     +	cl_assert_equal_i(reftable_merged_table_max_update_index(mt), 3);
    @@ t/unit-tests/u-reftable-merged.c: static void t_merged_logs(void)
     -		check(reftable_log_record_equal(want[i], &out[i],
     -						 REFTABLE_HASH_SIZE_SHA1));
     +		cl_assert(reftable_log_record_equal(want[i], &out[i],
    -+											REFTABLE_HASH_SIZE_SHA1) != 0);
    ++						    REFTABLE_HASH_SIZE_SHA1) != 0);
      
    --	err = merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
    + 	err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_LOG);
     -	check(!err);
    --	err = reftable_iterator_seek_log_at(&it, "a", 2);
    ++	cl_assert(!err);
    + 	err = reftable_iterator_seek_log_at(&it, "a", 2);
     -	check(!err);
    -+	cl_assert(merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG) == 0);
    -+	cl_assert(reftable_iterator_seek_log_at(&it, "a", 2) == 0);
    ++	cl_assert(!err);
      	reftable_log_record_release(&out[0]);
     -	err = reftable_iterator_next_log(&it, &out[0]);
     -	check(!err);
     -	check(reftable_log_record_equal(&out[0], &r3[0], REFTABLE_HASH_SIZE_SHA1));
     +	cl_assert(reftable_iterator_next_log(&it, &out[0]) == 0);
     +	cl_assert(reftable_log_record_equal(&out[0], &r3[0],
    -+										REFTABLE_HASH_SIZE_SHA1) != 0);
    ++					    REFTABLE_HASH_SIZE_SHA1) != 0);
      	reftable_iterator_destroy(&it);
      
      	for (i = 0; i < len; i++)
    @@ t/unit-tests/u-reftable-merged.c: static void t_default_write_opts(void)
      
      	block_source_from_buf(&source, &buf);
      
    --	err = reftable_reader_new(&rd, &source, "filename");
    + 	err = reftable_table_new(&table, &source, "filename");
     -	check(!err);
    -+	cl_assert(reftable_reader_new(&rd, &source, "filename") == 0);
    ++	cl_assert(!err);
      
    - 	hash_id = reftable_reader_hash_id(rd);
    + 	hash_id = reftable_table_hash_id(table);
     -	check_int(hash_id, ==, REFTABLE_HASH_SHA1);
     +	cl_assert_equal_i(hash_id, REFTABLE_HASH_SHA1);
      
    - 	err = reftable_merged_table_new(&merged, &rd, 1, REFTABLE_HASH_SHA256);
    + 	err = reftable_merged_table_new(&merged, &table, 1, REFTABLE_HASH_SHA256);
     -	check_int(err, ==, REFTABLE_FORMAT_ERROR);
    --	err = reftable_merged_table_new(&merged, &rd, 1, REFTABLE_HASH_SHA1);
    --	check(!err);
     +	cl_assert_equal_i(err, REFTABLE_FORMAT_ERROR);
    -+	cl_assert(reftable_merged_table_new(&merged, &rd, 1, REFTABLE_HASH_SHA1) == 0);
    + 	err = reftable_merged_table_new(&merged, &table, 1, REFTABLE_HASH_SHA1);
    +-	check(!err);
    ++	cl_assert(!err);
      
    - 	reftable_reader_decref(rd);
    + 	reftable_table_decref(table);
      	reftable_merged_table_free(merged);
      	reftable_buf_release(&buf);
      }
 5:  19b08968a0 !  5:  60cf81862a 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)/clar/clar.o
    - CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
    +@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
      CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
    + CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable-clar.o
      
     -UNIT_TEST_PROGRAMS += t-reftable-pq
    - UNIT_TEST_PROGRAMS += t-reftable-reader
      UNIT_TEST_PROGRAMS += t-reftable-readwrite
      UNIT_TEST_PROGRAMS += t-reftable-record
    + UNIT_TEST_PROGRAMS += t-reftable-stack
     
      ## t/meson.build ##
     @@ t/meson.build: clar_test_suites = [
    @@ t/meson.build: clar_unit_tests = executable('unit-tests',
      
      unit_test_programs = [
     -  'unit-tests/t-reftable-pq.c',
    -   'unit-tests/t-reftable-reader.c',
    ++  'unit-tests/t-reftable-reader.c',
        'unit-tests/t-reftable-readwrite.c',
        'unit-tests/t-reftable-record.c',
    +   'unit-tests/t-reftable-stack.c',
     
      ## t/unit-tests/t-reftable-pq.c => t/unit-tests/u-reftable-pq.c ##
     @@ t/unit-tests/u-reftable-pq.c: license that can be found in the LICENSE file or at
    @@ t/unit-tests/u-reftable-pq.c: license that can be found in the LICENSE file or a
      
     -#include "test-lib.h"
     +#include "unit-test.h"
    ++#include "lib-reftable-clar.h"
      #include "reftable/constants.h"
      #include "reftable/pq.h"
      #include "strbuf.h"
    @@ t/unit-tests/u-reftable-pq.c: static void t_pq_record(void)
      	char *last = NULL;
      
      	for (i = 0; i < N; i++) {
    --		check(!reftable_record_init(&recs[i], BLOCK_TYPE_REF));
    -+		cl_assert(reftable_record_init(&recs[i], BLOCK_TYPE_REF) == 0);
    +-		check(!reftable_record_init(&recs[i], REFTABLE_BLOCK_TYPE_REF));
    ++		cl_assert(!reftable_record_init(&recs[i],
    ++						REFTABLE_BLOCK_TYPE_REF));
      		recs[i].u.ref.refname = xstrfmt("%02"PRIuMAX, (uintmax_t)i);
      	}
      
    @@ t/unit-tests/u-reftable-pq.c: static void t_pq_record(void)
      		merged_iter_pqueue_check(&pq);
      
     -		check(pq_entry_equal(&top, &e));
    --		check(reftable_record_type(e.rec) == BLOCK_TYPE_REF);
    -+		cl_assert(pq_entry_equal(&top, &e) != 0);
    -+		cl_assert(reftable_record_type(e.rec) == BLOCK_TYPE_REF);
    +-		check(reftable_record_type(e.rec) == REFTABLE_BLOCK_TYPE_REF);
    ++		cl_assert(pq_entry_equal(&top, &e));
    ++		cl_assert(reftable_record_type(e.rec) == REFTABLE_BLOCK_TYPE_REF);
      		if (last)
     -			check_int(strcmp(last, e.rec->u.ref.refname), <, 0);
     +			cl_assert(strcmp(last, e.rec->u.ref.refname) < 0);
    @@ t/unit-tests/u-reftable-pq.c: static void t_pq_index(void)
      	size_t N = ARRAY_SIZE(recs), i;
      
      	for (i = 0; i < N; i++) {
    --		check(!reftable_record_init(&recs[i], BLOCK_TYPE_REF));
    -+		cl_assert(reftable_record_init(&recs[i], BLOCK_TYPE_REF) == 0);
    +-		check(!reftable_record_init(&recs[i], REFTABLE_BLOCK_TYPE_REF));
    ++		cl_assert(!reftable_record_init(&recs[i],
    ++						REFTABLE_BLOCK_TYPE_REF));
      		recs[i].u.ref.refname = (char *) "refs/heads/master";
      	}
      
    @@ t/unit-tests/u-reftable-pq.c: static void t_pq_index(void)
      		merged_iter_pqueue_check(&pq);
      
     -		check(pq_entry_equal(&top, &e));
    --		check(reftable_record_type(e.rec) == BLOCK_TYPE_REF);
    +-		check(reftable_record_type(e.rec) == REFTABLE_BLOCK_TYPE_REF);
     -		check_int(e.index, ==, i);
    -+		cl_assert(pq_entry_equal(&top, &e) != 0);
    -+		cl_assert(reftable_record_type(e.rec) == BLOCK_TYPE_REF);
    ++		cl_assert(pq_entry_equal(&top, &e));
    ++		cl_assert(reftable_record_type(e.rec) == REFTABLE_BLOCK_TYPE_REF);
     +		cl_assert_equal_i(e.index, i);
      		if (last)
     -			check_str(last, e.rec->u.ref.refname);
    @@ t/unit-tests/u-reftable-pq.c: static void t_pq_index(void)
      	size_t N = ARRAY_SIZE(recs), i;
      
      	for (i = 0; i < N; i++) {
    --		check(!reftable_record_init(&recs[i], BLOCK_TYPE_REF));
    -+		cl_assert(reftable_record_init(&recs[i], BLOCK_TYPE_REF) == 0);
    +-		check(!reftable_record_init(&recs[i], REFTABLE_BLOCK_TYPE_REF));
    ++		cl_assert(!reftable_record_init(&recs[i],
    ++						REFTABLE_BLOCK_TYPE_REF));
      		recs[i].u.ref.refname = (char *) "refs/heads/master";
      	}
      
 6:  b34d6714ed <  -:  ---------- t/unit-tests: convert reftable reader test to use clar
 -:  ---------- >  6:  0eec9f7601 t/unit-tests: convert reftable table test to use clar
 7:  05c909ea94 !  7:  36bdd9b003 t/unit-tests: convert reftable readwrite test to use clar
    @@ Commit message
         Signed-off-by: Seyi Kuforiji <kuforiji98@xxxxxxxxx>
     
      ## Makefile ##
    -@@ Makefile: CLAR_TEST_SUITES += u-reftable-block
    +@@ Makefile: CLAR_TEST_SUITES += u-reftable-basics
    + CLAR_TEST_SUITES += u-reftable-block
      CLAR_TEST_SUITES += u-reftable-merged
      CLAR_TEST_SUITES += u-reftable-pq
    - CLAR_TEST_SUITES += u-reftable-reader
     +CLAR_TEST_SUITES += u-reftable-readwrite
    + CLAR_TEST_SUITES += u-reftable-table
      CLAR_TEST_SUITES += u-reftable-tree
      CLAR_TEST_SUITES += u-strbuf
    - CLAR_TEST_SUITES += u-strcmp-offset
    -@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
    - CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
    +@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
      CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
    + CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable-clar.o
      
     -UNIT_TEST_PROGRAMS += t-reftable-readwrite
      UNIT_TEST_PROGRAMS += t-reftable-record
    @@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
     
      ## t/meson.build ##
     @@ t/meson.build: clar_test_suites = [
    +   'unit-tests/u-reftable-block.c',
        'unit-tests/u-reftable-merged.c',
        'unit-tests/u-reftable-pq.c',
    -   'unit-tests/u-reftable-reader.c',
     +  'unit-tests/u-reftable-readwrite.c',
    +   'unit-tests/u-reftable-table.c',
        'unit-tests/u-reftable-tree.c',
        'unit-tests/u-strbuf.c',
    -   'unit-tests/u-strcmp-offset.c',
     @@ t/meson.build: clar_unit_tests = executable('unit-tests',
      test('unit-tests', clar_unit_tests)
      
    @@ t/unit-tests/u-reftable-readwrite.c: license that can be found in the LICENSE fi
      #define DISABLE_SIGN_COMPARE_WARNINGS
      
     -#include "test-lib.h"
    +-#include "lib-reftable.h"
     +#include "unit-test.h"
    - #include "lib-reftable.h"
    ++#include "lib-reftable-clar.h"
      #include "reftable/basics.h"
      #include "reftable/blocksource.h"
    + #include "reftable/reftable-error.h"
     @@ t/unit-tests/u-reftable-readwrite.c: license that can be found in the LICENSE file or at
      
      static const int update_index = 5;
    @@ t/unit-tests/u-reftable-readwrite.c: license that can be found in the LICENSE fi
      {
      	struct reftable_buf buf = REFTABLE_BUF_INIT;
      	struct reftable_block_source source = { 0 };
    - 	struct reftable_block out = { 0 };
    + 	struct reftable_block_data out = { 0 };
      	int n;
      	uint8_t in[] = "hello";
     -	check(!reftable_buf_add(&buf, in, sizeof(in)));
    @@ t/unit-tests/u-reftable-readwrite.c: license that can be found in the LICENSE fi
      	block_source_from_buf(&source, &buf);
     -	check_int(block_source_size(&source), ==, 6);
     +	cl_assert_equal_i(block_source_size(&source), 6);
    - 	n = block_source_read_block(&source, &out, 0, sizeof(in));
    + 	n = block_source_read_data(&source, &out, 0, sizeof(in));
     -	check_int(n, ==, sizeof(in));
     -	check(!memcmp(in, out.data, n));
     +	cl_assert_equal_i(n, sizeof(in));
    -+	cl_assert(memcmp(in, out.data, n) == 0);
    - 	reftable_block_done(&out);
    ++	cl_assert(!memcmp(in, out.data, n));
    + 	block_source_release_data(&out);
      
    --	n = block_source_read_block(&source, &out, 1, 2);
    + 	n = block_source_read_data(&source, &out, 1, 2);
     -	check_int(n, ==, 2);
     -	check(!memcmp(out.data, "el", 2));
    -+	cl_assert_equal_i(block_source_read_block(&source, &out, 1, 2), 2);
    -+	cl_assert(memcmp(out.data, "el", 2) == 0);
    ++	cl_assert_equal_i(n, 2);
    ++	cl_assert(!memcmp(out.data, "el", 2));
      
    - 	reftable_block_done(&out);
    + 	block_source_release_data(&out);
      	block_source_close(&source);
     @@ t/unit-tests/u-reftable-readwrite.c: static void write_table(char ***names, struct reftable_buf *buf, int N,
      	int i;
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_write_limits(void)
      	struct reftable_write_options opts = {
      		.block_size = 256,
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_write_read(void)
    - 	struct reftable_reader *reader;
    + 	struct reftable_table *table;
      	struct reftable_block_source source = { 0 };
      	struct reftable_buf buf = REFTABLE_BUF_INIT;
     -	struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_write_read(void)
     -	int N = 2, err, i, n;
     +	int N = 2, i;
      	char **names;
    ++	int err;
      
      	names = reftable_calloc(N + 1, sizeof(*names));
     -	check(names != NULL);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_write_read(void)
      
      	block_source_from_buf(&source, &buf);
      
    --	err = reftable_reader_new(&reader, &source, "file.log");
    + 	err = reftable_table_new(&table, &source, "file.log");
     -	check(!err);
    --
    --	err = reftable_reader_init_ref_iterator(reader, &it);
    ++	cl_assert(!err);
    + 
    + 	err = reftable_table_init_ref_iterator(table, &it);
     -	check(!err);
    --
    --	err = reftable_iterator_seek_ref(&it, names[N - 1]);
    ++	cl_assert(!err);
    + 
    + 	err = reftable_iterator_seek_ref(&it, names[N - 1]);
     -	check(!err);
    --
    --	err = reftable_iterator_next_ref(&it, &ref);
    ++	cl_assert(!err);
    + 
    + 	err = reftable_iterator_next_ref(&it, &ref);
     -	check(!err);
    -+	cl_assert(reftable_reader_new(&reader, &source, "file.log") == 0);
    -+	cl_assert(reftable_reader_init_ref_iterator(reader, &it) == 0);
    -+	cl_assert(reftable_iterator_seek_ref(&it, names[N - 1]) == 0);
    -+	cl_assert(reftable_iterator_next_ref(&it, &ref) == 0);
    ++	cl_assert(!err);
      
      	/* end of iteration. */
     -	err = reftable_iterator_next_ref(&it, &ref);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_write_read(void)
      	reftable_iterator_destroy(&it);
      	reftable_ref_record_release(&ref);
      
    --	err = reftable_reader_init_log_iterator(reader, &it);
    + 	err = reftable_table_init_log_iterator(table, &it);
     -	check(!err);
    --	err = reftable_iterator_seek_log(&it, "");
    ++	cl_assert(!err);
    + 	err = reftable_iterator_seek_log(&it, "");
     -	check(!err);
    -+	cl_assert(reftable_reader_init_log_iterator(reader, &it) == 0);
    -+	cl_assert(reftable_iterator_seek_log(&it, "") == 0);
    ++	cl_assert(!err);
      
      	for (i = 0; ; i++) {
      		int err = reftable_iterator_next_log(&it, &log);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_write_read(void)
      
      	/* cleanup. */
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_write_read(void)
    - 	reftable_reader_decref(reader);
    + 	reftable_table_decref(table);
      }
      
     -static void t_log_zlib_corruption(void)
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_write_read(void)
      	struct reftable_write_options opts = {
      		.block_size = 256,
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_zlib_corruption(void)
    - 	struct reftable_reader *reader;
    + 	struct reftable_table *table;
      	struct reftable_block_source source = { 0 };
      	struct reftable_buf buf = REFTABLE_BUF_INIT;
     -	struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_zlib_corruption(void)
      	char message[100] = { 0 };
     -	int err, i, n;
     +	int i;
    ++	int err;
      	struct reftable_log_record log = {
      		.refname = (char *) "refname",
      		.value_type = REFTABLE_LOG_UPDATE,
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_zlib_corruption(void)
      	w = NULL;
      
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_zlib_corruption(void)
    - 
      	block_source_from_buf(&source, &buf);
      
    --	err = reftable_reader_new(&reader, &source, "file.log");
    + 	err = reftable_table_new(&table, &source, "file.log");
     -	check(!err);
    --
    --	err = reftable_reader_init_log_iterator(reader, &it);
    ++	cl_assert(!err);
    + 
    + 	err = reftable_table_init_log_iterator(table, &it);
     -	check(!err);
    --	err = reftable_iterator_seek_log(&it, "refname");
    ++	cl_assert(!err);
    + 	err = reftable_iterator_seek_log(&it, "refname");
     -	check_int(err, ==, REFTABLE_ZLIB_ERROR);
    -+	cl_assert(reftable_reader_new(&reader, &source, "file.log") == 0);
    -+	cl_assert(reftable_reader_init_log_iterator(reader, &it) == 0);
    -+	cl_assert_equal_i(reftable_iterator_seek_log(&it, "refname"), REFTABLE_ZLIB_ERROR);
    ++	cl_assert_equal_i(err, REFTABLE_ZLIB_ERROR);
      
      	reftable_iterator_destroy(&it);
      
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_log_zlib_corruption(void)
      	char **names;
      	struct reftable_buf buf = REFTABLE_BUF_INIT;
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_read_write_sequential(void)
    - 	struct reftable_iterator it = { 0 };
    - 	struct reftable_block_source source = { 0 };
    - 	struct reftable_reader *reader;
    --	int err = 0;
    - 	int j = 0;
    - 
    - 	write_table(&names, &buf, N, 256, REFTABLE_HASH_SHA1);
    - 
      	block_source_from_buf(&source, &buf);
      
    --	err = reftable_reader_new(&reader, &source, "file.ref");
    + 	err = reftable_table_new(&table, &source, "file.ref");
     -	check(!err);
    --
    --	err = reftable_reader_init_ref_iterator(reader, &it);
    ++	cl_assert(!err);
    + 
    + 	err = reftable_table_init_ref_iterator(table, &it);
     -	check(!err);
    --	err = reftable_iterator_seek_ref(&it, "");
    ++	cl_assert(!err);
    + 	err = reftable_iterator_seek_ref(&it, "");
     -	check(!err);
    -+	cl_assert(reftable_reader_new(&reader, &source, "file.ref") == 0);
    -+	cl_assert(reftable_reader_init_ref_iterator(reader, &it) == 0);
    -+	cl_assert(reftable_iterator_seek_ref(&it, "") == 0);
    ++	cl_assert(!err);
      
      	for (j = 0; ; j++) {
      		struct reftable_ref_record ref = { 0 };
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_read_write_sequential(v
     +	cl_assert_equal_i(j, N);
      
      	reftable_iterator_destroy(&it);
    - 	reftable_reader_decref(reader);
    + 	reftable_table_decref(table);
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_read_write_sequential(void)
      	free_names(names);
      }
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_read_write_sequential(v
      	char **names;
      	struct reftable_buf buf = REFTABLE_BUF_INIT;
      	int N = 50;
    - 	struct reftable_reader *reader;
    + 	struct reftable_table *table;
      	struct reftable_block_source source = { 0 };
     -	int err;
      	struct reftable_log_record log = { 0 };
      	struct reftable_iterator it = { 0 };
    ++	int err;
      
    -@@ t/unit-tests/u-reftable-readwrite.c: static void t_table_read_api(void)
    + 	write_table(&names, &buf, N, 256, REFTABLE_HASH_SHA1);
      
      	block_source_from_buf(&source, &buf);
      
    --	err = reftable_reader_new(&reader, &source, "file.ref");
    + 	err = reftable_table_new(&table, &source, "file.ref");
     -	check(!err);
    -+	cl_assert(reftable_reader_new(&reader, &source, "file.ref") == 0);
    -+	cl_assert(reftable_reader_init_ref_iterator(reader, &it) == 0);
    -+	cl_assert(reftable_iterator_seek_ref(&it, names[0]) == 0);
    ++	cl_assert(!err);
      
    --	err = reftable_reader_init_ref_iterator(reader, &it);
    + 	err = reftable_table_init_ref_iterator(table, &it);
     -	check(!err);
    --	err = reftable_iterator_seek_ref(&it, names[0]);
    ++	cl_assert(!err);
    + 	err = reftable_iterator_seek_ref(&it, names[0]);
     -	check(!err);
    --
    --	err = reftable_iterator_next_log(&it, &log);
    ++	cl_assert(!err);
    + 
    + 	err = reftable_iterator_next_log(&it, &log);
     -	check_int(err, ==, REFTABLE_API_ERROR);
    -+	cl_assert_equal_i(reftable_iterator_next_log(&it, &log), REFTABLE_API_ERROR);
    ++	cl_assert_equal_i(err, REFTABLE_API_ERROR);
      
      	reftable_buf_release(&buf);
      	free_names(names);
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_read_write_seek(int index, enum reftable_hash hash_id)
    - 
      	block_source_from_buf(&source, &buf);
      
    --	err = reftable_reader_new(&reader, &source, "file.ref");
    + 	err = reftable_table_new(&table, &source, "file.ref");
     -	check(!err);
    --	check_int(hash_id, ==, reftable_reader_hash_id(reader));
    -+	cl_assert(reftable_reader_new(&reader, &source, "file.ref") == 0);
    -+	cl_assert_equal_i(hash_id, reftable_reader_hash_id(reader));
    +-	check_int(hash_id, ==, reftable_table_hash_id(table));
    ++	cl_assert(!err);
    ++	cl_assert_equal_i(hash_id, reftable_table_hash_id(table));
      
      	if (!index) {
    - 		reader->ref_offsets.index_offset = 0;
    + 		table->ref_offsets.index_offset = 0;
      	} else {
    --		check_int(reader->ref_offsets.index_offset, >, 0);
    -+		cl_assert(reader->ref_offsets.index_offset > 0);
    +-		check_int(table->ref_offsets.index_offset, >, 0);
    ++		cl_assert(table->ref_offsets.index_offset > 0);
      	}
      
      	for (i = 1; i < N; i++) {
    --		err = reftable_reader_init_ref_iterator(reader, &it);
    + 		err = reftable_table_init_ref_iterator(table, &it);
     -		check(!err);
    --		err = reftable_iterator_seek_ref(&it, names[i]);
    ++		cl_assert(!err);
    + 		err = reftable_iterator_seek_ref(&it, names[i]);
     -		check(!err);
    --		err = reftable_iterator_next_ref(&it, &ref);
    ++		cl_assert(!err);
    + 		err = reftable_iterator_next_ref(&it, &ref);
     -		check(!err);
     -		check_str(names[i], ref.refname);
     -		check_int(REFTABLE_REF_VAL1, ==, ref.value_type);
     -		check_int(i, ==, ref.value.val1[0]);
    -+		cl_assert(reftable_reader_init_ref_iterator(reader, &it) == 0);
    -+		cl_assert(reftable_iterator_seek_ref(&it, names[i]) == 0);
    -+		cl_assert(reftable_iterator_next_ref(&it, &ref) == 0);
    ++		cl_assert(!err);
     +		cl_assert_equal_s(names[i], ref.refname);
     +		cl_assert_equal_i(REFTABLE_REF_VAL1, ref.value_type);
     +		cl_assert_equal_i(i, ref.value.val1[0]);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_read_write_seek(int ind
     +	cl_assert(reftable_buf_addstr(&pastLast, names[N - 1]) == 0);
     +	cl_assert(reftable_buf_addstr(&pastLast, "/") == 0);
      
    --	err = reftable_reader_init_ref_iterator(reader, &it);
    + 	err = reftable_table_init_ref_iterator(table, &it);
     -	check(!err);
    -+	cl_assert(reftable_reader_init_ref_iterator(reader, &it) == 0);
    ++	cl_assert(!err);
      	err = reftable_iterator_seek_ref(&it, pastLast.buf);
      	if (err == 0) {
      		struct reftable_ref_record ref = { 0 };
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_read_write_seek(int ind
      
      	reftable_buf_release(&pastLast);
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_read_write_seek(int index, enum reftable_hash hash_id)
    - 	reftable_reader_decref(reader);
    + 	reftable_table_decref(table);
      }
      
     -static void t_table_read_write_seek_linear(void)
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_read_write_seek(int ind
      	t_table_read_write_seek(1, REFTABLE_HASH_SHA1);
      }
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_refs_for(int indexed)
    - 	struct reftable_reader *reader;
    + 	struct reftable_table *table;
      	struct reftable_block_source source = { 0 };
      	struct reftable_buf buf = REFTABLE_BUF_INIT;
     -	struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_refs_for(int indexed)
      	struct reftable_iterator it = { 0 };
     -	int N = 50, n, j, err, i;
     +	int N = 50, j, i;
    ++	int err;
      
      	want_names = reftable_calloc(N + 1, sizeof(*want_names));
     -	check(want_names != NULL);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_refs_for(int indexed)
      
      	reftable_writer_free(w);
      	w = NULL;
    - 
    +@@ t/unit-tests/u-reftable-readwrite.c: static void t_table_refs_for(int indexed)
      	block_source_from_buf(&source, &buf);
      
    --	err = reftable_reader_new(&reader, &source, "file.ref");
    + 	err = reftable_table_new(&table, &source, "file.ref");
     -	check(!err);
    -+	cl_assert(reftable_reader_new(&reader, &source, "file.ref") == 0);
    ++	cl_assert(!err);
      	if (!indexed)
    - 		reader->obj_offsets.is_present = 0;
    + 		table->obj_offsets.is_present = 0;
      
    --	err = reftable_reader_init_ref_iterator(reader, &it);
    + 	err = reftable_table_init_ref_iterator(table, &it);
     -	check(!err);
    --	err = reftable_iterator_seek_ref(&it, "");
    ++	cl_assert(!err);
    + 	err = reftable_iterator_seek_ref(&it, "");
     -	check(!err);
    -+	cl_assert(reftable_reader_init_ref_iterator(reader, &it) == 0);
    -+	cl_assert(reftable_iterator_seek_ref(&it, "") == 0);
    ++	cl_assert(!err);
      	reftable_iterator_destroy(&it);
      
    --	err = reftable_reader_refs_for(reader, &it, want_hash);
    + 	err = reftable_table_refs_for(table, &it, want_hash);
     -	check(!err);
    -+	cl_assert(reftable_reader_refs_for(reader, &it, want_hash) == 0);
    ++	cl_assert(!err);
      
      	for (j = 0; ; j++) {
      		int err = reftable_iterator_next_ref(&it, &ref);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_refs_for(int indexed)
      	reftable_buf_release(&buf);
      	free_names(want_names);
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_refs_for(int indexed)
    - 	reftable_reader_decref(reader);
    + 	reftable_table_decref(table);
      }
      
     -static void t_table_refs_for_no_index(void)
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_refs_for(int indexed)
     -	struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
     +	struct reftable_writer *w = cl_reftable_strbuf_writer(&buf, &opts);
      	struct reftable_block_source source = { 0 };
    - 	struct reftable_reader *rd = NULL;
    + 	struct reftable_table *table = NULL;
      	struct reftable_ref_record rec = { 0 };
    - 	struct reftable_iterator it = { 0 };
    --	int err;
    +@@ t/unit-tests/u-reftable-readwrite.c: static void t_write_empty_table(void)
      
      	reftable_writer_set_limits(w, 1, 1);
      
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_table_refs_for(int indexed)
      
      	block_source_from_buf(&source, &buf);
      
    --	err = reftable_reader_new(&rd, &source, "filename");
    + 	err = reftable_table_new(&table, &source, "filename");
     -	check(!err);
    --
    --	err = reftable_reader_init_ref_iterator(rd, &it);
    ++	cl_assert(!err);
    + 
    + 	err = reftable_table_init_ref_iterator(table, &it);
     -	check(!err);
    --	err = reftable_iterator_seek_ref(&it, "");
    ++	cl_assert(!err);
    + 	err = reftable_iterator_seek_ref(&it, "");
     -	check(!err);
    --
    --	err = reftable_iterator_next_ref(&it, &rec);
    ++	cl_assert(!err);
    + 
    + 	err = reftable_iterator_next_ref(&it, &rec);
     -	check_int(err, >, 0);
    -+	cl_assert(reftable_reader_new(&rd, &source, "filename") == 0);
    -+	cl_assert(reftable_reader_init_ref_iterator(rd, &it) == 0);
    -+	cl_assert(reftable_iterator_seek_ref(&it, "") == 0);
    -+	cl_assert(reftable_iterator_next_ref(&it, &rec) > 0);
    ++	cl_assert(err > 0);
      
      	reftable_iterator_destroy(&it);
    - 	reftable_reader_decref(rd);
    + 	reftable_table_decref(table);
      	reftable_buf_release(&buf);
      }
      
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_write_key_order(void)
      		.block_size = 100,
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_write_multiple_indices(void)
      	struct reftable_writer *writer;
    - 	struct reftable_reader *reader;
    + 	struct reftable_table *table;
      	char buf[128];
     -	int err, i;
     +	int i;
    ++	int err;
      
     -	writer = t_reftable_strbuf_writer(&writer_buf, &opts);
     +	writer = cl_reftable_strbuf_writer(&writer_buf, &opts);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_write_multiple_indices(void)
     +	cl_assert(stats->log_stats.index_offset > 0);
      
      	block_source_from_buf(&source, &writer_buf);
    --	err = reftable_reader_new(&reader, &source, "filename");
    + 	err = reftable_table_new(&table, &source, "filename");
     -	check(!err);
    -+	cl_assert(reftable_reader_new(&reader, &source, "filename") == 0);
    ++	cl_assert(!err);
      
      	/*
      	 * Seeking the log uses the log index now. In case there is any
      	 * confusion regarding indices we would notice here.
      	 */
    --	err = reftable_reader_init_log_iterator(reader, &it);
    + 	err = reftable_table_init_log_iterator(table, &it);
     -	check(!err);
    --	err = reftable_iterator_seek_log(&it, "");
    ++	cl_assert(!err);
    + 	err = reftable_iterator_seek_log(&it, "");
     -	check(!err);
    -+	cl_assert(reftable_reader_init_log_iterator(reader, &it) == 0);
    -+	cl_assert(reftable_iterator_seek_log(&it, "") == 0);
    ++	cl_assert(!err);
      
      	reftable_iterator_destroy(&it);
      	reftable_writer_free(writer);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_write_multiple_indices(void)
      	struct reftable_write_options opts = {
      		.block_size = 100,
     @@ t/unit-tests/u-reftable-readwrite.c: static void t_write_multi_level_index(void)
    - 	const struct reftable_stats *stats;
    - 	struct reftable_writer *writer;
    - 	struct reftable_reader *reader;
    --	int err;
    + 	struct reftable_table *table;
    + 	int err;
      
     -	writer = t_reftable_strbuf_writer(&writer_buf, &opts);
     +	writer = cl_reftable_strbuf_writer(&writer_buf, &opts);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_write_multi_level_index(void)
     +	cl_assert_equal_i(stats->ref_stats.max_index_level, 2);
      
      	block_source_from_buf(&source, &writer_buf);
    --	err = reftable_reader_new(&reader, &source, "filename");
    + 	err = reftable_table_new(&table, &source, "filename");
     -	check(!err);
    -+	cl_assert(reftable_reader_new(&reader, &source, "filename") == 0);
    ++	cl_assert(!err);
      
      	/*
      	 * Seeking the last ref should work as expected.
      	 */
    --	err = reftable_reader_init_ref_iterator(reader, &it);
    + 	err = reftable_table_init_ref_iterator(table, &it);
     -	check(!err);
    --	err = reftable_iterator_seek_ref(&it, "refs/heads/199");
    ++	cl_assert(!err);
    + 	err = reftable_iterator_seek_ref(&it, "refs/heads/199");
     -	check(!err);
    -+	cl_assert(reftable_reader_init_ref_iterator(reader, &it) == 0);
    -+	cl_assert(reftable_iterator_seek_ref(&it, "refs/heads/199") == 0);
    ++	cl_assert(!err);
      
      	reftable_iterator_destroy(&it);
      	reftable_writer_free(writer);
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_write_multi_level_index(void)
      {
      	struct reftable_buf buf = REFTABLE_BUF_INIT;
      	struct reftable_block_source source = { 0 };
    - 	struct reftable_reader *reader;
    --	int err;
    +@@ t/unit-tests/u-reftable-readwrite.c: static void t_corrupt_table_empty(void)
      
      	block_source_from_buf(&source, &buf);
    --	err = reftable_reader_new(&reader, &source, "file.log");
    + 	err = reftable_table_new(&table, &source, "file.log");
     -	check_int(err, ==, REFTABLE_FORMAT_ERROR);
    -+	cl_assert_equal_i(reftable_reader_new(&reader, &source,
    -+										  "file.log"),REFTABLE_FORMAT_ERROR);
    ++	cl_assert_equal_i(err, REFTABLE_FORMAT_ERROR);
      }
      
     -static void t_corrupt_table(void)
    @@ t/unit-tests/u-reftable-readwrite.c: static void t_write_multi_level_index(void)
      	uint8_t zeros[1024] = { 0 };
      	struct reftable_buf buf = REFTABLE_BUF_INIT;
      	struct reftable_block_source source = { 0 };
    - 	struct reftable_reader *reader;
    --	int err;
    + 	struct reftable_table *table;
    + 	int err;
     -	check(!reftable_buf_add(&buf, zeros, sizeof(zeros)));
    -+	cl_assert(reftable_buf_add(&buf, zeros, sizeof(zeros)) == 0);
    ++
    ++	cl_assert(!reftable_buf_add(&buf, zeros, sizeof(zeros)));
      
      	block_source_from_buf(&source, &buf);
    --	err = reftable_reader_new(&reader, &source, "file.log");
    + 	err = reftable_table_new(&table, &source, "file.log");
     -	check_int(err, ==, REFTABLE_FORMAT_ERROR);
    -+	cl_assert_equal_i(reftable_reader_new(&reader, &source,
    -+										  "file.log"), REFTABLE_FORMAT_ERROR);
    ++	cl_assert_equal_i(err, REFTABLE_FORMAT_ERROR);
      
      	reftable_buf_release(&buf);
      }
 8:  1515cf15b7 !  8:  df744c1458 t/unit-tests: convert reftable record test to use clar
    @@ Commit message
         Signed-off-by: Seyi Kuforiji <kuforiji98@xxxxxxxxx>
     
      ## Makefile ##
    -@@ Makefile: CLAR_TEST_SUITES += u-reftable-merged
    - CLAR_TEST_SUITES += u-reftable-pq
    - CLAR_TEST_SUITES += u-reftable-reader
    - CLAR_TEST_SUITES += u-reftable-readwrite
    -+CLAR_TEST_SUITES += u-reftable-record
    - CLAR_TEST_SUITES += u-reftable-tree
    - CLAR_TEST_SUITES += u-strbuf
    - CLAR_TEST_SUITES += u-strcmp-offset
    -@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
    - CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
    +@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
      CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
    + CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable-clar.o
      
     -UNIT_TEST_PROGRAMS += t-reftable-record
      UNIT_TEST_PROGRAMS += t-reftable-stack
    @@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
      UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/test-lib.o
     
      ## t/meson.build ##
    -@@ t/meson.build: clar_test_suites = [
    -   'unit-tests/u-reftable-pq.c',
    -   'unit-tests/u-reftable-reader.c',
    -   'unit-tests/u-reftable-readwrite.c',
    -+  'unit-tests/u-reftable-record.c',
    -   'unit-tests/u-reftable-tree.c',
    -   'unit-tests/u-strbuf.c',
    -   'unit-tests/u-strcmp-offset.c',
     @@ t/meson.build: clar_unit_tests = executable('unit-tests',
      test('unit-tests', clar_unit_tests)
      
    @@ t/unit-tests/t-reftable-record.c => t/unit-tests/u-reftable-record.c
      
     -#include "test-lib.h"
     +#include "unit-test.h"
    ++#include "lib-reftable-clar.h"
      #include "reftable/basics.h"
      #include "reftable/constants.h"
      #include "reftable/record.h"
    @@ t/unit-tests/u-reftable-record.c: static void t_reftable_log_record_roundtrip(vo
     +	cl_assert(reftable_log_record_is_deletion(&in[2]) == 0);
      
      	for (size_t i = 0; i < ARRAY_SIZE(in); i++) {
    - 		struct reftable_record rec = { .type = BLOCK_TYPE_LOG };
    + 		struct reftable_record rec = { .type = REFTABLE_BLOCK_TYPE_LOG };
     @@ t/unit-tests/u-reftable-record.c: static void t_reftable_log_record_roundtrip(void)
      		reftable_record_key(&rec, &key);
      
    @@ t/unit-tests/u-reftable-record.c: static void t_reftable_index_record_comparison
     +void test_reftable_record__index_record_roundtrip(void)
      {
      	struct reftable_record in = {
    - 		.type = BLOCK_TYPE_INDEX,
    + 		.type = REFTABLE_BLOCK_TYPE_INDEX,
     @@ t/unit-tests/u-reftable-record.c: static void t_reftable_index_record_roundtrip(void)
      	int n, m;
      	uint8_t extra;
 9:  dcbb2b6e56 !  9:  4a247de9e4 t/unit-tests: convert reftable stack test to use clar
    @@ Commit message
         Signed-off-by: Seyi Kuforiji <kuforiji98@xxxxxxxxx>
     
      ## Makefile ##
    -@@ Makefile: CLAR_TEST_SUITES += u-reftable-pq
    - CLAR_TEST_SUITES += u-reftable-reader
    +@@ Makefile: CLAR_TEST_SUITES += u-reftable-block
    + CLAR_TEST_SUITES += u-reftable-merged
    + CLAR_TEST_SUITES += u-reftable-pq
      CLAR_TEST_SUITES += u-reftable-readwrite
    - CLAR_TEST_SUITES += u-reftable-record
     +CLAR_TEST_SUITES += u-reftable-stack
    + CLAR_TEST_SUITES += u-reftable-table
      CLAR_TEST_SUITES += u-reftable-tree
      CLAR_TEST_SUITES += u-strbuf
    - CLAR_TEST_SUITES += u-strcmp-offset
    -@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
    - CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
    +@@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
      CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
    + CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable-clar.o
      
     -UNIT_TEST_PROGRAMS += t-reftable-stack
      UNIT_TEST_PROGS = $(patsubst %,$(UNIT_TEST_BIN)/%$X,$(UNIT_TEST_PROGRAMS))
    @@ Makefile: CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
     
      ## t/meson.build ##
     @@ t/meson.build: clar_test_suites = [
    -   'unit-tests/u-reftable-reader.c',
    +   'unit-tests/u-reftable-merged.c',
    +   'unit-tests/u-reftable-pq.c',
        'unit-tests/u-reftable-readwrite.c',
    -   'unit-tests/u-reftable-record.c',
    ++  'unit-tests/u-reftable-record.c',
     +  'unit-tests/u-reftable-stack.c',
    +   'unit-tests/u-reftable-table.c',
        'unit-tests/u-reftable-tree.c',
        'unit-tests/u-strbuf.c',
    -   'unit-tests/u-strcmp-offset.c',
     @@ t/meson.build: clar_unit_tests = executable('unit-tests',
      test('unit-tests', clar_unit_tests)
      
    @@ t/meson.build: clar_unit_tests = executable('unit-tests',
      ]
      
      foreach unit_test_program : unit_test_programs
    -@@ t/meson.build: integration_tests = [
    +@@ t/meson.build: benchmarks = [
      # sufficient to catch missing test suites in our CI though.
      foreach glob, tests : {
        't[0-9][0-9][0-9][0-9]-*.sh': integration_tests,
    +-  'perf/p[0-9][0-9][0-9][0-9]-*.sh': benchmarks,
     -  'unit-tests/t-*.c': unit_test_programs,
        'unit-tests/u-*.c': clar_test_suites,
      }
    @@ t/unit-tests/u-reftable-stack.c: license that can be found in the LICENSE file o
      #define DISABLE_SIGN_COMPARE_WARNINGS
      
     -#include "test-lib.h"
    +-#include "lib-reftable.h"
     +#include "unit-test.h"
    - #include "lib-reftable.h"
      #include "dir.h"
    ++#include "lib-reftable-clar.h"
      #include "reftable/merged.h"
    + #include "reftable/reftable-error.h"
    + #include "reftable/stack.h"
     @@ t/unit-tests/u-reftable-stack.c: static char *get_tmp_template(int linenumber)
      static char *get_tmp_dir(int linenumber)
      {
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_add_one(void)
      	};
      	struct reftable_ref_record dest = { 0 };
      	struct stat stat_result = { 0 };
    --	err = reftable_new_stack(&st, dir, &opts);
    ++	int err;
    ++
    + 	err = reftable_new_stack(&st, dir, &opts);
     -	check(!err);
    --
    --	err = reftable_stack_add(st, write_test_ref, &ref);
    ++	cl_assert(!err);
    + 
    + 	err = reftable_stack_add(st, write_test_ref, &ref);
     -	check(!err);
    --
    --	err = reftable_stack_read_ref(st, ref.refname, &dest);
    ++	cl_assert(!err);
    + 
    + 	err = reftable_stack_read_ref(st, ref.refname, &dest);
     -	check(!err);
     -	check(reftable_ref_record_equal(&ref, &dest, REFTABLE_HASH_SIZE_SHA1));
    --	check_int(st->readers_len, >, 0);
    -+	cl_assert(reftable_new_stack(&st, dir, &opts) == 0);
    -+	cl_assert(reftable_stack_add(st, write_test_ref, &ref) == 0);
    -+	cl_assert(reftable_stack_read_ref(st, ref.refname, &dest) == 0);
    -+	cl_assert(reftable_ref_record_equal(&ref, &dest, REFTABLE_HASH_SIZE_SHA1) != 0);
    -+	cl_assert(st->readers_len > 0);
    +-	check_int(st->tables_len, >, 0);
    ++	cl_assert(!err);
    ++	cl_assert(reftable_ref_record_equal(&ref, &dest,
    ++					    REFTABLE_HASH_SIZE_SHA1));
    ++	cl_assert(st->tables_len > 0);
      
      #ifndef GIT_WINDOWS_NATIVE
     -	check(!reftable_buf_addstr(&scratch, dir));
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_add_one(void)
     +	cl_assert(reftable_buf_addstr(&scratch, dir) == 0);
     +	cl_assert(reftable_buf_addstr(&scratch, "/") == 0);
      	/* do not try at home; not an external API for reftable. */
    --	check(!reftable_buf_addstr(&scratch, st->readers[0]->name));
    --	err = stat(scratch.buf, &stat_result);
    +-	check(!reftable_buf_addstr(&scratch, st->tables[0]->name));
    ++	cl_assert(!reftable_buf_addstr(&scratch, st->tables[0]->name));
    + 	err = stat(scratch.buf, &stat_result);
     -	check(!err);
     -	check_int((stat_result.st_mode & 0777), ==, opts.default_permissions);
    -+	cl_assert(reftable_buf_addstr(&scratch, st->readers[0]->name) == 0);
    -+	cl_assert(stat(scratch.buf, &stat_result) == 0);
    -+	cl_assert_equal_i((stat_result.st_mode & 0777), opts.default_permissions);
    ++	cl_assert(!err);
    ++	cl_assert_equal_i((stat_result.st_mode & 0777),
    ++			   opts.default_permissions);
      #else
      	(void) stat_result;
      #endif
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_transaction_api_pe
      		 * all tables in the stack.
      		 */
      		if (i != n)
    --			check_int(st->merged->readers_len, ==, i + 1);
    -+			cl_assert_equal_i(st->merged->readers_len, i + 1);
    +-			check_int(st->merged->tables_len, ==, i + 1);
    ++			cl_assert_equal_i(st->merged->tables_len, i + 1);
      		else
    --			check_int(st->merged->readers_len, ==, 1);
    -+			cl_assert_equal_i(st->merged->readers_len, 1);
    +-			check_int(st->merged->tables_len, ==, 1);
    ++			cl_assert_equal_i(st->merged->tables_len, 1);
      	}
      
      	reftable_stack_destroy(st);
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_transaction_api_pe
      	struct reftable_ref_record ref = {
      		.refname = (char *) "refs/heads/master",
     @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_auto_compaction_fails_gracefully(void)
    - 	struct reftable_stack *st;
    - 	struct reftable_buf table_path = REFTABLE_BUF_INIT;
      	char *dir = get_tmp_dir(__LINE__);
    --	int err;
    + 	int err;
      
     -	err = reftable_new_stack(&st, dir, &opts);
     -	check(!err);
     -
     -	err = reftable_stack_add(st, write_test_ref, &ref);
     -	check(!err);
    --	check_int(st->merged->readers_len, ==, 1);
    +-	check_int(st->merged->tables_len, ==, 1);
     -	check_int(st->stats.attempts, ==, 0);
     -	check_int(st->stats.failures, ==, 0);
     +	cl_assert(reftable_new_stack(&st, dir, &opts) == 0);
     +	cl_assert(reftable_stack_add(st, write_test_ref, &ref) == 0);
    -+	cl_assert_equal_i(st->merged->readers_len, 1);
    ++	cl_assert_equal_i(st->merged->tables_len, 1);
     +	cl_assert_equal_i(st->stats.attempts, 0);
     +	cl_assert_equal_i(st->stats.failures, 0);
      
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_auto_compaction_fa
      	 */
     -	check(!reftable_buf_addstr(&table_path, dir));
     -	check(!reftable_buf_addstr(&table_path, "/"));
    --	check(!reftable_buf_addstr(&table_path, st->readers[0]->name));
    +-	check(!reftable_buf_addstr(&table_path, st->tables[0]->name));
     -	check(!reftable_buf_addstr(&table_path, ".lock"));
    -+	cl_assert(reftable_buf_addstr(&table_path, dir) == 0);
    -+	cl_assert(reftable_buf_addstr(&table_path, "/") == 0);
    -+	cl_assert(reftable_buf_addstr(&table_path, st->readers[0]->name) == 0);
    -+	cl_assert(reftable_buf_addstr(&table_path, ".lock") == 0);
    ++	cl_assert(!reftable_buf_addstr(&table_path, dir));
    ++	cl_assert(!reftable_buf_addstr(&table_path, "/"));
    ++	cl_assert(!reftable_buf_addstr(&table_path,
    ++				       st->tables[0]->name));
    ++	cl_assert(!reftable_buf_addstr(&table_path, ".lock"));
      	write_file_buf(table_path.buf, "", 0);
      
      	ref.update_index = 2;
    --	err = reftable_stack_add(st, write_test_ref, &ref);
    + 	err = reftable_stack_add(st, write_test_ref, &ref);
     -	check(!err);
    --	check_int(st->merged->readers_len, ==, 2);
    +-	check_int(st->merged->tables_len, ==, 2);
     -	check_int(st->stats.attempts, ==, 1);
     -	check_int(st->stats.failures, ==, 1);
    -+	cl_assert(reftable_stack_add(st, write_test_ref, &ref) == 0);
    -+	cl_assert_equal_i(st->merged->readers_len, 2);
    ++	cl_assert(!err);
    ++	cl_assert_equal_i(st->merged->tables_len, 2);
     +	cl_assert_equal_i(st->stats.attempts, 1);
     +	cl_assert_equal_i(st->stats.failures, 1);
      
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_update_index_check
      		.exact_log_message = 1,
      		.default_permissions = 0660,
     @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_add(void)
    + 	struct reftable_buf path = REFTABLE_BUF_INIT;
      	struct stat stat_result;
      	size_t i, N = ARRAY_SIZE(refs);
    ++	int err;
      
    --	err = reftable_new_stack(&st, dir, &opts);
    + 	err = reftable_new_stack(&st, dir, &opts);
     -	check(!err);
    -+	cl_assert(reftable_new_stack(&st, dir, &opts) == 0);
    ++	cl_assert(!err);
      
      	for (i = 0; i < N; i++) {
      		char buf[256];
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_add(void)
     +	cl_assert(reftable_buf_addstr(&path, dir) == 0);
     +	cl_assert(reftable_buf_addstr(&path, "/") == 0);
      	/* do not try at home; not an external API for reftable. */
    --	check(!reftable_buf_addstr(&path, st->readers[0]->name));
    --	err = stat(path.buf, &stat_result);
    +-	check(!reftable_buf_addstr(&path, st->tables[0]->name));
    ++	cl_assert(!reftable_buf_addstr(&path, st->tables[0]->name));
    + 	err = stat(path.buf, &stat_result);
     -	check(!err);
     -	check_int((stat_result.st_mode & 0777), ==, opts.default_permissions);
    -+	cl_assert(reftable_buf_addstr(&path, st->readers[0]->name) == 0);
    -+	cl_assert(stat(path.buf, &stat_result) == 0);
    ++	cl_assert(!err);
     +	cl_assert_equal_i((stat_result.st_mode & 0777), opts.default_permissions);
      #else
      	(void) stat_result;
    @@ t/unit-tests/u-reftable-stack.c: static int fastlogN(uint64_t sz, uint64_t N)
      	char *dir = get_tmp_dir(__LINE__);
     -	int err;
      	size_t i, N = 100;
    ++	int err;
      
     -	err = reftable_new_stack(&st, dir, &opts);
     -	check(!err);
    @@ t/unit-tests/u-reftable-stack.c: static int fastlogN(uint64_t sz, uint64_t N)
      	for (i = 0; i < N; i++) {
      		char name[100];
     @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_auto_compaction(void)
    - 		};
      		snprintf(name, sizeof(name), "branch%04"PRIuMAX, (uintmax_t)i);
      
    --		err = reftable_stack_add(st, write_test_ref, &ref);
    + 		err = reftable_stack_add(st, write_test_ref, &ref);
     -		check(!err);
    --
    --		err = reftable_stack_auto_compact(st);
    ++		cl_assert(!err);
    + 
    + 		err = reftable_stack_auto_compact(st);
     -		check(!err);
    --		check(i < 2 || st->merged->readers_len < 2 * fastlogN(i, 2));
    -+		cl_assert(reftable_stack_add(st, write_test_ref, &ref) == 0);
    -+		cl_assert(reftable_stack_auto_compact(st) == 0);
    -+		cl_assert(i < 2 || st->merged->readers_len < 2 * fastlogN(i, 2));
    +-		check(i < 2 || st->merged->tables_len < 2 * fastlogN(i, 2));
    ++		cl_assert(!err);
    ++		cl_assert(i < 2 || st->merged->tables_len < 2 * fastlogN(i, 2));
      	}
      
     -	check_int(reftable_stack_compaction_stats(st)->entries_written, <,
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_auto_compaction(vo
      	char *dir = get_tmp_dir(__LINE__);
     -	int err;
      	size_t N = 100;
    ++	int err;
      
     -	err = reftable_new_stack(&st, dir, &opts);
     -	check(!err);
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_auto_compaction(vo
      	for (size_t i = 0; i < N; i++) {
      		char name[20];
     @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_auto_compaction_factor(void)
    - 		};
      		xsnprintf(name, sizeof(name), "branch%04"PRIuMAX, (uintmax_t)i);
      
    --		err = reftable_stack_add(st, &write_test_ref, &ref);
    + 		err = reftable_stack_add(st, &write_test_ref, &ref);
     -		check(!err);
    --
    --		check(i < 5 || st->merged->readers_len < 5 * fastlogN(i, 5));
    -+		cl_assert(reftable_stack_add(st, &write_test_ref, &ref) == 0);
    -+		cl_assert(i < 5 || st->merged->readers_len < 5 * fastlogN(i, 5));
    ++		cl_assert(!err);
    + 
    +-		check(i < 5 || st->merged->tables_len < 5 * fastlogN(i, 5));
    ++		cl_assert(i < 5 || st->merged->tables_len < 5 * fastlogN(i, 5));
      	}
      
      	reftable_stack_destroy(st);
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_auto_compaction_fa
      	struct reftable_write_options opts = {
      		.disable_auto_compact = 1,
     @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_auto_compaction_with_locked_tables(void)
    - 	struct reftable_stack *st = NULL;
    - 	struct reftable_buf buf = REFTABLE_BUF_INIT;
      	char *dir = get_tmp_dir(__LINE__);
    --	int err;
    + 	int err;
      
     -	err = reftable_new_stack(&st, dir, &opts);
     -	check(!err);
     +	cl_assert(reftable_new_stack(&st, dir, &opts) == 0);
      
      	write_n_ref_tables(st, 5);
    --	check_int(st->merged->readers_len, ==, 5);
    -+	cl_assert_equal_i(st->merged->readers_len, 5);
    +-	check_int(st->merged->tables_len, ==, 5);
    ++	cl_assert_equal_i(st->merged->tables_len, 5);
      
      	/*
      	 * Given that all tables we have written should be roughly the same
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_auto_compaction_wi
      	 */
     -	check(!reftable_buf_addstr(&buf, dir));
     -	check(!reftable_buf_addstr(&buf, "/"));
    --	check(!reftable_buf_addstr(&buf, st->readers[2]->name));
    +-	check(!reftable_buf_addstr(&buf, st->tables[2]->name));
     -	check(!reftable_buf_addstr(&buf, ".lock"));
    -+	cl_assert(reftable_buf_addstr(&buf, dir) == 0);
    -+	cl_assert(reftable_buf_addstr(&buf, "/") == 0);
    -+	cl_assert(reftable_buf_addstr(&buf, st->readers[2]->name) == 0);
    -+	cl_assert(reftable_buf_addstr(&buf, ".lock") == 0);
    ++	cl_assert(!reftable_buf_addstr(&buf, dir));
    ++	cl_assert(!reftable_buf_addstr(&buf, "/"));
    ++	cl_assert(!reftable_buf_addstr(&buf, st->tables[2]->name));
    ++	cl_assert(!reftable_buf_addstr(&buf, ".lock"));
      	write_file_buf(buf.buf, "", 0);
      
      	/*
     @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_auto_compaction_with_locked_tables(void)
    - 	 * would in theory compact all tables, due to the preexisting lock we
      	 * only compact the newest two tables.
      	 */
    --	err = reftable_stack_auto_compact(st);
    + 	err = reftable_stack_auto_compact(st);
     -	check(!err);
     -	check_int(st->stats.failures, ==, 0);
    --	check_int(st->merged->readers_len, ==, 4);
    -+	cl_assert(reftable_stack_auto_compact(st) == 0);
    +-	check_int(st->merged->tables_len, ==, 4);
    ++	cl_assert(!err);
     +	cl_assert_equal_i(st->stats.failures, 0);
    -+	cl_assert_equal_i(st->merged->readers_len, 4);
    ++	cl_assert_equal_i(st->merged->tables_len, 4);
      
      	reftable_stack_destroy(st);
      	reftable_buf_release(&buf);
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_add_performs_auto_
      		 * all tables in the stack.
      		 */
      		if (i != n)
    --			check_int(st->merged->readers_len, ==, i + 1);
    -+			cl_assert_equal_i(st->merged->readers_len, i + 1);
    +-			check_int(st->merged->tables_len, ==, i + 1);
    ++			cl_assert_equal_i(st->merged->tables_len, i + 1);
      		else
    --			check_int(st->merged->readers_len, ==, 1);
    -+			cl_assert_equal_i(st->merged->readers_len, 1);
    +-			check_int(st->merged->tables_len, ==, 1);
    ++			cl_assert_equal_i(st->merged->tables_len, 1);
      	}
      
      	reftable_stack_destroy(st);
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_add_performs_auto_
      	struct reftable_write_options opts = {
      		.disable_auto_compact = 1,
     @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_compaction_with_locked_tables(void)
    - 	struct reftable_stack *st = NULL;
    - 	struct reftable_buf buf = REFTABLE_BUF_INIT;
      	char *dir = get_tmp_dir(__LINE__);
    --	int err;
    + 	int err;
      
     -	err = reftable_new_stack(&st, dir, &opts);
     -	check(!err);
     +	cl_assert(reftable_new_stack(&st, dir, &opts) == 0);
      
      	write_n_ref_tables(st, 3);
    --	check_int(st->merged->readers_len, ==, 3);
    -+	cl_assert_equal_i(st->merged->readers_len, 3);
    +-	check_int(st->merged->tables_len, ==, 3);
    ++	cl_assert_equal_i(st->merged->tables_len, 3);
      
      	/* Lock one of the tables that we're about to compact. */
     -	check(!reftable_buf_addstr(&buf, dir));
     -	check(!reftable_buf_addstr(&buf, "/"));
    --	check(!reftable_buf_addstr(&buf, st->readers[1]->name));
    +-	check(!reftable_buf_addstr(&buf, st->tables[1]->name));
     -	check(!reftable_buf_addstr(&buf, ".lock"));
    -+	cl_assert(reftable_buf_addstr(&buf, dir) == 0);
    -+	cl_assert(reftable_buf_addstr(&buf, "/") == 0);
    -+	cl_assert(reftable_buf_addstr(&buf, st->readers[1]->name) == 0);
    -+	cl_assert(reftable_buf_addstr(&buf, ".lock") == 0);
    ++	cl_assert(!reftable_buf_addstr(&buf, dir));
    ++	cl_assert(!reftable_buf_addstr(&buf, "/"));
    ++	cl_assert(!reftable_buf_addstr(&buf, st->tables[1]->name));
    ++	cl_assert(!reftable_buf_addstr(&buf, ".lock"));
      	write_file_buf(buf.buf, "", 0);
      
      	/*
    - 	 * Compaction is expected to fail given that we were not able to
    +@@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_compaction_with_locked_tables(void)
      	 * compact all tables.
      	 */
    --	err = reftable_stack_compact_all(st, NULL);
    + 	err = reftable_stack_compact_all(st, NULL);
     -	check_int(err, ==, REFTABLE_LOCK_ERROR);
     -	check_int(st->stats.failures, ==, 1);
    --	check_int(st->merged->readers_len, ==, 3);
    -+	cl_assert_equal_i(reftable_stack_compact_all(st, NULL), REFTABLE_LOCK_ERROR);
    +-	check_int(st->merged->tables_len, ==, 3);
    ++	cl_assert_equal_i(err, REFTABLE_LOCK_ERROR);
     +	cl_assert_equal_i(st->stats.failures, 1);
    -+	cl_assert_equal_i(st->merged->readers_len, 3);
    ++	cl_assert_equal_i(st->merged->tables_len, 3);
      
      	reftable_stack_destroy(st);
      	reftable_buf_release(&buf);
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_compaction_with_lo
      }
      
     @@ t/unit-tests/u-reftable-stack.c: static void unclean_stack_close(struct reftable_stack *st)
    - 	REFTABLE_FREE_AND_NULL(st->readers);
    + 	REFTABLE_FREE_AND_NULL(st->tables);
      }
      
     -static void t_reftable_stack_compaction_concurrent_clean(void)
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_compaction_concurr
      {
      	struct reftable_write_options opts = { 0 };
      	struct reftable_stack *st1 = NULL, *st2 = NULL;
    - 	struct reftable_ref_record rec = { 0 };
    - 	struct reftable_iterator it = { 0 };
    - 	char *dir = get_tmp_dir(__LINE__);
    --	int err;
    +@@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_read_across_reload(void)
    + 	int err;
      
      	/* Create a first stack and set up an iterator for it. */
     -	err = reftable_new_stack(&st1, dir, &opts);
     -	check(!err);
     +	cl_assert(reftable_new_stack(&st1, dir, &opts) == 0);
      	write_n_ref_tables(st1, 2);
    --	check_int(st1->merged->readers_len, ==, 2);
    -+	cl_assert_equal_i(st1->merged->readers_len, 2);
    +-	check_int(st1->merged->tables_len, ==, 2);
    ++	cl_assert_equal_i(st1->merged->tables_len, 2);
      	reftable_stack_init_ref_iterator(st1, &it);
     -	err = reftable_iterator_seek_ref(&it, "");
     -	check(!err);
     +	cl_assert(reftable_iterator_seek_ref(&it, "") == 0);
      
      	/* Set up a second stack for the same directory and compact it. */
    --	err = reftable_new_stack(&st2, dir, &opts);
    + 	err = reftable_new_stack(&st2, dir, &opts);
     -	check(!err);
    --	check_int(st2->merged->readers_len, ==, 2);
    --	err = reftable_stack_compact_all(st2, NULL);
    +-	check_int(st2->merged->tables_len, ==, 2);
    ++	cl_assert(!err);
    ++	cl_assert_equal_i(st2->merged->tables_len, 2);
    + 	err = reftable_stack_compact_all(st2, NULL);
     -	check(!err);
    --	check_int(st2->merged->readers_len, ==, 1);
    -+	cl_assert(reftable_new_stack(&st2, dir, &opts) == 0);
    -+	cl_assert_equal_i(st2->merged->readers_len, 2);
    -+	cl_assert(reftable_stack_compact_all(st2, NULL) == 0);
    -+	cl_assert_equal_i(st2->merged->readers_len, 1);
    +-	check_int(st2->merged->tables_len, ==, 1);
    ++	cl_assert(!err);
    ++	cl_assert_equal_i(st2->merged->tables_len, 1);
      
      	/*
      	 * Verify that we can continue to use the old iterator even after we
      	 * have reloaded its stack.
      	 */
    --	err = reftable_stack_reload(st1);
    + 	err = reftable_stack_reload(st1);
     -	check(!err);
    --	check_int(st1->merged->readers_len, ==, 1);
    --	err = reftable_iterator_next_ref(&it, &rec);
    +-	check_int(st1->merged->tables_len, ==, 1);
    ++	cl_assert(!err);
    ++	cl_assert_equal_i(st1->merged->tables_len, 1);
    + 	err = reftable_iterator_next_ref(&it, &rec);
     -	check(!err);
     -	check_str(rec.refname, "refs/heads/branch-0000");
    --	err = reftable_iterator_next_ref(&it, &rec);
    ++	cl_assert(!err);
    ++	cl_assert_equal_s(rec.refname, "refs/heads/branch-0000");
    + 	err = reftable_iterator_next_ref(&it, &rec);
     -	check(!err);
     -	check_str(rec.refname, "refs/heads/branch-0001");
    --	err = reftable_iterator_next_ref(&it, &rec);
    --	check_int(err, >, 0);
    -+	cl_assert(reftable_stack_reload(st1) == 0);
    -+	cl_assert_equal_i(st1->merged->readers_len, 1);
    -+	cl_assert(reftable_iterator_next_ref(&it, &rec) == 0);
    -+	cl_assert_equal_s(rec.refname, "refs/heads/branch-0000");
    -+	cl_assert(reftable_iterator_next_ref(&it, &rec) == 0);
    ++	cl_assert(!err);
     +	cl_assert_equal_s(rec.refname, "refs/heads/branch-0001");
    -+	cl_assert(reftable_iterator_next_ref(&it, &rec) > 0);
    + 	err = reftable_iterator_next_ref(&it, &rec);
    +-	check_int(err, >, 0);
    ++	cl_assert(err > 0);
      
      	reftable_ref_record_release(&rec);
      	reftable_iterator_destroy(&it);
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_read_across_reload
      	struct reftable_write_options opts = { 0 };
      	struct reftable_stack *st = NULL;
     @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_reload_with_missing_table(void)
    - 	struct reftable_iterator it = { 0 };
    - 	struct reftable_buf table_path = REFTABLE_BUF_INIT, content = REFTABLE_BUF_INIT;
    - 	char *dir = get_tmp_dir(__LINE__);
    --	int err;
    + 	int err;
      
      	/* Create a first stack and set up an iterator for it. */
     -	err = reftable_new_stack(&st, dir, &opts);
     -	check(!err);
     +	cl_assert(reftable_new_stack(&st, dir, &opts) == 0);
      	write_n_ref_tables(st, 2);
    --	check_int(st->merged->readers_len, ==, 2);
    -+	cl_assert_equal_i(st->merged->readers_len, 2);
    +-	check_int(st->merged->tables_len, ==, 2);
    ++	cl_assert_equal_i(st->merged->tables_len, 2);
      	reftable_stack_init_ref_iterator(st, &it);
     -	err = reftable_iterator_seek_ref(&it, "");
     -	check(!err);
    @@ t/unit-tests/u-reftable-stack.c: static void t_reftable_stack_reload_with_missin
      
      	/*
      	 * Update the tables.list file with some garbage data, while reusing
    - 	 * our old readers. This should trigger a partial reload of the stack,
    - 	 * where we try to reuse our old readers.
    + 	 * our old tables. This should trigger a partial reload of the stack,
    + 	 * where we try to reuse our old tables.
      	*/
    --	check(!reftable_buf_addstr(&content, st->readers[0]->name));
    +-	check(!reftable_buf_addstr(&content, st->tables[0]->name));
     -	check(!reftable_buf_addstr(&content, "\n"));
    --	check(!reftable_buf_addstr(&content, st->readers[1]->name));
    +-	check(!reftable_buf_addstr(&content, st->tables[1]->name));
     -	check(!reftable_buf_addstr(&content, "\n"));
     -	check(!reftable_buf_addstr(&content, "garbage\n"));
     -	check(!reftable_buf_addstr(&table_path, st->list_file));
     -	check(!reftable_buf_addstr(&table_path, ".lock"));
    -+	cl_assert(reftable_buf_addstr(&content, st->readers[0]->name) == 0);
    -+	cl_assert(reftable_buf_addstr(&content, "\n") == 0);
    -+	cl_assert(reftable_buf_addstr(&content, st->readers[1]->name) == 0);
    -+	cl_assert(reftable_buf_addstr(&content, "\n") == 0);
    -+	cl_assert(reftable_buf_addstr(&content, "garbage\n") == 0);
    -+	cl_assert(reftable_buf_addstr(&table_path, st->list_file) == 0);
    -+	cl_assert(reftable_buf_addstr(&table_path, ".lock") == 0);
    ++	cl_assert(!reftable_buf_addstr(&content, st->tables[0]->name));
    ++	cl_assert(!reftable_buf_addstr(&content, "\n"));
    ++	cl_assert(!reftable_buf_addstr(&content, st->tables[1]->name));
    ++	cl_assert(!reftable_buf_addstr(&content, "\n"));
    ++	cl_assert(!reftable_buf_addstr(&content, "garbage\n"));
    ++	cl_assert(!reftable_buf_addstr(&table_path, st->list_file));
    ++	cl_assert(!reftable_buf_addstr(&table_path, ".lock"));
      	write_file_buf(table_path.buf, content.buf, content.len);
     -	err = rename(table_path.buf, st->list_file);
     -	check(!err);
     +	cl_assert(rename(table_path.buf, st->list_file) == 0);
      
    --	err = reftable_stack_reload(st);
    + 	err = reftable_stack_reload(st);
     -	check_int(err, ==, -4);
    --	check_int(st->merged->readers_len, ==, 2);
    -+	cl_assert_equal_i(reftable_stack_reload(st), -4);
    -+	cl_assert_equal_i(st->merged->readers_len, 2);
    +-	check_int(st->merged->tables_len, ==, 2);
    ++	cl_assert_equal_i(err, -4);
    ++	cl_assert_equal_i(st->merged->tables_len, 2);
      
      	/*
      	 * Even though the reload has failed, we should be able to continue
10:  79aa0145aa <  -:  ---------- t/unit-tests: adapt lib-reftable{c,h} helper functions to clar
 -:  ---------- > 10:  7ea45d3600 t/unit-tests: finalize migration of reftable-related tests
-- 
2.43.0





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux