Skip to content

Commit a0eb4ca

Browse files
pks-tgitster
authored andcommitted
t/unit-tests: introduce test helper to write reftable blocks
Introduce a new test helper that allows us to write reftable blocks. This helper will be used by subsequent commits. Suggested-by: Christian Couder <christian.couder@gmail.com> Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent ed103ab commit a0eb4ca

1 file changed

Lines changed: 28 additions & 19 deletions

File tree

t/unit-tests/u-reftable-block.c

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,31 @@ license that can be found in the LICENSE file or at
1414
#include "reftable/reftable-error.h"
1515
#include "strbuf.h"
1616

17+
static int cl_reftable_write_block(struct reftable_buf *buf,
18+
uint8_t block_type,
19+
struct reftable_record *recs,
20+
size_t nrecs)
21+
{
22+
struct block_writer writer = {
23+
.last_key = REFTABLE_BUF_INIT,
24+
};
25+
uint8_t block[1024];
26+
int block_end;
27+
28+
cl_must_pass(block_writer_init(&writer, block_type, block, 1024,
29+
0, hash_size(REFTABLE_HASH_SHA1)));
30+
for (size_t i = 0; i < nrecs; i++)
31+
cl_must_pass(block_writer_add(&writer, &recs[i]));
32+
33+
block_end = block_writer_finish(&writer);
34+
cl_assert(block_end > 0);
35+
36+
cl_must_pass(reftable_buf_add(buf, block, block_end));
37+
38+
block_writer_release(&writer);
39+
return block_end;
40+
}
41+
1742
void test_reftable_block__read_write(void)
1843
{
1944
const int header_off = 21; /* random */
@@ -381,25 +406,13 @@ void test_reftable_block__ref_read_write(void)
381406
void test_reftable_block__iterator(void)
382407
{
383408
struct reftable_block_source source = { 0 };
384-
struct block_writer writer = {
385-
.last_key = REFTABLE_BUF_INIT,
386-
};
387409
struct reftable_record expected_refs[20];
388410
struct reftable_ref_record ref = { 0 };
389411
struct reftable_iterator it = { 0 };
390412
struct reftable_block block = { 0 };
391-
struct reftable_buf data;
413+
struct reftable_buf data = REFTABLE_BUF_INIT;
392414
int err;
393415

394-
data.len = 1024;
395-
REFTABLE_CALLOC_ARRAY(data.buf, data.len);
396-
cl_assert(data.buf != NULL);
397-
398-
err = block_writer_init(&writer, REFTABLE_BLOCK_TYPE_REF,
399-
(uint8_t *) data.buf, data.len,
400-
0, hash_size(REFTABLE_HASH_SHA1));
401-
cl_assert(!err);
402-
403416
for (size_t i = 0; i < ARRAY_SIZE(expected_refs); i++) {
404417
expected_refs[i] = (struct reftable_record) {
405418
.type = REFTABLE_BLOCK_TYPE_REF,
@@ -409,13 +422,10 @@ void test_reftable_block__iterator(void)
409422
},
410423
};
411424
memset(expected_refs[i].u.ref.value.val1, i, REFTABLE_HASH_SIZE_SHA1);
412-
413-
err = block_writer_add(&writer, &expected_refs[i]);
414-
cl_assert_equal_i(err, 0);
415425
}
416426

417-
err = block_writer_finish(&writer);
418-
cl_assert(err > 0);
427+
cl_reftable_write_block(&data, REFTABLE_BLOCK_TYPE_REF,
428+
expected_refs, ARRAY_SIZE(expected_refs));
419429

420430
block_source_from_buf(&source, &data);
421431
reftable_block_init(&block, &source, 0, 0, data.len,
@@ -453,6 +463,5 @@ void test_reftable_block__iterator(void)
453463
reftable_ref_record_release(&ref);
454464
reftable_iterator_destroy(&it);
455465
reftable_block_release(&block);
456-
block_writer_release(&writer);
457466
reftable_buf_release(&data);
458467
}

0 commit comments

Comments
 (0)