]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t/: port helper/test-strcmp-offset.c to unit-tests/t-strcmp-offset.c
authorGhanshyam Thakkar <shyamthakkar001@gmail.com>
Sun, 19 May 2024 20:44:42 +0000 (02:14 +0530)
committerJunio C Hamano <gitster@pobox.com>
Mon, 20 May 2024 20:39:49 +0000 (13:39 -0700)
In the recent codebase update (8bf6fbd (Merge branch
'js/doc-unit-tests', 2023-12-09)), a new unit testing framework was
merged, providing a standardized approach for testing C code. Prior to
this update, some unit tests relied on the test helper mechanism,
lacking a dedicated unit testing framework. It's more natural to perform
these unit tests using the new unit test framework.

Let's migrate the unit tests for strcmp-offset functionality from the
legacy approach using the test-tool command `test-tool strcmp-offset` in
helper/test-strcmp-offset.c to the new unit testing framework
(t/unit-tests/test-lib.h).

The migration involves refactoring the tests to utilize the testing
macros provided by the framework (TEST() and check_*()).

Helped-by: Patrick Steinhardt <ps@pks.im>
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Co-authored-by: Achu Luma <ach.lumap@gmail.com>
Signed-off-by: Achu Luma <ach.lumap@gmail.com>
Signed-off-by: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
t/helper/test-strcmp-offset.c [deleted file]
t/helper/test-tool.c
t/helper/test-tool.h
t/t0065-strcmp-offset.sh [deleted file]
t/unit-tests/t-strcmp-offset.c [new file with mode: 0644]

index cf504963c21716c49fae8b62124ed7d59f69d2b3..1afa112706ee2777801df91f4f2215995098996c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -839,7 +839,6 @@ TEST_BUILTINS_OBJS += test-sha1.o
 TEST_BUILTINS_OBJS += test-sha256.o
 TEST_BUILTINS_OBJS += test-sigchain.o
 TEST_BUILTINS_OBJS += test-simple-ipc.o
-TEST_BUILTINS_OBJS += test-strcmp-offset.o
 TEST_BUILTINS_OBJS += test-string-list.o
 TEST_BUILTINS_OBJS += test-submodule-config.o
 TEST_BUILTINS_OBJS += test-submodule-nested-repo-config.o
@@ -1338,6 +1337,7 @@ UNIT_TEST_PROGRAMS += t-mem-pool
 UNIT_TEST_PROGRAMS += t-strbuf
 UNIT_TEST_PROGRAMS += t-ctype
 UNIT_TEST_PROGRAMS += t-prio-queue
+UNIT_TEST_PROGRAMS += t-strcmp-offset
 UNIT_TEST_PROGS = $(patsubst %,$(UNIT_TEST_BIN)/%$X,$(UNIT_TEST_PROGRAMS))
 UNIT_TEST_OBJS = $(patsubst %,$(UNIT_TEST_DIR)/%.o,$(UNIT_TEST_PROGRAMS))
 UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/test-lib.o
diff --git a/t/helper/test-strcmp-offset.c b/t/helper/test-strcmp-offset.c
deleted file mode 100644 (file)
index d8473cf..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "test-tool.h"
-#include "read-cache-ll.h"
-
-int cmd__strcmp_offset(int argc UNUSED, const char **argv)
-{
-       int result;
-       size_t offset;
-
-       if (!argv[1] || !argv[2])
-               die("usage: %s <string1> <string2>", argv[0]);
-
-       result = strcmp_offset(argv[1], argv[2], &offset);
-
-       /*
-        * Because different CRTs behave differently, only rely on signs
-        * of the result values.
-        */
-       result = (result < 0 ? -1 :
-                         result > 0 ? 1 :
-                         0);
-       printf("%d %"PRIuMAX"\n", result, (uintmax_t)offset);
-       return 0;
-}
index f6fd0fe491932deebf99a7b6f498870c7840262a..7ad7d0701885c3476f0b6f637de8593bb034e524 100644 (file)
@@ -78,7 +78,6 @@ static struct test_cmd cmds[] = {
        { "sha256", cmd__sha256 },
        { "sigchain", cmd__sigchain },
        { "simple-ipc", cmd__simple_ipc },
-       { "strcmp-offset", cmd__strcmp_offset },
        { "string-list", cmd__string_list },
        { "submodule", cmd__submodule },
        { "submodule-config", cmd__submodule_config },
index 868f33453c896c0763c05bcdba66e659f0e02dc0..d14b3072bdf02a4dffa5eedeeea6794ed75d1711 100644 (file)
@@ -71,7 +71,6 @@ int cmd__oid_array(int argc, const char **argv);
 int cmd__sha256(int argc, const char **argv);
 int cmd__sigchain(int argc, const char **argv);
 int cmd__simple_ipc(int argc, const char **argv);
-int cmd__strcmp_offset(int argc, const char **argv);
 int cmd__string_list(int argc, const char **argv);
 int cmd__submodule(int argc, const char **argv);
 int cmd__submodule_config(int argc, const char **argv);
diff --git a/t/t0065-strcmp-offset.sh b/t/t0065-strcmp-offset.sh
deleted file mode 100755 (executable)
index 94e34c8..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-test_description='Test strcmp_offset functionality'
-
-TEST_PASSES_SANITIZE_LEAK=true
-. ./test-lib.sh
-
-while read s1 s2 expect
-do
-       test_expect_success "strcmp_offset($s1, $s2)" '
-               echo "$expect" >expect &&
-               test-tool strcmp-offset "$s1" "$s2" >actual &&
-               test_cmp expect actual
-       '
-done <<-EOF
-abc abc 0 3
-abc def -1 0
-abc abz -1 2
-abc abcdef -1 3
-EOF
-
-test_done
diff --git a/t/unit-tests/t-strcmp-offset.c b/t/unit-tests/t-strcmp-offset.c
new file mode 100644 (file)
index 0000000..fe4c270
--- /dev/null
@@ -0,0 +1,35 @@
+#include "test-lib.h"
+#include "read-cache-ll.h"
+
+static void check_strcmp_offset(const char *string1, const char *string2,
+                               int expect_result, uintmax_t expect_offset)
+{
+       size_t offset;
+       int result = strcmp_offset(string1, string2, &offset);
+
+       /*
+        * Because different CRTs behave differently, only rely on signs of the
+        * result values.
+        */
+       result = (result < 0 ? -1 :
+                       result > 0 ? 1 :
+                       0);
+
+       check_int(result, ==, expect_result);
+       check_uint((uintmax_t)offset, ==, expect_offset);
+}
+
+#define TEST_STRCMP_OFFSET(string1, string2, expect_result, expect_offset) \
+       TEST(check_strcmp_offset(string1, string2, expect_result,          \
+                                expect_offset),                           \
+            "strcmp_offset(%s, %s) works", #string1, #string2)
+
+int cmd_main(int argc, const char **argv)
+{
+       TEST_STRCMP_OFFSET("abc", "abc", 0, 3);
+       TEST_STRCMP_OFFSET("abc", "def", -1, 0);
+       TEST_STRCMP_OFFSET("abc", "abz", -1, 2);
+       TEST_STRCMP_OFFSET("abc", "abcdef", -1, 3);
+
+       return test_done();
+}