]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t/unit-tests: convert reftable basics test to use clar test framework
authorSeyi Kuforiji <kuforiji98@gmail.com>
Thu, 5 Jun 2025 14:06:36 +0000 (15:06 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 5 Jun 2025 16:57:12 +0000 (09:57 -0700)
Adapt reftable basics test file to clar by using clar assertions
where necessary.Break up test edge case to improve modularity and
clarity.

Signed-off-by: Seyi Kuforiji <kuforiji98@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
t/meson.build
t/unit-tests/t-reftable-basics.c [deleted file]
t/unit-tests/u-reftable-basics.c [new file with mode: 0644]

index e4fa038508b1d396b207a4cfa9c31c2664575fca..a01103e3a6248cf5e37b215b8441c09d2358fa2d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1364,6 +1364,7 @@ CLAR_TEST_SUITES += u-oid-array
 CLAR_TEST_SUITES += u-oidmap
 CLAR_TEST_SUITES += u-oidtree
 CLAR_TEST_SUITES += u-prio-queue
+CLAR_TEST_SUITES += u-reftable-basics
 CLAR_TEST_SUITES += u-reftable-tree
 CLAR_TEST_SUITES += u-strbuf
 CLAR_TEST_SUITES += u-strcmp-offset
@@ -1377,7 +1378,6 @@ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
 CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-oid.o
 CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable-clar.o
 
-UNIT_TEST_PROGRAMS += t-reftable-basics
 UNIT_TEST_PROGRAMS += t-reftable-block
 UNIT_TEST_PROGRAMS += t-reftable-merged
 UNIT_TEST_PROGRAMS += t-reftable-pq
index f77f21536e77320a7c3745f428919b831cc6c6d3..e00e8d41d640e190294b1fda2be0c7c0ea196b84 100644 (file)
@@ -8,6 +8,7 @@ clar_test_suites = [
   'unit-tests/u-oidmap.c',
   'unit-tests/u-oidtree.c',
   'unit-tests/u-prio-queue.c',
+  'unit-tests/u-reftable-basics.c',
   'unit-tests/u-reftable-tree.c',
   'unit-tests/u-strbuf.c',
   'unit-tests/u-strcmp-offset.c',
@@ -55,7 +56,6 @@ clar_unit_tests = executable('unit-tests',
 test('unit-tests', clar_unit_tests)
 
 unit_test_programs = [
-  'unit-tests/t-reftable-basics.c',
   'unit-tests/t-reftable-block.c',
   'unit-tests/t-reftable-merged.c',
   'unit-tests/t-reftable-pq.c',
diff --git a/t/unit-tests/t-reftable-basics.c b/t/unit-tests/t-reftable-basics.c
deleted file mode 100644 (file)
index c9e751e..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
-
-#include "test-lib.h"
-#include "reftable/basics.h"
-
-struct integer_needle_lesseq_args {
-       int needle;
-       int *haystack;
-};
-
-static int integer_needle_lesseq(size_t i, void *_args)
-{
-       struct integer_needle_lesseq_args *args = _args;
-       return args->needle <= args->haystack[i];
-}
-
-static void *realloc_stub(void *p UNUSED, size_t size UNUSED)
-{
-       return NULL;
-}
-
-int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
-{
-       if_test ("binary search with binsearch works") {
-               int haystack[] = { 2, 4, 6, 8, 10 };
-               struct {
-                       int needle;
-                       size_t expected_idx;
-               } testcases[] = {
-                       {-9000, 0},
-                       {-1, 0},
-                       {0, 0},
-                       {2, 0},
-                       {3, 1},
-                       {4, 1},
-                       {7, 3},
-                       {9, 4},
-                       {10, 4},
-                       {11, 5},
-                       {9000, 5},
-               };
-
-               for (size_t i = 0; i < ARRAY_SIZE(testcases); i++) {
-                       struct integer_needle_lesseq_args args = {
-                               .haystack = haystack,
-                               .needle = testcases[i].needle,
-                       };
-                       size_t idx;
-
-                       idx = binsearch(ARRAY_SIZE(haystack),
-                                       &integer_needle_lesseq, &args);
-                       check_int(idx, ==, testcases[i].expected_idx);
-               }
-       }
-
-       if_test ("names_length returns size of a NULL-terminated string array") {
-               const char *a[] = { "a", "b", NULL };
-               check_int(names_length(a), ==, 2);
-       }
-
-       if_test ("names_equal compares NULL-terminated string arrays") {
-               const char *a[] = { "a", "b", "c", NULL };
-               const char *b[] = { "a", "b", "d", NULL };
-               const char *c[] = { "a", "b", NULL };
-
-               check(names_equal(a, a));
-               check(!names_equal(a, b));
-               check(!names_equal(a, c));
-       }
-
-       if_test ("parse_names works for basic input") {
-               char in1[] = "line\n";
-               char in2[] = "a\nb\nc";
-               char **out = parse_names(in1, strlen(in1));
-               check(out != NULL);
-               check_str(out[0], "line");
-               check(!out[1]);
-               free_names(out);
-
-               out = parse_names(in2, strlen(in2));
-               check(out != NULL);
-               check_str(out[0], "a");
-               check_str(out[1], "b");
-               check_str(out[2], "c");
-               check(!out[3]);
-               free_names(out);
-       }
-
-       if_test ("parse_names drops empty string") {
-               char in[] = "a\n\nb\n";
-               char **out = parse_names(in, strlen(in));
-               check(out != NULL);
-               check_str(out[0], "a");
-               /* simply '\n' should be dropped as empty string */
-               check_str(out[1], "b");
-               check(!out[2]);
-               free_names(out);
-       }
-
-       if_test ("common_prefix_size works") {
-               struct reftable_buf a = REFTABLE_BUF_INIT;
-               struct reftable_buf b = REFTABLE_BUF_INIT;
-               struct {
-                       const char *a, *b;
-                       int want;
-               } cases[] = {
-                       {"abcdef", "abc", 3},
-                       { "abc", "ab", 2 },
-                       { "", "abc", 0 },
-                       { "abc", "abd", 2 },
-                       { "abc", "pqr", 0 },
-               };
-
-               for (size_t i = 0; i < ARRAY_SIZE(cases); i++) {
-                       check(!reftable_buf_addstr(&a, cases[i].a));
-                       check(!reftable_buf_addstr(&b, cases[i].b));
-                       check_uint(common_prefix_size(&a, &b), ==, cases[i].want);
-                       reftable_buf_reset(&a);
-                       reftable_buf_reset(&b);
-               }
-               reftable_buf_release(&a);
-               reftable_buf_release(&b);
-       }
-
-       if_test ("reftable_put_be64 and reftable_get_be64 work") {
-               uint64_t in = 0x1122334455667788;
-               uint8_t dest[8];
-               uint64_t out;
-               reftable_put_be64(dest, in);
-               out = reftable_get_be64(dest);
-               check_int(in, ==, out);
-       }
-
-       if_test ("reftable_put_be32 and reftable_get_be32 work") {
-               uint32_t in = 0x11223344;
-               uint8_t dest[4];
-               uint32_t out;
-               reftable_put_be32(dest, in);
-               out = reftable_get_be32(dest);
-               check_int(in, ==, out);
-       }
-
-       if_test ("reftable_put_be24 and reftable_get_be24 work") {
-               uint32_t in = 0x112233;
-               uint8_t dest[3];
-               uint32_t out;
-               reftable_put_be24(dest, in);
-               out = reftable_get_be24(dest);
-               check_int(in, ==, out);
-       }
-
-       if_test ("put_be16 and get_be16 work") {
-               uint32_t in = 0xfef1;
-               uint8_t dest[3];
-               uint32_t out;
-               reftable_put_be16(dest, in);
-               out = reftable_get_be16(dest);
-               check_int(in, ==, out);
-       }
-
-       if_test ("REFTABLE_ALLOC_GROW works") {
-               int *arr = NULL, *old_arr;
-               size_t alloc = 0, old_alloc;
-
-               check(!REFTABLE_ALLOC_GROW(arr, 1, alloc));
-               check(arr != NULL);
-               check_uint(alloc, >=, 1);
-               arr[0] = 42;
-
-               old_alloc = alloc;
-               old_arr = arr;
-               reftable_set_alloc(NULL, realloc_stub, NULL);
-               check(REFTABLE_ALLOC_GROW(arr, old_alloc + 1, alloc));
-               check(arr == old_arr);
-               check_uint(alloc, ==, old_alloc);
-
-               old_alloc = alloc;
-               reftable_set_alloc(NULL, NULL, NULL);
-               check(!REFTABLE_ALLOC_GROW(arr, old_alloc + 1, alloc));
-               check(arr != NULL);
-               check_uint(alloc, >, old_alloc);
-               arr[alloc - 1] = 42;
-
-               reftable_free(arr);
-       }
-
-       if_test ("REFTABLE_ALLOC_GROW_OR_NULL works") {
-               int *arr = NULL;
-               size_t alloc = 0, old_alloc;
-
-               REFTABLE_ALLOC_GROW_OR_NULL(arr, 1, alloc);
-               check(arr != NULL);
-               check_uint(alloc, >=, 1);
-               arr[0] = 42;
-
-               old_alloc = alloc;
-               REFTABLE_ALLOC_GROW_OR_NULL(arr, old_alloc + 1, alloc);
-               check(arr != NULL);
-               check_uint(alloc, >, old_alloc);
-               arr[alloc - 1] = 42;
-
-               old_alloc = alloc;
-               reftable_set_alloc(NULL, realloc_stub, NULL);
-               REFTABLE_ALLOC_GROW_OR_NULL(arr, old_alloc + 1, alloc);
-               check(arr == NULL);
-               check_uint(alloc, ==, 0);
-               reftable_set_alloc(NULL, NULL, NULL);
-
-               reftable_free(arr);
-       }
-
-       return test_done();
-}
diff --git a/t/unit-tests/u-reftable-basics.c b/t/unit-tests/u-reftable-basics.c
new file mode 100644 (file)
index 0000000..f105c22
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+Copyright 2020 Google LLC
+
+Use of this source code is governed by a BSD-style
+license that can be found in the LICENSE file or at
+https://developers.google.com/open-source/licenses/bsd
+*/
+
+#include "unit-test.h"
+#include "lib-reftable-clar.h"
+#include "reftable/basics.h"
+
+struct integer_needle_lesseq_args {
+       int needle;
+       int *haystack;
+};
+
+static int integer_needle_lesseq(size_t i, void *_args)
+{
+       struct integer_needle_lesseq_args *args = _args;
+       return args->needle <= args->haystack[i];
+}
+
+static void *realloc_stub(void *p UNUSED, size_t size UNUSED)
+{
+       return NULL;
+}
+
+void test_reftable_basics__binsearch(void)
+{
+       int haystack[] = { 2, 4, 6, 8, 10 };
+       struct {
+               int needle;
+               size_t expected_idx;
+       } testcases[] = {
+               {-9000, 0},
+               {-1, 0},
+               {0, 0},
+               {2, 0},
+               {3, 1},
+               {4, 1},
+               {7, 3},
+               {9, 4},
+               {10, 4},
+               {11, 5},
+               {9000, 5},
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(testcases); i++) {
+               struct integer_needle_lesseq_args args = {
+                       .haystack = haystack,
+                       .needle = testcases[i].needle,
+               };
+               size_t idx;
+
+               idx = binsearch(ARRAY_SIZE(haystack),
+                               &integer_needle_lesseq, &args);
+               cl_assert_equal_i(idx, testcases[i].expected_idx);
+       }
+}
+
+void test_reftable_basics__names_length(void)
+{
+       const char *a[] = { "a", "b", NULL };
+       cl_assert_equal_i(names_length(a), 2);
+}
+
+void test_reftable_basics__names_equal(void)
+{
+       const char *a[] = { "a", "b", "c", NULL };
+       const char *b[] = { "a", "b", "d", NULL };
+       const char *c[] = { "a", "b", NULL };
+
+       cl_assert(names_equal(a, a));
+       cl_assert(!names_equal(a, b));
+       cl_assert(!names_equal(a, c));
+}
+
+void test_reftable_basics__parse_names(void)
+{
+       char in1[] = "line\n";
+       char in2[] = "a\nb\nc";
+       char **out = parse_names(in1, strlen(in1));
+       cl_assert(out != NULL);
+       cl_assert_equal_s(out[0], "line");
+       cl_assert(!out[1]);
+       free_names(out);
+
+       out = parse_names(in2, strlen(in2));
+       cl_assert(out != NULL);
+       cl_assert_equal_s(out[0], "a");
+       cl_assert_equal_s(out[1], "b");
+       cl_assert_equal_s(out[2], "c");
+       cl_assert(!out[3]);
+       free_names(out);
+}
+
+void test_reftable_basics__parse_names_drop_empty_string(void)
+{
+       char in[] = "a\n\nb\n";
+       char **out = parse_names(in, strlen(in));
+       cl_assert(out != NULL);
+       cl_assert_equal_s(out[0], "a");
+       /* simply '\n' should be dropped as empty string */
+       cl_assert_equal_s(out[1], "b");
+       cl_assert(out[2] == NULL);
+       free_names(out);
+}
+
+void test_reftable_basics__common_prefix_size(void)
+{
+       struct reftable_buf a = REFTABLE_BUF_INIT;
+       struct reftable_buf b = REFTABLE_BUF_INIT;
+       struct {
+               const char *a, *b;
+               int want;
+       } cases[] = {
+               {"abcdef", "abc", 3},
+               { "abc", "ab", 2 },
+               { "", "abc", 0 },
+               { "abc", "abd", 2 },
+               { "abc", "pqr", 0 },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(cases); i++) {
+               cl_assert_equal_i(reftable_buf_addstr(&a, cases[i].a), 0);
+               cl_assert_equal_i(reftable_buf_addstr(&b, cases[i].b), 0);
+               cl_assert_equal_i(common_prefix_size(&a, &b), cases[i].want);
+               reftable_buf_reset(&a);
+               reftable_buf_reset(&b);
+       }
+       reftable_buf_release(&a);
+       reftable_buf_release(&b);
+}
+
+void test_reftable_basics__put_get_be64(void)
+{
+       uint64_t in = 0x1122334455667788;
+       uint8_t dest[8];
+       uint64_t out;
+       reftable_put_be64(dest, in);
+       out = reftable_get_be64(dest);
+       cl_assert(in == out);
+}
+
+void test_reftable_basics__put_get_be32(void)
+{
+       uint32_t in = 0x11223344;
+       uint8_t dest[4];
+       uint32_t out;
+       reftable_put_be32(dest, in);
+       out = reftable_get_be32(dest);
+       cl_assert_equal_i(in, out);
+}
+
+void test_reftable_basics__put_get_be24(void)
+{
+       uint32_t in = 0x112233;
+       uint8_t dest[3];
+       uint32_t out;
+       reftable_put_be24(dest, in);
+       out = reftable_get_be24(dest);
+       cl_assert_equal_i(in, out);
+}
+
+void test_reftable_basics__put_get_be16(void)
+{
+       uint32_t in = 0xfef1;
+       uint8_t dest[3];
+       uint32_t out;
+       reftable_put_be16(dest, in);
+       out = reftable_get_be16(dest);
+       cl_assert_equal_i(in, out);
+}
+
+void test_reftable_basics__alloc_grow(void)
+{
+       int *arr = NULL, *old_arr;
+       size_t alloc = 0, old_alloc;
+
+       cl_assert_equal_i(REFTABLE_ALLOC_GROW(arr, 1, alloc), 0);
+       cl_assert(arr != NULL);
+       cl_assert(alloc >= 1);
+       arr[0] = 42;
+
+       old_alloc = alloc;
+       old_arr = arr;
+       reftable_set_alloc(NULL, realloc_stub, NULL);
+       cl_assert(REFTABLE_ALLOC_GROW(arr, old_alloc + 1, alloc));
+       cl_assert(arr == old_arr);
+       cl_assert_equal_i(alloc, old_alloc);
+
+       old_alloc = alloc;
+       reftable_set_alloc(NULL, NULL, NULL);
+       cl_assert_equal_i(REFTABLE_ALLOC_GROW(arr, old_alloc + 1, alloc), 0);
+       cl_assert(arr != NULL);
+       cl_assert(alloc > old_alloc);
+       arr[alloc - 1] = 42;
+
+       reftable_free(arr);
+}
+
+void test_reftable_basics__alloc_grow_or_null(void)
+{
+       int *arr = NULL;
+       size_t alloc = 0, old_alloc;
+
+       REFTABLE_ALLOC_GROW_OR_NULL(arr, 1, alloc);
+       cl_assert(arr != NULL);
+       cl_assert(alloc >= 1);
+       arr[0] = 42;
+
+       old_alloc = alloc;
+       REFTABLE_ALLOC_GROW_OR_NULL(arr, old_alloc + 1, alloc);
+       cl_assert(arr != NULL);
+       cl_assert(alloc > old_alloc);
+       arr[alloc - 1] = 42;
+
+       old_alloc = alloc;
+       reftable_set_alloc(NULL, realloc_stub, NULL);
+       REFTABLE_ALLOC_GROW_OR_NULL(arr, old_alloc + 1, alloc);
+       cl_assert(arr == NULL);
+       cl_assert_equal_i(alloc, 0);
+       reftable_set_alloc(NULL, NULL, NULL);
+
+       reftable_free(arr);
+}