Skip to content

Commit e638e9c

Browse files
Chandra Pratapgitster
authored andcommitted
t-reftable-block: use reftable_record_equal() instead of check_str()
In the current testing setup, operations like read and write for reftable blocks as defined by reftable/block.{c, h} are verified by comparing only the keys of input and output reftable records. This is not ideal because there can exist inequal reftable records with the same key. Use the dedicated function for record comparison, reftable_record_equal(), instead of key-based comparison. Mentored-by: Patrick Steinhardt <[email protected]> Mentored-by: Christian Couder <[email protected]> Signed-off-by: Chandra Pratap <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 353672f commit e638e9c

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ license that can be found in the LICENSE file or at
1515
static void t_block_read_write(void)
1616
{
1717
const int header_off = 21; /* random */
18-
char *names[30];
19-
const size_t N = ARRAY_SIZE(names);
18+
struct reftable_record recs[30];
19+
const size_t N = ARRAY_SIZE(recs);
2020
const size_t block_size = 1024;
2121
struct reftable_block block = { 0 };
2222
struct block_writer bw = {
@@ -47,11 +47,11 @@ static void t_block_read_write(void)
4747
char name[100];
4848
snprintf(name, sizeof(name), "branch%02"PRIuMAX, (uintmax_t)i);
4949

50-
rec.u.ref.refname = name;
50+
rec.u.ref.refname = xstrdup(name);
5151
rec.u.ref.value_type = REFTABLE_REF_VAL1;
5252
memset(rec.u.ref.value.val1, i, GIT_SHA1_RAWSZ);
5353

54-
names[i] = xstrdup(name);
54+
recs[i] = rec;
5555
ret = block_writer_add(&bw, &rec);
5656
rec.u.ref.refname = NULL;
5757
rec.u.ref.value_type = REFTABLE_REF_DELETION;
@@ -74,7 +74,7 @@ static void t_block_read_write(void)
7474
check_int(i, ==, N);
7575
break;
7676
}
77-
check_str(names[j], rec.u.ref.refname);
77+
check(reftable_record_equal(&recs[j], &rec, GIT_SHA1_RAWSZ));
7878
j++;
7979
}
8080

@@ -84,23 +84,23 @@ static void t_block_read_write(void)
8484
for (i = 0; i < N; i++) {
8585
struct block_iter it = BLOCK_ITER_INIT;
8686
strbuf_reset(&want);
87-
strbuf_addstr(&want, names[i]);
87+
strbuf_addstr(&want, recs[i].u.ref.refname);
8888

8989
ret = block_iter_seek_key(&it, &br, &want);
9090
check_int(ret, ==, 0);
9191

9292
ret = block_iter_next(&it, &rec);
9393
check_int(ret, ==, 0);
9494

95-
check_str(names[i], rec.u.ref.refname);
95+
check(reftable_record_equal(&recs[i], &rec, GIT_SHA1_RAWSZ));
9696

9797
want.len--;
9898
ret = block_iter_seek_key(&it, &br, &want);
9999
check_int(ret, ==, 0);
100100

101101
ret = block_iter_next(&it, &rec);
102102
check_int(ret, ==, 0);
103-
check_str(names[10 * (i / 10)], rec.u.ref.refname);
103+
check(reftable_record_equal(&recs[10 * (i / 10)], &rec, GIT_SHA1_RAWSZ));
104104

105105
block_iter_close(&it);
106106
}
@@ -110,7 +110,7 @@ static void t_block_read_write(void)
110110
reftable_block_done(&br.block);
111111
strbuf_release(&want);
112112
for (i = 0; i < N; i++)
113-
reftable_free(names[i]);
113+
reftable_record_release(&recs[i]);
114114
}
115115

116116
int cmd_main(int argc, const char *argv[])

0 commit comments

Comments
 (0)