chiark / gitweb /
Properly report invalid quoted strings
[elogind.git] / src / test / test-strv.c
index cdd2a539af9f024d9af91084e76678bb760e4462..7ba4c366aca95fa428b5e371bb02e2ef198b6d6d 100644 (file)
@@ -141,6 +141,7 @@ static void test_strv_quote_unquote(const char* const *split, const char *quoted
         _cleanup_free_ char *p;
         _cleanup_strv_free_ char **s;
         char **t;
+        int r;
 
         p = strv_join_quoted((char **)split);
         assert_se(p);
@@ -148,7 +149,8 @@ static void test_strv_quote_unquote(const char* const *split, const char *quoted
         assert_se(p);
         assert_se(streq(p, quoted));
 
-        s = strv_split_quoted(quoted);
+        r = strv_split_quoted(&s, quoted);
+        assert_se(r == 0);
         assert_se(s);
         STRV_FOREACH(t, s) {
                 assert_se(*t);
@@ -162,8 +164,10 @@ static void test_strv_unquote(const char *quoted, const char **list) {
         _cleanup_free_ char *j;
         unsigned i = 0;
         char **t;
+        int r;
 
-        s = strv_split_quoted(quoted);
+        r = strv_split_quoted(&s, quoted);
+        assert_se(r == 0);
         assert_se(s);
         j = strv_join(s, " | ");
         assert(j);
@@ -176,10 +180,12 @@ static void test_strv_unquote(const char *quoted, const char **list) {
 }
 
 static void test_invalid_unquote(const char *quoted) {
-        char **s;
+        char **s = NULL;
+        int r;
 
-        s = strv_split_quoted(quoted);
+        r = strv_split_quoted(&s, quoted);
         assert(s == NULL);
+        assert(r == -EINVAL);
 }
 
 static void test_strv_split(void) {
@@ -441,6 +447,9 @@ int main(int argc, char *argv[]) {
         test_invalid_unquote("a  --b='c \"d e\"'");
         test_invalid_unquote("a  --b='c \"d e\" '");
         test_invalid_unquote("a  --b='c \"d e\"garbage");
+        test_invalid_unquote("'");
+        test_invalid_unquote("\"");
+        test_invalid_unquote("'x'y");
 
         test_strv_split();
         test_strv_split_newlines();