@@ -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+
1742void 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)
381406void 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