diff options
author | Luca Boccassi <luca.boccassi@microsoft.com> | 2021-06-17 13:12:57 +0100 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@microsoft.com> | 2021-06-24 13:41:17 +0100 |
commit | 70b6ee6110375222b6d102812d38e3e2bd19970f (patch) | |
tree | 4ff48ab4af9a37574433725b4e3b14e4a976b178 /src/test/test-extract-word.c | |
parent | b80ef40cafad78173cc87274b026c50badbd504a (diff) | |
download | systemd-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.c | 52 |
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) { |