Skip to content

Commit 80b8016

Browse files
committed
Merge branch 'sk/reftable-clarify-tests'
The reftable unit tests are now ported to the "clar" unit testing framework. * sk/reftable-clarify-tests: t/unit-tests: finalize migration of reftable-related tests t/unit-tests: convert reftable stack test to use clar t/unit-tests: convert reftable record test to use clar t/unit-tests: convert reftable readwrite test to use clar t/unit-tests: convert reftable table test to use clar t/unit-tests: convert reftable pq test to use clar t/unit-tests: convert reftable merged test to use clar t/unit-tests: convert reftable block test to use clar t/unit-tests: convert reftable basics test to use clar test framework t/unit-tests: implement clar specific reftable test helper functions
2 parents 6fe666b + 9bbc981 commit 80b8016

14 files changed

+1117
-1331
lines changed

Makefile

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,6 +1362,13 @@ CLAR_TEST_SUITES += u-oid-array
13621362
CLAR_TEST_SUITES += u-oidmap
13631363
CLAR_TEST_SUITES += u-oidtree
13641364
CLAR_TEST_SUITES += u-prio-queue
1365+
CLAR_TEST_SUITES += u-reftable-basics
1366+
CLAR_TEST_SUITES += u-reftable-block
1367+
CLAR_TEST_SUITES += u-reftable-merged
1368+
CLAR_TEST_SUITES += u-reftable-pq
1369+
CLAR_TEST_SUITES += u-reftable-readwrite
1370+
CLAR_TEST_SUITES += u-reftable-stack
1371+
CLAR_TEST_SUITES += u-reftable-table
13651372
CLAR_TEST_SUITES += u-reftable-tree
13661373
CLAR_TEST_SUITES += u-strbuf
13671374
CLAR_TEST_SUITES += u-strcmp-offset
@@ -1372,20 +1379,11 @@ CLAR_TEST_SUITES += u-urlmatch-normalization
13721379
CLAR_TEST_PROG = $(UNIT_TEST_BIN)/unit-tests$(X)
13731380
CLAR_TEST_OBJS = $(patsubst %,$(UNIT_TEST_DIR)/%.o,$(CLAR_TEST_SUITES))
13741381
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/clar/clar.o
1375-
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
13761382
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
1383+
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
1384+
CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
13771385

1378-
UNIT_TEST_PROGRAMS += t-reftable-basics
1379-
UNIT_TEST_PROGRAMS += t-reftable-block
1380-
UNIT_TEST_PROGRAMS += t-reftable-merged
1381-
UNIT_TEST_PROGRAMS += t-reftable-pq
1382-
UNIT_TEST_PROGRAMS += t-reftable-readwrite
1383-
UNIT_TEST_PROGRAMS += t-reftable-record
1384-
UNIT_TEST_PROGRAMS += t-reftable-stack
1385-
UNIT_TEST_PROGRAMS += t-reftable-table
1386-
UNIT_TEST_PROGS = $(patsubst %,$(UNIT_TEST_BIN)/%$X,$(UNIT_TEST_PROGRAMS))
13871386
UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/test-lib.o
1388-
UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
13891387

13901388
# xdiff and reftable libs may in turn depend on what is in libgit.a
13911389
GITLIBS = common-main.o $(LIB_FILE) $(XDIFF_LIB) $(REFTABLE_LIB) $(LIB_FILE)

t/Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ check-meson:
125125
@mkdir -p mesontmp && \
126126
printf "%s\n" \
127127
"integration_tests t[0-9][0-9][0-9][0-9]-*.sh" \
128-
"unit_test_programs unit-tests/t-*.c" \
129128
"clar_test_suites unit-tests/u-*.c" | \
130129
while read -r variable pattern; do \
131130
awk "/^$$variable = \[\$$/ {flag=1 ; next } /^]$$/ { flag=0 } flag { gsub(/^ \047/, \"\"); gsub(/\047,\$$/, \"\"); print }" meson.build >mesontmp/meson.txt && \

t/meson.build

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ clar_test_suites = [
88
'unit-tests/u-oidmap.c',
99
'unit-tests/u-oidtree.c',
1010
'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-pq.c',
15+
'unit-tests/u-reftable-readwrite.c',
16+
'unit-tests/u-reftable-record.c',
17+
'unit-tests/u-reftable-stack.c',
18+
'unit-tests/u-reftable-table.c',
1119
'unit-tests/u-reftable-tree.c',
1220
'unit-tests/u-strbuf.c',
1321
'unit-tests/u-strcmp-offset.c',
@@ -20,7 +28,8 @@ clar_test_suites = [
2028
clar_sources = [
2129
'unit-tests/clar/clar.c',
2230
'unit-tests/unit-test.c',
23-
'unit-tests/lib-oid.c'
31+
'unit-tests/lib-oid.c',
32+
'unit-tests/lib-reftable.c'
2433
]
2534

2635
clar_decls_h = custom_target(
@@ -54,33 +63,6 @@ clar_unit_tests = executable('unit-tests',
5463
)
5564
test('unit-tests', clar_unit_tests, kwargs: test_kwargs)
5665

57-
unit_test_programs = [
58-
'unit-tests/t-reftable-basics.c',
59-
'unit-tests/t-reftable-block.c',
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',
64-
'unit-tests/t-reftable-stack.c',
65-
'unit-tests/t-reftable-table.c',
66-
]
67-
68-
foreach unit_test_program : unit_test_programs
69-
unit_test_name = fs.stem(unit_test_program)
70-
unit_test = executable(unit_test_name,
71-
sources: [
72-
'unit-tests/test-lib.c',
73-
'unit-tests/lib-reftable.c',
74-
unit_test_program,
75-
],
76-
dependencies: [libgit_commonmain],
77-
)
78-
test(unit_test_name, unit_test,
79-
workdir: meson.current_source_dir(),
80-
kwargs: test_kwargs,
81-
)
82-
endforeach
83-
8466
subdir('helper')
8567

8668
integration_tests = [
@@ -1163,8 +1145,6 @@ benchmarks = [
11631145
# sufficient to catch missing test suites in our CI though.
11641146
foreach glob, tests : {
11651147
't[0-9][0-9][0-9][0-9]-*.sh': integration_tests,
1166-
'perf/p[0-9][0-9][0-9][0-9]-*.sh': benchmarks,
1167-
'unit-tests/t-*.c': unit_test_programs,
11681148
'unit-tests/u-*.c': clar_test_suites,
11691149
}
11701150
actual_tests = run_command(shell, '-c', 'ls ' + glob,
@@ -1231,4 +1211,4 @@ if perl.found() and time.found()
12311211
timeout: 0,
12321212
)
12331213
endforeach
1234-
endif
1214+
endif

t/unit-tests/lib-reftable.c

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
#define DISABLE_SIGN_COMPARE_WARNINGS
2-
1+
#include "unit-test.h"
32
#include "lib-reftable.h"
4-
#include "test-lib.h"
3+
#include "hex.h"
4+
#include "parse-options.h"
55
#include "reftable/constants.h"
66
#include "reftable/writer.h"
77
#include "strbuf.h"
8+
#include "string-list.h"
9+
#include "strvec.h"
810

9-
void t_reftable_set_hash(uint8_t *p, int i, enum reftable_hash id)
11+
void cl_reftable_set_hash(uint8_t *p, int i, enum reftable_hash id)
1012
{
1113
memset(p, (uint8_t)i, hash_size(id));
1214
}
@@ -22,17 +24,17 @@ static int strbuf_writer_flush(void *arg UNUSED)
2224
return 0;
2325
}
2426

25-
struct reftable_writer *t_reftable_strbuf_writer(struct reftable_buf *buf,
27+
struct reftable_writer *cl_reftable_strbuf_writer(struct reftable_buf *buf,
2628
struct reftable_write_options *opts)
2729
{
2830
struct reftable_writer *writer;
2931
int ret = reftable_writer_new(&writer, &strbuf_writer_write, &strbuf_writer_flush,
3032
buf, opts);
31-
check(!ret);
33+
cl_assert(!ret);
3234
return writer;
3335
}
3436

35-
void t_reftable_write_to_buf(struct reftable_buf *buf,
37+
void cl_reftable_write_to_buf(struct reftable_buf *buf,
3638
struct reftable_ref_record *refs,
3739
size_t nrefs,
3840
struct reftable_log_record *logs,
@@ -64,35 +66,36 @@ void t_reftable_write_to_buf(struct reftable_buf *buf,
6466
min = ui;
6567
}
6668

67-
writer = t_reftable_strbuf_writer(buf, &opts);
68-
reftable_writer_set_limits(writer, min, max);
69+
writer = cl_reftable_strbuf_writer(buf, &opts);
70+
ret = reftable_writer_set_limits(writer, min, max);
71+
cl_assert(!ret);
6972

7073
if (nrefs) {
7174
ret = reftable_writer_add_refs(writer, refs, nrefs);
72-
check_int(ret, ==, 0);
75+
cl_assert_equal_i(ret, 0);
7376
}
7477

7578
if (nlogs) {
7679
ret = reftable_writer_add_logs(writer, logs, nlogs);
77-
check_int(ret, ==, 0);
80+
cl_assert_equal_i(ret, 0);
7881
}
7982

8083
ret = reftable_writer_close(writer);
81-
check_int(ret, ==, 0);
84+
cl_assert_equal_i(ret, 0);
8285

8386
stats = reftable_writer_stats(writer);
84-
for (size_t i = 0; i < stats->ref_stats.blocks; i++) {
87+
for (size_t i = 0; i < (size_t)stats->ref_stats.blocks; i++) {
8588
size_t off = i * (opts.block_size ? opts.block_size
8689
: DEFAULT_BLOCK_SIZE);
8790
if (!off)
8891
off = header_size(opts.hash_id == REFTABLE_HASH_SHA256 ? 2 : 1);
89-
check_char(buf->buf[off], ==, 'r');
92+
cl_assert(buf->buf[off] == 'r');
9093
}
9194

9295
if (nrefs)
93-
check_int(stats->ref_stats.blocks, >, 0);
96+
cl_assert(stats->ref_stats.blocks > 0);
9497
if (nlogs)
95-
check_int(stats->log_stats.blocks, >, 0);
98+
cl_assert(stats->log_stats.blocks > 0);
9699

97100
reftable_writer_free(writer);
98101
}

t/unit-tests/lib-reftable.h

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
1-
#ifndef LIB_REFTABLE_H
2-
#define LIB_REFTABLE_H
3-
1+
#include "git-compat-util.h"
2+
#include "clar/clar.h"
3+
#include "clar-decls.h"
44
#include "git-compat-util.h"
55
#include "reftable/reftable-writer.h"
6+
#include "strbuf.h"
67

78
struct reftable_buf;
89

9-
void t_reftable_set_hash(uint8_t *p, int i, enum reftable_hash id);
10+
void cl_reftable_set_hash(uint8_t *p, int i, enum reftable_hash id);
1011

11-
struct reftable_writer *t_reftable_strbuf_writer(struct reftable_buf *buf,
12+
struct reftable_writer *cl_reftable_strbuf_writer(struct reftable_buf *buf,
1213
struct reftable_write_options *opts);
1314

14-
void t_reftable_write_to_buf(struct reftable_buf *buf,
15+
void cl_reftable_write_to_buf(struct reftable_buf *buf,
1516
struct reftable_ref_record *refs,
1617
size_t nrecords,
1718
struct reftable_log_record *logs,
1819
size_t nlogs,
1920
struct reftable_write_options *opts);
20-
21-
#endif

0 commit comments

Comments
 (0)