t/unit-tests: convert reftable merged test to use clar

Adapt reftable merged test file to use clar testing framework by using clar assertions where necessary. Signed-off-by: Seyi Kuforiji <kuforiji98@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Seyi Kuforiji committed Jul 24, 2025 at 15:28 UTC c7784ba6002e020472bdff55995cc1f6f252f09b
3 files changed +72 -94
Makefile
+1 -1
@@ -1366,6 +1366,7 @@ CLAR_TEST_SUITES += u-oidtree
1366 CLAR_TEST_SUITES += u-prio-queue
1367 CLAR_TEST_SUITES += u-reftable-basics
1368 CLAR_TEST_SUITES += u-reftable-block
1369 +CLAR_TEST_SUITES += u-reftable-merged
1370 CLAR_TEST_SUITES += u-reftable-tree
1371 CLAR_TEST_SUITES += u-strbuf
1372 CLAR_TEST_SUITES += u-strcmp-offset
@@ -1379,7 +1380,6 @@ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
1380 CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
1381 CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable-clar.o
1382
1382 -UNIT_TEST_PROGRAMS += t-reftable-merged
1383 UNIT_TEST_PROGRAMS += t-reftable-pq
1384 UNIT_TEST_PROGRAMS += t-reftable-readwrite
1385 UNIT_TEST_PROGRAMS += t-reftable-record
t/meson.build
+1 -1
@@ -10,6 +10,7 @@ clar_test_suites = [
10 'unit-tests/u-prio-queue.c',
11 'unit-tests/u-reftable-basics.c',
12 'unit-tests/u-reftable-block.c',
13 + 'unit-tests/u-reftable-merged.c',
14 'unit-tests/u-reftable-tree.c',
15 'unit-tests/u-strbuf.c',
16 'unit-tests/u-strcmp-offset.c',
@@ -57,7 +58,6 @@ clar_unit_tests = executable('unit-tests',
58 test('unit-tests', clar_unit_tests)
59
60 unit_test_programs = [
60 - 'unit-tests/t-reftable-merged.c',
61 'unit-tests/t-reftable-pq.c',
62 'unit-tests/t-reftable-readwrite.c',
63 'unit-tests/t-reftable-record.c',
t/unit-tests/u-reftable-merged.c renamed
+70 -92
@@ -6,8 +6,8 @@ license that can be found in the LICENSE file or at
6 https://developers.google.com/open-source/licenses/bsd
7 */
8
9 -#include "test-lib.h"
10 -#include "lib-reftable.h"
9 +#include "unit-test.h"
10 +#include "lib-reftable-clar.h"
11 #include "reftable/blocksource.h"
12 #include "reftable/constants.h"
13 #include "reftable/merged.h"
@@ -29,21 +29,21 @@ merged_table_from_records(struct reftable_ref_record **refs,
29 int err;
30
31 REFTABLE_CALLOC_ARRAY(*tables, n);
32 - check(*tables != NULL);
32 + cl_assert(*tables != NULL);
33 REFTABLE_CALLOC_ARRAY(*source, n);
34 - check(*source != NULL);
34 + cl_assert(*source != NULL);
35
36 for (size_t i = 0; i < n; i++) {
37 - t_reftable_write_to_buf(&buf[i], refs[i], sizes[i], NULL, 0, &opts);
37 + cl_reftable_write_to_buf(&buf[i], refs[i], sizes[i], NULL, 0, &opts);
38 block_source_from_buf(&(*source)[i], &buf[i]);
39
40 err = reftable_table_new(&(*tables)[i], &(*source)[i],
41 "name");
42 - check(!err);
42 + cl_assert(!err);
43 }
44
45 err = reftable_merged_table_new(&mt, *tables, n, REFTABLE_HASH_SHA1);
46 - check(!err);
46 + cl_assert(!err);
47 return mt;
48 }
49
@@ -54,7 +54,7 @@ static void tables_destroy(struct reftable_table **tables, const size_t n)
54 reftable_free(tables);
55 }
56
57 -static void t_merged_single_record(void)
57 +void test_reftable_merged__single_record(void)
58 {
59 struct reftable_ref_record r1[] = { {
60 .refname = (char *) "b",
@@ -85,13 +85,14 @@ static void t_merged_single_record(void)
85 int err;
86
87 err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
88 - check(!err);
88 + cl_assert(!err);
89 err = reftable_iterator_seek_ref(&it, "a");
90 - check(!err);
90 + cl_assert(!err);
91
92 err = reftable_iterator_next_ref(&it, &ref);
93 - check(!err);
94 - check(reftable_ref_record_equal(&r2[0], &ref, REFTABLE_HASH_SIZE_SHA1));
93 + cl_assert(!err);
94 + cl_assert(reftable_ref_record_equal(&r2[0], &ref,
95 + REFTABLE_HASH_SIZE_SHA1) != 0);
96 reftable_ref_record_release(&ref);
97 reftable_iterator_destroy(&it);
98 tables_destroy(tables, 3);
@@ -101,7 +102,7 @@ static void t_merged_single_record(void)
102 reftable_free(bs);
103 }
104
104 -static void t_merged_refs(void)
105 +void test_reftable_merged__refs(void)
106 {
107 struct reftable_ref_record r1[] = {
108 {
@@ -165,12 +166,12 @@ static void t_merged_refs(void)
166 size_t i;
167
168 err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
168 - check(!err);
169 + cl_assert(!err);
170 err = reftable_iterator_seek_ref(&it, "a");
170 - check(!err);
171 - check_int(reftable_merged_table_hash_id(mt), ==, REFTABLE_HASH_SHA1);
172 - check_int(reftable_merged_table_min_update_index(mt), ==, 1);
173 - check_int(reftable_merged_table_max_update_index(mt), ==, 3);
171 + cl_assert(err == 0);
172 + cl_assert_equal_i(reftable_merged_table_hash_id(mt), REFTABLE_HASH_SHA1);
173 + cl_assert_equal_i(reftable_merged_table_min_update_index(mt), 1);
174 + cl_assert_equal_i(reftable_merged_table_max_update_index(mt), 3);
175
176 while (len < 100) { /* cap loops/recursion. */
177 struct reftable_ref_record ref = { 0 };
@@ -178,15 +179,15 @@ static void t_merged_refs(void)
179 if (err > 0)
180 break;
181
181 - check(!REFTABLE_ALLOC_GROW(out, len + 1, cap));
182 + cl_assert(REFTABLE_ALLOC_GROW(out, len + 1, cap) == 0);
183 out[len++] = ref;
184 }
185 reftable_iterator_destroy(&it);
186
186 - check_int(ARRAY_SIZE(want), ==, len);
187 + cl_assert_equal_i(ARRAY_SIZE(want), len);
188 for (i = 0; i < len; i++)
188 - check(reftable_ref_record_equal(want[i], &out[i],
189 - REFTABLE_HASH_SIZE_SHA1));
189 + cl_assert(reftable_ref_record_equal(want[i], &out[i],
190 + REFTABLE_HASH_SIZE_SHA1) != 0);
191 for (i = 0; i < len; i++)
192 reftable_ref_record_release(&out[i]);
193 reftable_free(out);
@@ -198,7 +199,7 @@ static void t_merged_refs(void)
199 reftable_free(bs);
200 }
201
201 -static void t_merged_seek_multiple_times(void)
202 +void test_reftable_merged__seek_multiple_times(void)
203 {
204 struct reftable_ref_record r1[] = {
205 {
@@ -248,20 +249,17 @@ static void t_merged_seek_multiple_times(void)
249
250 for (size_t i = 0; i < 5; i++) {
251 int err = reftable_iterator_seek_ref(&it, "c");
251 - check(!err);
252 + cl_assert(!err);
253
253 - err = reftable_iterator_next_ref(&it, &rec);
254 - check(!err);
255 - err = reftable_ref_record_equal(&rec, &r1[1], REFTABLE_HASH_SIZE_SHA1);
256 - check(err == 1);
254 + cl_assert(reftable_iterator_next_ref(&it, &rec) == 0);
255 + cl_assert_equal_i(reftable_ref_record_equal(&rec, &r1[1],
256 + REFTABLE_HASH_SIZE_SHA1), 1);
257
258 - err = reftable_iterator_next_ref(&it, &rec);
259 - check(!err);
260 - err = reftable_ref_record_equal(&rec, &r2[1], REFTABLE_HASH_SIZE_SHA1);
261 - check(err == 1);
258 + cl_assert(reftable_iterator_next_ref(&it, &rec) == 0);
259 + cl_assert_equal_i(reftable_ref_record_equal(&rec, &r2[1],
260 + REFTABLE_HASH_SIZE_SHA1), 1);
261
263 - err = reftable_iterator_next_ref(&it, &rec);
264 - check(err > 0);
262 + cl_assert(reftable_iterator_next_ref(&it, &rec) > 0);
263 }
264
265 for (size_t i = 0; i < ARRAY_SIZE(bufs); i++)
@@ -273,7 +271,7 @@ static void t_merged_seek_multiple_times(void)
271 reftable_free(sources);
272 }
273
276 -static void t_merged_seek_multiple_times_without_draining(void)
274 +void test_reftable_merged__seek_multiple_times_no_drain(void)
275 {
276 struct reftable_ref_record r1[] = {
277 {
@@ -317,24 +315,19 @@ static void t_merged_seek_multiple_times_without_draining(void)
315 struct reftable_ref_record rec = { 0 };
316 struct reftable_iterator it = { 0 };
317 struct reftable_merged_table *mt;
320 - int err;
318
319 mt = merged_table_from_records(refs, &sources, &tables, sizes, bufs, 2);
320 merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
321
325 - err = reftable_iterator_seek_ref(&it, "b");
326 - check(!err);
327 - err = reftable_iterator_next_ref(&it, &rec);
328 - check(!err);
329 - err = reftable_ref_record_equal(&rec, &r2[0], REFTABLE_HASH_SIZE_SHA1);
330 - check(err == 1);
322 + cl_assert(reftable_iterator_seek_ref(&it, "b") == 0);
323 + cl_assert(reftable_iterator_next_ref(&it, &rec) == 0);
324 + cl_assert_equal_i(reftable_ref_record_equal(&rec, &r2[0],
325 + REFTABLE_HASH_SIZE_SHA1), 1);
326
332 - err = reftable_iterator_seek_ref(&it, "a");
333 - check(!err);
334 - err = reftable_iterator_next_ref(&it, &rec);
335 - check(!err);
336 - err = reftable_ref_record_equal(&rec, &r1[0], REFTABLE_HASH_SIZE_SHA1);
337 - check(err == 1);
327 + cl_assert(reftable_iterator_seek_ref(&it, "a") == 0);
328 + cl_assert(reftable_iterator_next_ref(&it, &rec) == 0);
329 + cl_assert_equal_i(reftable_ref_record_equal(&rec, &r1[0],
330 + REFTABLE_HASH_SIZE_SHA1), 1);
331
332 for (size_t i = 0; i < ARRAY_SIZE(bufs); i++)
333 reftable_buf_release(&bufs[i]);
@@ -359,25 +352,25 @@ merged_table_from_log_records(struct reftable_log_record **logs,
352 int err;
353
354 REFTABLE_CALLOC_ARRAY(*tables, n);
362 - check(*tables != NULL);
355 + cl_assert(*tables != NULL);
356 REFTABLE_CALLOC_ARRAY(*source, n);
364 - check(*source != NULL);
357 + cl_assert(*source != NULL);
358
359 for (size_t i = 0; i < n; i++) {
367 - t_reftable_write_to_buf(&buf[i], NULL, 0, logs[i], sizes[i], &opts);
360 + cl_reftable_write_to_buf(&buf[i], NULL, 0, logs[i], sizes[i], &opts);
361 block_source_from_buf(&(*source)[i], &buf[i]);
362
363 err = reftable_table_new(&(*tables)[i], &(*source)[i],
364 "name");
372 - check(!err);
365 + cl_assert(!err);
366 }
367
368 err = reftable_merged_table_new(&mt, *tables, n, REFTABLE_HASH_SHA1);
376 - check(!err);
369 + cl_assert(!err);
370 return mt;
371 }
372
380 -static void t_merged_logs(void)
373 +void test_reftable_merged__logs(void)
374 {
375 struct reftable_log_record r1[] = {
376 {
@@ -439,19 +432,19 @@ static void t_merged_logs(void)
432 struct reftable_merged_table *mt = merged_table_from_log_records(
433 logs, &bs, &tables, sizes, bufs, 3);
434 struct reftable_iterator it = { 0 };
442 - int err;
435 struct reftable_log_record *out = NULL;
436 size_t len = 0;
437 size_t cap = 0;
438 size_t i;
439 + int err;
440
441 err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_LOG);
449 - check(!err);
442 + cl_assert(!err);
443 err = reftable_iterator_seek_log(&it, "a");
451 - check(!err);
452 - check_int(reftable_merged_table_hash_id(mt), ==, REFTABLE_HASH_SHA1);
453 - check_int(reftable_merged_table_min_update_index(mt), ==, 1);
454 - check_int(reftable_merged_table_max_update_index(mt), ==, 3);
444 + cl_assert(!err);
445 + cl_assert_equal_i(reftable_merged_table_hash_id(mt), REFTABLE_HASH_SHA1);
446 + cl_assert_equal_i(reftable_merged_table_min_update_index(mt), 1);
447 + cl_assert_equal_i(reftable_merged_table_max_update_index(mt), 3);
448
449 while (len < 100) { /* cap loops/recursion. */
450 struct reftable_log_record log = { 0 };
@@ -459,24 +452,24 @@ static void t_merged_logs(void)
452 if (err > 0)
453 break;
454
462 - check(!REFTABLE_ALLOC_GROW(out, len + 1, cap));
455 + cl_assert(REFTABLE_ALLOC_GROW(out, len + 1, cap) == 0);
456 out[len++] = log;
457 }
458 reftable_iterator_destroy(&it);
459
467 - check_int(ARRAY_SIZE(want), ==, len);
460 + cl_assert_equal_i(ARRAY_SIZE(want), len);
461 for (i = 0; i < len; i++)
469 - check(reftable_log_record_equal(want[i], &out[i],
470 - REFTABLE_HASH_SIZE_SHA1));
462 + cl_assert(reftable_log_record_equal(want[i], &out[i],
463 + REFTABLE_HASH_SIZE_SHA1) != 0);
464
465 err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_LOG);
473 - check(!err);
466 + cl_assert(!err);
467 err = reftable_iterator_seek_log_at(&it, "a", 2);
475 - check(!err);
468 + cl_assert(!err);
469 reftable_log_record_release(&out[0]);
477 - err = reftable_iterator_next_log(&it, &out[0]);
478 - check(!err);
479 - check(reftable_log_record_equal(&out[0], &r3[0], REFTABLE_HASH_SIZE_SHA1));
470 + cl_assert(reftable_iterator_next_log(&it, &out[0]) == 0);
471 + cl_assert(reftable_log_record_equal(&out[0], &r3[0],
472 + REFTABLE_HASH_SIZE_SHA1) != 0);
473 reftable_iterator_destroy(&it);
474
475 for (i = 0; i < len; i++)
@@ -490,11 +483,11 @@ static void t_merged_logs(void)
483 reftable_free(bs);
484 }
485
493 -static void t_default_write_opts(void)
486 +void test_reftable_merged__default_write_opts(void)
487 {
488 struct reftable_write_options opts = { 0 };
489 struct reftable_buf buf = REFTABLE_BUF_INIT;
497 - struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
490 + struct reftable_writer *w = cl_reftable_strbuf_writer(&buf, &opts);
491 struct reftable_ref_record rec = {
492 .refname = (char *) "master",
493 .update_index = 1,
@@ -507,40 +500,25 @@ static void t_default_write_opts(void)
500
501 reftable_writer_set_limits(w, 1, 1);
502
510 - err = reftable_writer_add_ref(w, &rec);
511 - check(!err);
503 + cl_assert_equal_i(reftable_writer_add_ref(w, &rec), 0);
504
513 - err = reftable_writer_close(w);
514 - check(!err);
505 + cl_assert_equal_i(reftable_writer_close(w), 0);
506 reftable_writer_free(w);
507
508 block_source_from_buf(&source, &buf);
509
510 err = reftable_table_new(&table, &source, "filename");
520 - check(!err);
511 + cl_assert(!err);
512
513 hash_id = reftable_table_hash_id(table);
523 - check_int(hash_id, ==, REFTABLE_HASH_SHA1);
514 + cl_assert_equal_i(hash_id, REFTABLE_HASH_SHA1);
515
516 err = reftable_merged_table_new(&merged, &table, 1, REFTABLE_HASH_SHA256);
526 - check_int(err, ==, REFTABLE_FORMAT_ERROR);
517 + cl_assert_equal_i(err, REFTABLE_FORMAT_ERROR);
518 err = reftable_merged_table_new(&merged, &table, 1, REFTABLE_HASH_SHA1);
528 - check(!err);
519 + cl_assert(!err);
520
521 reftable_table_decref(table);
522 reftable_merged_table_free(merged);
523 reftable_buf_release(&buf);
524 }
534 -
535 -
536 -int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
537 -{
538 - TEST(t_default_write_opts(), "merged table with default write opts");
539 - TEST(t_merged_logs(), "merged table with multiple log updates for same ref");
540 - TEST(t_merged_refs(), "merged table with multiple updates to same ref");
541 - TEST(t_merged_seek_multiple_times(), "merged table can seek multiple times");
542 - TEST(t_merged_seek_multiple_times_without_draining(), "merged table can seek multiple times without draining");
543 - TEST(t_merged_single_record(), "ref occurring in only one record can be fetched");
544 -
545 - return test_done();
546 -}