From: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
To: git@vger.kernel.org
Cc: christian.couder@gmail.com, ps@pks.im,
Ghanshyam Thakkar <shyamthakkar001@gmail.com>,
Christian Couder <chriscool@tuxfamily.org>,
Kaartic Sivaraam <kaartic.sivaraam@gmail.com>,
Achu Luma <ach.lumap@gmail.com>
Subject: [GSoC][PATCH v2] t/: port helper/test-strcmp-offset.c to unit-tests/t-strcmp-offset.c
Date: Mon, 20 May 2024 02:14:42 +0530 [thread overview]
Message-ID: <20240519204530.12258-3-shyamthakkar001@gmail.com> (raw)
In-Reply-To: <20240310144819.4379-1-ach.lumap@gmail.com>
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>
---
The v2 only adjusts the formatting to be in line with the style
described in CodingGuidelines. And it is also rebased on 'next' to
avoid Makefile conflicts.
CI for v2: https://github.com/spectre10/git/actions/runs/9150288967
Range-diff against v1:
1: 47e7df1d22 ! 1: 3c2a6f7e9b Port helper/test-strcmp-offset.c to unit-tests/t-strcmp-offset.c
@@
## Metadata ##
-Author: Achu Luma <ach.lumap@gmail.com>
+Author: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
## Commit message ##
- Port helper/test-strcmp-offset.c to unit-tests/t-strcmp-offset.c
+ t/: port helper/test-strcmp-offset.c to unit-tests/t-strcmp-offset.c
In the recent codebase update (8bf6fbd (Merge branch
'js/doc-unit-tests', 2023-12-09)), a new unit testing framework was
@@ Commit message
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>
## Makefile ##
@@ Makefile: TEST_BUILTINS_OBJS += test-sha1.o
@@ Makefile: TEST_BUILTINS_OBJS += test-sha1.o
TEST_BUILTINS_OBJS += test-string-list.o
TEST_BUILTINS_OBJS += test-submodule-config.o
TEST_BUILTINS_OBJS += test-submodule-nested-repo-config.o
-@@ Makefile: UNIT_TEST_PROGRAMS += t-mem-pool
- UNIT_TEST_PROGRAMS += t-strbuf
- UNIT_TEST_PROGRAMS += t-ctype
+@@ Makefile: UNIT_TEST_PROGRAMS += t-ctype
+ UNIT_TEST_PROGRAMS += t-mem-pool
UNIT_TEST_PROGRAMS += t-prio-queue
+ UNIT_TEST_PROGRAMS += t-strbuf
+UNIT_TEST_PROGRAMS += t-strcmp-offset
+ UNIT_TEST_PROGRAMS += t-trailer
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
## t/helper/test-strcmp-offset.c (deleted) ##
@@
@@ t/unit-tests/t-strcmp-offset.c (new)
+#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)
++static void check_strcmp_offset(const char *string1, const char *string2,
++ int expect_result, uintmax_t expect_offset)
+{
-+ int result;
+ size_t offset;
++ int result = strcmp_offset(string1, string2, &offset);
+
-+ result = strcmp_offset(string1, string2, &offset);
-+
-+ /* Because different CRTs behave differently, only rely on signs of the result values. */
++ /*
++ * Because different CRTs behave differently, only rely on signs of the
++ * result values.
++ */
+ result = (result < 0 ? -1 :
-+ result > 0 ? 1 :
-+ 0);
++ 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)
++ 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) {
++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);
Makefile | 2 +-
t/helper/test-strcmp-offset.c | 23 ----------------------
t/helper/test-tool.c | 1 -
t/helper/test-tool.h | 1 -
t/t0065-strcmp-offset.sh | 22 ---------------------
t/unit-tests/t-strcmp-offset.c | 35 ++++++++++++++++++++++++++++++++++
6 files changed, 36 insertions(+), 48 deletions(-)
delete mode 100644 t/helper/test-strcmp-offset.c
delete mode 100755 t/t0065-strcmp-offset.sh
create mode 100644 t/unit-tests/t-strcmp-offset.c
diff --git a/Makefile b/Makefile
index 8f4432ae57..59d98ba688 100644
--- 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-ctype
UNIT_TEST_PROGRAMS += t-mem-pool
UNIT_TEST_PROGRAMS += t-prio-queue
UNIT_TEST_PROGRAMS += t-strbuf
+UNIT_TEST_PROGRAMS += t-strcmp-offset
UNIT_TEST_PROGRAMS += t-trailer
UNIT_TEST_PROGS = $(patsubst %,$(UNIT_TEST_BIN)/%$X,$(UNIT_TEST_PROGRAMS))
UNIT_TEST_OBJS = $(patsubst %,$(UNIT_TEST_DIR)/%.o,$(UNIT_TEST_PROGRAMS))
diff --git a/t/helper/test-strcmp-offset.c b/t/helper/test-strcmp-offset.c
deleted file mode 100644
index d8473cf2fc..0000000000
--- a/t/helper/test-strcmp-offset.c
+++ /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;
-}
diff --git a/t/helper/test-tool.c b/t/helper/test-tool.c
index f6fd0fe491..7ad7d07018 100644
--- a/t/helper/test-tool.c
+++ b/t/helper/test-tool.c
@@ -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 },
diff --git a/t/helper/test-tool.h b/t/helper/test-tool.h
index 868f33453c..d14b3072bd 100644
--- a/t/helper/test-tool.h
+++ b/t/helper/test-tool.h
@@ -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
index 94e34c83ed..0000000000
--- a/t/t0065-strcmp-offset.sh
+++ /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
index 0000000000..fe4c2706b1
--- /dev/null
+++ b/t/unit-tests/t-strcmp-offset.c
@@ -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();
+}
--
2.45.1
next prev parent reply other threads:[~2024-05-19 20:46 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-10 14:48 [Outreachy][PATCH] Port helper/test-strcmp-offset.c to unit-tests/t-strcmp-offset.c Achu Luma
2024-03-26 11:46 ` Patrick Steinhardt
2024-05-19 20:44 ` Ghanshyam Thakkar [this message]
2024-05-20 16:07 ` [GSoC][PATCH v2] t/: port " Junio C Hamano
2024-05-20 20:46 ` Junio C Hamano
2024-05-20 20:55 ` Ghanshyam Thakkar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240519204530.12258-3-shyamthakkar001@gmail.com \
--to=shyamthakkar001@gmail.com \
--cc=ach.lumap@gmail.com \
--cc=chriscool@tuxfamily.org \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=kaartic.sivaraam@gmail.com \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).