[PATCH v2 05/12] t/unit-tests: introduce test helper to write reftable blocks
From: Patrick Steinhardt <hidden>
Date: 2026-06-29 09:02:33
Subsystem:
the rest · Maintainer:
Linus Torvalds
Introduce a new test helper that allows us to write reftable blocks. This helper will be used by subsequent commits. Suggested-by: Christian Couder <redacted> Signed-off-by: Patrick Steinhardt <redacted> --- t/unit-tests/u-reftable-block.c | 47 ++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 19 deletions(-)
diff --git a/t/unit-tests/u-reftable-block.c b/t/unit-tests/u-reftable-block.c
index f4bded7d26..f4e926ce3a 100644
--- a/t/unit-tests/u-reftable-block.c
+++ b/t/unit-tests/u-reftable-block.c@@ -14,6 +14,31 @@ license that can be found in the LICENSE file or at #include "reftable/reftable-error.h" #include "strbuf.h" +static int cl_reftable_write_block(struct reftable_buf *buf, + uint8_t block_type, + struct reftable_record *recs, + size_t nrecs) +{ + struct block_writer writer = { + .last_key = REFTABLE_BUF_INIT, + }; + uint8_t block[1024]; + int block_end; + + cl_must_pass(block_writer_init(&writer, block_type, block, 1024, + 0, hash_size(REFTABLE_HASH_SHA1))); + for (size_t i = 0; i < nrecs; i++) + cl_must_pass(block_writer_add(&writer, &recs[i])); + + block_end = block_writer_finish(&writer); + cl_assert(block_end > 0); + + cl_must_pass(reftable_buf_add(buf, block, block_end)); + + block_writer_release(&writer); + return block_end; +} + void test_reftable_block__read_write(void) { const int header_off = 21; /* random */
@@ -381,25 +406,13 @@ void test_reftable_block__ref_read_write(void) void test_reftable_block__iterator(void) { struct reftable_block_source source = { 0 }; - struct block_writer writer = { - .last_key = REFTABLE_BUF_INIT, - }; struct reftable_record expected_refs[20]; struct reftable_ref_record ref = { 0 }; struct reftable_iterator it = { 0 }; struct reftable_block block = { 0 }; - struct reftable_buf data; + struct reftable_buf data = REFTABLE_BUF_INIT; int err; - data.len = 1024; - REFTABLE_CALLOC_ARRAY(data.buf, data.len); - cl_assert(data.buf != NULL); - - err = block_writer_init(&writer, REFTABLE_BLOCK_TYPE_REF, - (uint8_t *) data.buf, data.len, - 0, hash_size(REFTABLE_HASH_SHA1)); - cl_assert(!err); - for (size_t i = 0; i < ARRAY_SIZE(expected_refs); i++) { expected_refs[i] = (struct reftable_record) { .type = REFTABLE_BLOCK_TYPE_REF,
@@ -409,13 +422,10 @@ void test_reftable_block__iterator(void) }, }; memset(expected_refs[i].u.ref.value.val1, i, REFTABLE_HASH_SIZE_SHA1); - - err = block_writer_add(&writer, &expected_refs[i]); - cl_assert_equal_i(err, 0); } - err = block_writer_finish(&writer); - cl_assert(err > 0); + cl_reftable_write_block(&data, REFTABLE_BLOCK_TYPE_REF, + expected_refs, ARRAY_SIZE(expected_refs)); block_source_from_buf(&source, &data); reftable_block_init(&block, &source, 0, 0, data.len,
@@ -453,6 +463,5 @@ void test_reftable_block__iterator(void) reftable_ref_record_release(&ref); reftable_iterator_destroy(&it); reftable_block_release(&block); - block_writer_release(&writer); reftable_buf_release(&data); }
--
2.55.0.rc2.803.g1fd1e6609c.dirty