]> git.ipfire.org Git - pakfire.git/commitdiff
util: Add test for pakfire_string_matches
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 5 Oct 2021 14:17:18 +0000 (14:17 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 5 Oct 2021 14:17:18 +0000 (14:17 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/util.c
tests/libpakfire/util.c

index 553c83af65ec79a0a9c061961e9af723c6ab7210..d6529585e21b9b00859e6d6fbf87b772b6a859e0 100644 (file)
@@ -177,6 +177,12 @@ int pakfire_string_endswith(const char* s, const char* suffix) {
 }
 
 int pakfire_string_matches(const char* s, const char* pattern) {
+       // Validate input
+       if (!s || !pattern) {
+               errno = EINVAL;
+               return 1;
+       }
+
        return !!strstr(s, pattern);
 }
 
index ffddc897a10f0f63faae1dafe3556c2b9ef8cf1a..4c5b0524ece3eb582cef6d85d36556c0fc787938 100644 (file)
@@ -83,6 +83,27 @@ FAIL:
        return EXIT_FAILURE;
 }
 
+static int test_string_matches(const struct test* t) {
+       ASSERT_TRUE(pakfire_string_matches("ABC", "A"));
+       ASSERT_TRUE(pakfire_string_matches("ABC", "B"));
+       ASSERT_TRUE(pakfire_string_matches("ABC", "C"));
+       ASSERT_TRUE(pakfire_string_matches("ABC", "AB"));
+       ASSERT_TRUE(pakfire_string_matches("ABC", "BC"));
+       ASSERT_TRUE(pakfire_string_matches("ABC", "ABC"));
+       ASSERT_FALSE(pakfire_string_matches("ABC", "D"));
+       ASSERT_FALSE(pakfire_string_matches("ABC", "ABCD"));
+
+       // Check for invalid inputs
+       ASSERT_ERRNO(pakfire_string_matches("ABC", NULL), EINVAL);
+       ASSERT_ERRNO(pakfire_string_matches(NULL, "ABC"), EINVAL);
+       ASSERT_ERRNO(pakfire_string_matches(NULL, NULL), EINVAL);
+
+       return EXIT_SUCCESS;
+
+FAIL:
+       return EXIT_FAILURE;
+}
+
 static int test_string_partition(const struct test* t) {
        char* part1;
        char* part2;
@@ -190,6 +211,7 @@ int main(int argc, char** argv) {
        testsuite_add_test(test_dirname);
        testsuite_add_test(test_string_startswith);
        testsuite_add_test(test_string_endswith);
+       testsuite_add_test(test_string_matches);
        testsuite_add_test(test_string_partition);
        testsuite_add_test(test_string_replace);
        testsuite_add_test(test_string_split);