]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t-reftable-block: use reftable_record_equal() instead of check_str()
authorChandra Pratap <chandrapratap3519@gmail.com>
Wed, 21 Aug 2024 12:30:54 +0000 (18:00 +0530)
committerJunio C Hamano <gitster@pobox.com>
Wed, 21 Aug 2024 16:41:40 +0000 (09:41 -0700)
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 <ps@pks.im>
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Chandra Pratap <chandrapratap3519@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/unit-tests/t-reftable-block.c

index eafe1fdee9b609ed3472d8075b2815d47ef1fc00..b106d3c1e478ed241ee8926a9dfda32e957c0848 100644 (file)
@@ -15,8 +15,8 @@ https://developers.google.com/open-source/licenses/bsd
 static void t_block_read_write(void)
 {
        const int header_off = 21; /* random */
-       char *names[30];
-       const size_t N = ARRAY_SIZE(names);
+       struct reftable_record recs[30];
+       const size_t N = ARRAY_SIZE(recs);
        const size_t block_size = 1024;
        struct reftable_block block = { 0 };
        struct block_writer bw = {
@@ -47,11 +47,11 @@ static void t_block_read_write(void)
                char name[100];
                snprintf(name, sizeof(name), "branch%02"PRIuMAX, (uintmax_t)i);
 
-               rec.u.ref.refname = name;
+               rec.u.ref.refname = xstrdup(name);
                rec.u.ref.value_type = REFTABLE_REF_VAL1;
                memset(rec.u.ref.value.val1, i, GIT_SHA1_RAWSZ);
 
-               names[i] = xstrdup(name);
+               recs[i] = rec;
                ret = block_writer_add(&bw, &rec);
                rec.u.ref.refname = NULL;
                rec.u.ref.value_type = REFTABLE_REF_DELETION;
@@ -74,7 +74,7 @@ static void t_block_read_write(void)
                        check_int(i, ==, N);
                        break;
                }
-               check_str(names[j], rec.u.ref.refname);
+               check(reftable_record_equal(&recs[j], &rec, GIT_SHA1_RAWSZ));
                j++;
        }
 
@@ -84,7 +84,7 @@ static void t_block_read_write(void)
        for (i = 0; i < N; i++) {
                struct block_iter it = BLOCK_ITER_INIT;
                strbuf_reset(&want);
-               strbuf_addstr(&want, names[i]);
+               strbuf_addstr(&want, recs[i].u.ref.refname);
 
                ret = block_iter_seek_key(&it, &br, &want);
                check_int(ret, ==, 0);
@@ -92,7 +92,7 @@ static void t_block_read_write(void)
                ret = block_iter_next(&it, &rec);
                check_int(ret, ==, 0);
 
-               check_str(names[i], rec.u.ref.refname);
+               check(reftable_record_equal(&recs[i], &rec, GIT_SHA1_RAWSZ));
 
                want.len--;
                ret = block_iter_seek_key(&it, &br, &want);
@@ -100,7 +100,7 @@ static void t_block_read_write(void)
 
                ret = block_iter_next(&it, &rec);
                check_int(ret, ==, 0);
-               check_str(names[10 * (i / 10)], rec.u.ref.refname);
+               check(reftable_record_equal(&recs[10 * (i / 10)], &rec, GIT_SHA1_RAWSZ));
 
                block_iter_close(&it);
        }
@@ -110,7 +110,7 @@ static void t_block_read_write(void)
        reftable_block_done(&br.block);
        strbuf_release(&want);
        for (i = 0; i < N; i++)
-               reftable_free(names[i]);
+               reftable_record_release(&recs[i]);
 }
 
 int cmd_main(int argc, const char *argv[])