Skip to content

Commit

Permalink
Port helper/test-strcmp-offset.c to unit-tests/t-strcmp-offset.c
Browse files Browse the repository at this point in the history
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.

This commit migrates the unit tests for strcmp-offset functionality from
the legacy approach using the test-tool command
`test-tool strcmp-offset`and 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_*()).

Mentored-by: Christian Couder <[email protected]>
Signed-off-by: Achu Luma <[email protected]>
  • Loading branch information
achluma committed Mar 6, 2024
1 parent 43072b4 commit 29c3b24
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 26 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -850,7 +850,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
Expand Down Expand Up @@ -1347,6 +1346,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
Expand Down
23 changes: 0 additions & 23 deletions t/helper/test-strcmp-offset.c

This file was deleted.

1 change: 0 additions & 1 deletion t/helper/test-tool.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,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 },
Expand Down
1 change: 0 additions & 1 deletion t/helper/test-tool.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,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);
Expand Down
31 changes: 31 additions & 0 deletions t/unit-tests/t-strcmp-offset.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#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)
{
int result;
size_t offset;

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();
}

0 comments on commit 29c3b24

Please sign in to comment.