Build on osx

This commit is contained in:
Nils O. Selåsdal
2025-07-16 00:50:07 +02:00
parent c0d46d31fb
commit 6d7b80a6d2
5 changed files with 52 additions and 45 deletions
+5 -1
View File
@@ -2,9 +2,13 @@ file(GLOB TEST_SOURCE_FILES test_*.c)
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
include_directories("/opt/homebrew/include") include_directories("/opt/homebrew/include")
link_directories("/opt/homebrew/lib")
list(REMOVE_ITEM TEST_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/test_ringbuf.c)
else()
target_link_libraries(rt)
endif() endif()
add_executable(test_runner ${TEST_SOURCE_FILES}) add_executable(test_runner ${TEST_SOURCE_FILES})
target_link_libraries(test_runner check ucore rt) target_link_libraries(test_runner check ucore)
add_custom_target(runtest COMMAND test_runner add_custom_target(runtest COMMAND test_runner
DEPENDS test_runner DEPENDS test_runner
Executable
BIN
View File
Binary file not shown.
+2
View File
@@ -66,7 +66,9 @@ static suite_func suites[] = {
iomux_suite, iomux_suite,
iomux_signal_suite, iomux_signal_suite,
string_suite, string_suite,
#ifndef __APPLE__
ringbuf_suite ringbuf_suite
#endif
}; };
+43 -42
View File
@@ -7,91 +7,92 @@
START_TEST (test_getfields) START_TEST (test_getfields)
{
char str[] = "a;b;c"; char str[] = "a;b;c";
char *letters[5] = {NULL}; char *letters[5] = {NULL};
int rc = uc_getfields(str, letters, 5, 0, ";"); int rc = uc_getfields(str, letters, 5, 0, ";");
ck_assert_int_eq(rc, 3); ck_assert_int_eq(rc, 3);
ck_assert_str_eq("a", letters[0]); ck_assert_str_eq("a", letters[0]);
ck_assert_str_eq("b", letters[1]); ck_assert_str_eq("b", letters[1]);
ck_assert_str_eq("c", letters[2]); ck_assert_str_eq("c", letters[2]);
}
END_TEST END_TEST
START_TEST (test_getfields_consecutive) START_TEST (test_getfields_consecutive)
{
char str[] = "a;;b;c;;;"; char str[] = "a;;b;c;;;";
char *letters[7] = {NULL}; char *letters[7] = {NULL};
int rc = uc_getfields(str, letters, 5, 0, ";"); int rc = uc_getfields(str, letters, 5, 0, ";");
ck_assert_int_eq(rc, 5); ck_assert_int_eq(rc, 5);
// This result is rather silly, but it's // This result is rather silly, but it's
// how getfields works with mflag=0 // how getfields works with mflag=0
ck_assert_str_eq("a", letters[0]); ck_assert_str_eq("a", letters[0]);
ck_assert_str_eq("", letters[1]); ck_assert_str_eq("", letters[1]);
ck_assert_str_eq("b", letters[2]); ck_assert_str_eq("b", letters[2]);
ck_assert_str_eq("c", letters[3]); ck_assert_str_eq("c", letters[3]);
ck_assert_str_eq(";;", letters[4]); ck_assert_str_eq(";;", letters[4]);
}
END_TEST END_TEST
START_TEST (test_getfields_mflag) START_TEST (test_getfields_mflag)
{
char str[] = "a;b;c"; char str[] = "a;b;c";
char *letters[5] = {NULL}; char *letters[5] = {NULL};
int rc = uc_getfields(str, letters, 5, 1, ";"); int rc = uc_getfields(str, letters, 5, 1, ";");
ck_assert_int_eq(rc, 3); ck_assert_int_eq(rc, 3);
ck_assert_str_eq("a", letters[0]); ck_assert_str_eq("a", letters[0]);
ck_assert_str_eq("b", letters[1]); ck_assert_str_eq("b", letters[1]);
ck_assert_str_eq("c", letters[2]); ck_assert_str_eq("c", letters[2]);
}
END_TEST END_TEST
START_TEST (test_getfields_consecutive_mflag) START_TEST (test_getfields_consecutive_mflag)
{
char str[] = "a;;b;c;;;"; char str[] = "a;;b;c;;;";
char *letters[7] = {NULL}; char *letters[7] = {NULL};
int rc = uc_getfields(str, letters, 7, 1, ";"); int rc = uc_getfields(str, letters, 7, 1, ";");
ck_assert_int_eq(rc, 3); ck_assert_int_eq(rc, 3);
// This result is rather silly, but it's // This result is rather silly, but it's
// how getfields works with mflag=0 // how getfields works with mflag=0
ck_assert_str_eq("a", letters[0]); ck_assert_str_eq("a", letters[0]);
ck_assert_str_eq("b", letters[1]); ck_assert_str_eq("b", letters[1]);
ck_assert_str_eq("c", letters[2]); ck_assert_str_eq("c", letters[2]);
}
END_TEST END_TEST
START_TEST (test_getfields_too_many) START_TEST (test_getfields_too_many)
{
char str[] = "a\r\nb\r\nc\r\nd\r\ne"; char str[] = "a\r\nb\r\nc\r\nd\r\ne";
char *letters[4] = {NULL}; char *letters[4] = {NULL};
int rc = uc_getfields(str, letters, 4, 0, "\r\n"); int rc = uc_getfields(str, letters, 4, 0, "\r\n");
ck_assert_int_eq(rc, 4); ck_assert_int_eq(rc, 4);
// This result is rather silly, but it's // This result is rather silly, but it's
// how getfields works with mflag=0 // how getfields works with mflag=0
ck_assert_str_eq("a", letters[0]); ck_assert_str_eq("a", letters[0]);
ck_assert_str_eq("", letters[1]); ck_assert_str_eq("", letters[1]);
ck_assert_str_eq("b", letters[2]); ck_assert_str_eq("b", letters[2]);
ck_assert_str_eq("\nc\r\nd\r\ne", letters[3]); ck_assert_str_eq("\nc\r\nd\r\ne", letters[3]);
}
END_TEST END_TEST
START_TEST (test_getfields_too_many_mflag) START_TEST (test_getfields_too_many_mflag)
{
char str[] = "a\r\nb\r\nc\r\nd\r\ne"; char str[] = "a\r\nb\r\nc\r\nd\r\ne";
char *letters[4] = {NULL}; char *letters[4] = {NULL};
int rc = uc_getfields(str, letters, 4, 1, "\r\n"); int rc = uc_getfields(str, letters, 4, 1, "\r\n");
ck_assert_int_eq(rc, 4); ck_assert_int_eq(rc, 4);
@@ -100,13 +101,13 @@ START_TEST (test_getfields_too_many_mflag)
ck_assert_str_eq("b", letters[1]); ck_assert_str_eq("b", letters[1]);
ck_assert_str_eq("c", letters[2]); ck_assert_str_eq("c", letters[2]);
ck_assert_str_eq("d\r\ne", letters[3]); ck_assert_str_eq("d\r\ne", letters[3]);
}
END_TEST END_TEST
START_TEST (test_getfields_empty) START_TEST (test_getfields_empty)
{
char str[] = ""; char str[] = "";
char *letters[4] = {NULL}; char *letters[4] = {NULL};
int rc = uc_getfields(str, letters, 4, 0, ";\r\n"); int rc = uc_getfields(str, letters, 4, 0, ";\r\n");
ck_assert_int_eq(rc, 1); ck_assert_int_eq(rc, 1);
@@ -115,53 +116,53 @@ START_TEST (test_getfields_empty)
rc = uc_getfields(str, letters, 4, 1, ";\r\n"); rc = uc_getfields(str, letters, 4, 1, ";\r\n");
ck_assert_int_eq(rc, 0); ck_assert_int_eq(rc, 0);
}
END_TEST END_TEST
START_TEST (test_gettokens) START_TEST (test_gettokens)
{
char str[] = "a;b;c"; char str[] = "a;b;c";
char *letters[5] = {NULL}; char *letters[5] = {NULL};
int rc = uc_gettokens(str, letters, 5,";"); int rc = uc_gettokens(str, letters, 5,";");
ck_assert_int_eq(rc, 3); ck_assert_int_eq(rc, 3);
ck_assert_str_eq("a", letters[0]); ck_assert_str_eq("a", letters[0]);
ck_assert_str_eq("b", letters[1]); ck_assert_str_eq("b", letters[1]);
ck_assert_str_eq("c", letters[2]); ck_assert_str_eq("c", letters[2]);
}
END_TEST END_TEST
START_TEST (test_gettokens_consecutive) START_TEST (test_gettokens_consecutive)
{
char str[] = "a;;;b;;c;"; char str[] = "a;;;b;;c;";
char *letters[5] = {NULL}; char *letters[5] = {NULL};
int rc = uc_gettokens(str, letters, 5,";"); int rc = uc_gettokens(str, letters, 5,";");
ck_assert_int_eq(rc, 3); ck_assert_int_eq(rc, 3);
ck_assert_str_eq("a", letters[0]); ck_assert_str_eq("a", letters[0]);
ck_assert_str_eq("b", letters[1]); ck_assert_str_eq("b", letters[1]);
ck_assert_str_eq("c", letters[2]); ck_assert_str_eq("c", letters[2]);
}
END_TEST END_TEST
START_TEST (test_gettokens_empty) START_TEST (test_gettokens_empty)
{
char str[] = ""; char str[] = "";
char *letters[5] = {NULL}; char *letters[5] = {NULL};
int rc = uc_gettokens(str, letters, 5,";"); int rc = uc_gettokens(str, letters, 5,";");
ck_assert_int_eq(rc, 0); ck_assert_int_eq(rc, 0);
}
END_TEST END_TEST
START_TEST (test_gettokens_quotes) START_TEST (test_gettokens_quotes)
{
char str[] = "\"abc\";d;\"e \""; char str[] = "\"abc\";d;\"e \"";
char *letters[5] = {NULL}; char *letters[5] = {NULL};
int rc = uc_gettokens(str, letters, 5,";"); int rc = uc_gettokens(str, letters, 5,";");
ck_assert_int_eq(rc, 3); ck_assert_int_eq(rc, 3);
@@ -169,13 +170,13 @@ START_TEST (test_gettokens_quotes)
ck_assert_str_eq("abc", letters[0]); ck_assert_str_eq("abc", letters[0]);
ck_assert_str_eq("d", letters[1]); ck_assert_str_eq("d", letters[1]);
ck_assert_str_eq("e ", letters[2]); ck_assert_str_eq("e ", letters[2]);
}
END_TEST END_TEST
START_TEST (test_gettokens_double_quotes) START_TEST (test_gettokens_double_quotes)
{
char str[] = "\"\"abc\"\";d;\"e\"\"f\"\"\""; char str[] = "\"\"abc\"\";d;\"e\"\"f\"\"\"";
char *letters[5] = {NULL}; char *letters[5] = {NULL};
int rc = uc_gettokens(str, letters, 5,";"); int rc = uc_gettokens(str, letters, 5,";");
ck_assert_int_eq(rc, 3); ck_assert_int_eq(rc, 3);
@@ -183,7 +184,7 @@ START_TEST (test_gettokens_double_quotes)
ck_assert_str_eq("abc", letters[0]); ck_assert_str_eq("abc", letters[0]);
ck_assert_str_eq("d", letters[1]); ck_assert_str_eq("d", letters[1]);
ck_assert_str_eq("e\"f\"", letters[2]); ck_assert_str_eq("e\"f\"", letters[2]);
}
END_TEST END_TEST
Suite *string_suite(void) Suite *string_suite(void)
+2 -2
View File
@@ -136,6 +136,7 @@ START_TEST (test_strv_append_all_nocopy)
END_TEST END_TEST
START_TEST (test_strv_reverse) START_TEST (test_strv_reverse)
{
struct UCStrv strv; struct UCStrv strv;
uc_strv_init(&strv); uc_strv_init(&strv);
@@ -170,8 +171,7 @@ START_TEST (test_strv_reverse)
ck_assert_str_eq("string1", strv.strings[2]); ck_assert_str_eq("string1", strv.strings[2]);
uc_strv_destroy(&strv); uc_strv_destroy(&strv);
}
END_TEST END_TEST
Suite *strv_suite(void) Suite *strv_suite(void)