summaryrefslogtreecommitdiff
path: root/src/test/test-extract-word.c
diff options
context:
space:
mode:
authorLuca Boccassi <luca.boccassi@microsoft.com>2021-06-17 13:12:57 +0100
committerLuca Boccassi <luca.boccassi@microsoft.com>2021-06-24 13:41:17 +0100
commit70b6ee6110375222b6d102812d38e3e2bd19970f (patch)
tree4ff48ab4af9a37574433725b4e3b14e4a976b178 /src/test/test-extract-word.c
parentb80ef40cafad78173cc87274b026c50badbd504a (diff)
downloadsystemd-70b6ee6110375222b6d102812d38e3e2bd19970f.tar.gz
basic/extract-word: add EXTRACT_RETAIN_SEPARATORS flag
Makes the helpers avoid skipping over the separator(s) in the input string
Diffstat (limited to 'src/test/test-extract-word.c')
-rw-r--r--src/test/test-extract-word.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/test/test-extract-word.c b/src/test/test-extract-word.c
index a392ec7588..8cf0b63a4c 100644
--- a/src/test/test-extract-word.c
+++ b/src/test/test-extract-word.c
@@ -482,6 +482,58 @@ static void test_extract_first_word(void) {
assert_se(extract_first_word(&p, &t, ",", EXTRACT_UNQUOTE) > 0);
assert_se(streq(t, "context=system_u:object_r:svirt_sandbox_file_t:s0:c0,c1"));
free(t);
+
+ p = "a:b";
+ assert_se(extract_first_word(&p, &t, ":", EXTRACT_RETAIN_SEPARATORS) == 1);
+ assert_se(streq(t, "a"));
+ assert_se(streq(p, ":b"));
+ free(t);
+ assert_se(extract_first_word(&p, &t, ":", EXTRACT_RETAIN_SEPARATORS) == 1);
+ assert_se(streq(t, "b"));
+ free(t);
+
+ p = "a>:b";
+ assert_se(extract_first_word(&p, &t, ">:", EXTRACT_RETAIN_SEPARATORS) == 1);
+ assert_se(streq(t, "a"));
+ assert_se(streq(p, ">:b"));
+ free(t);
+ assert_se(extract_first_word(&p, &t, ">:", EXTRACT_RETAIN_SEPARATORS) == 1);
+ assert_se(streq(t, "b"));
+ free(t);
+
+ p = "a>:b";
+ assert_se(extract_first_word(&p, &t, ">:", EXTRACT_RETAIN_SEPARATORS|EXTRACT_DONT_COALESCE_SEPARATORS) == 1);
+ assert_se(streq(t, "a"));
+ assert_se(streq(p, ">:b"));
+ free(t);
+ assert_se(extract_first_word(&p, &t, ">:", EXTRACT_RETAIN_SEPARATORS|EXTRACT_DONT_COALESCE_SEPARATORS) == 1);
+ assert_se(streq(t, ""));
+ assert_se(streq(p, ">:b"));
+ free(t);
+
+ p = "a\\:b";
+ assert_se(extract_first_word(&p, &t, ":", EXTRACT_RETAIN_SEPARATORS|EXTRACT_RETAIN_ESCAPE) == 1);
+ assert_se(streq(t, "a\\"));
+ assert_se(streq(p, ":b"));
+ free(t);
+
+ p = "a\\:b";
+ assert_se(extract_first_word(&p, &t, ":", EXTRACT_RETAIN_SEPARATORS) == 1);
+ assert_se(streq(t, "a:b"));
+ assert_se(!p);
+ free(t);
+
+ p = "a\\:b";
+ assert_se(extract_first_word(&p, &t, ":", EXTRACT_RETAIN_SEPARATORS|EXTRACT_UNESCAPE_SEPARATORS) == 1);
+ assert_se(streq(t, "a:b"));
+ assert_se(!p);
+ free(t);
+
+ p = "a\\:a:b";
+ assert_se(extract_first_word(&p, &t, ":", EXTRACT_RETAIN_SEPARATORS|EXTRACT_UNESCAPE_SEPARATORS) == 1);
+ assert_se(streq(t, "a:a"));
+ assert_se(streq(p, ":b"));
+ free(t);
}
static void test_extract_first_word_and_warn(void) {