In the recent codebase update (commit 8bf6fbd, 2023-12-09), a new unit testing framework written entirely in C was introduced to the Git project aimed at simplifying testing and reducing test run times. Currently, tests for the reftable refs-backend are performed by a custom testing framework defined by reftable/test_framework.{c, h}. Port reftable/tree_test.c to the unit testing framework and improve upon the ported test. The first patch in the series is preparatory cleanup, the second patch moves the test to the unit testing framework, and the rest of the patches improve upon the ported test. Mentored-by: Patrick Steinhardt <ps@xxxxxx> Mentored-by: Christian Couder <chriscool@xxxxxxxxxxxxx> Signed-off-by: Chandra Pratap <chandrapratap3519@xxxxxxxxx> --- Changes in v4: - Rename the tests to be in-line with unit-tests' standards CI/PR: https://github.com/gitgitgadget/git/pull/1740 Chandra Pratap(5): reftable: remove unnecessary curly braces in reftable/tree.c t: move reftable/tree_test.c to the unit testing framework t-reftable-tree: split test_tree() into two sub-test t-reftable-tree: add test for non-existent key t-reftable-tree: improve the test for infix_walk() Makefile | 2 +- reftable/reftable-tests.h | 1 - reftable/tree.c | 15 +++------- reftable/tree_test.c | 60 ---------------------- t/helper/test-reftable.c | 1 - t/unit-tests/t-reftable-tree.c | 80 +++++++++++++++++++++++++++++++++++++ 6 files changed, 86 insertions(+), 73 deletions(-) Range-diff against v3: 1: ffabd3e411 = 1: 2be2a35b7f reftable: remove unnecessary curly braces in reftable/tree.c 2: 17937233fb < -: ---------- t: move reftable/tree_test.c to the unit testing framework -: ---------- > 2: de49698ea7 t: move reftable/tree_test.c to the unit testing framework 3: c3992091db ! 3: c733776054 t-reftable-tree: split test_tree() into two sub-test functions @@ t/unit-tests/t-reftable-tree.c: static void check_increasing(void *arg, void *ke c->last = key; } --static void test_tree(void) -+static void test_tree_search(void) +-static void t_tree(void) ++static void t_tree_search(void) { struct tree_node *root = NULL; void *values[11] = { 0 }; @@ t/unit-tests/t-reftable-tree.c: static void check_increasing(void *arg, void *ke - struct curry c = { 0 }; do { - nodes[i] = tree_search(values + i, &root, &test_compare, 1); -@@ t/unit-tests/t-reftable-tree.c: static void test_tree(void) - check_pointer_eq(nodes[i], tree_search(values + i, &root, &test_compare, 0)); + nodes[i] = tree_search(values + i, &root, &t_compare, 1); +@@ t/unit-tests/t-reftable-tree.c: static void t_tree(void) + check_pointer_eq(nodes[i], tree_search(values + i, &root, &t_compare, 0)); } - infix_walk(root, check_increasing, &c); + tree_free(root); +} + -+static void test_infix_walk(void) ++static void t_infix_walk(void) +{ + struct tree_node *root = NULL; + void *values[11] = { 0 }; @@ t/unit-tests/t-reftable-tree.c: static void test_tree(void) + size_t i = 1; + + do { -+ tree_search(values + i, &root, &test_compare, 1); ++ tree_search(values + i, &root, &t_compare, 1); + i = (i * 7) % 11; + } while (i != 1); + @@ t/unit-tests/t-reftable-tree.c: static void test_tree(void) int cmd_main(int argc, const char *argv[]) { -- TEST(test_tree(), "tree_search and infix_walk work"); -+ TEST(test_tree_search(), "tree_search works"); -+ TEST(test_infix_walk(), "infix_walk works"); +- TEST(t_tree(), "tree_search and infix_walk work"); ++ TEST(t_tree_search(), "tree_search works"); ++ TEST(t_infix_walk(), "infix_walk works"); return test_done(); } 4: 99a0ed484e ! 4: f1a9325bb3 t-reftable-tree: add test for non-existent key @@ Commit message Signed-off-by: Chandra Pratap <chandrapratap3519@xxxxxxxxx> ## t/unit-tests/t-reftable-tree.c ## -@@ t/unit-tests/t-reftable-tree.c: static void test_tree_search(void) - check_pointer_eq(nodes[i], tree_search(values + i, &root, &test_compare, 0)); +@@ t/unit-tests/t-reftable-tree.c: static void t_tree_search(void) + check_pointer_eq(nodes[i], tree_search(values + i, &root, &t_compare, 0)); } + check(!tree_search(values, &root, &test_compare, 0)); 5: 4fce9a8bd8 ! 5: c6b7a3d646 t-reftable-tree: improve the test for infix_walk() @@ Commit message Signed-off-by: Chandra Pratap <chandrapratap3519@xxxxxxxxx> ## t/unit-tests/t-reftable-tree.c ## -@@ t/unit-tests/t-reftable-tree.c: static int test_compare(const void *a, const void *b) +@@ t/unit-tests/t-reftable-tree.c: static int t_compare(const void *a, const void *b) } struct curry { @@ t/unit-tests/t-reftable-tree.c: static int test_compare(const void *a, const voi { struct curry *c = arg; - if (c->last) -- check_int(test_compare(c->last, key), <, 0); +- check_int(t_compare(c->last, key), <, 0); - c->last = key; + c->arr[c->len++] = key; } - static void test_tree_search(void) -@@ t/unit-tests/t-reftable-tree.c: static void test_infix_walk(void) + static void t_tree_search(void) +@@ t/unit-tests/t-reftable-tree.c: static void t_infix_walk(void) { struct tree_node *root = NULL; void *values[11] = { 0 }; @@ t/unit-tests/t-reftable-tree.c: static void test_infix_walk(void) + size_t count = 0; do { - tree_search(values + i, &root, &test_compare, 1); + tree_search(values + i, &root, &t_compare, 1); i = (i * 7) % 11; + count++; } while (i != 1);