You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
4.3 KiB
119 lines
4.3 KiB
2 years ago
|
From 402854a52a0a659fd914279eae17b4e065a9c294 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||
|
Date: Wed, 19 Jan 2022 10:15:50 +0100
|
||
|
Subject: [PATCH] test-env-file: add tests for quoting in env files
|
||
|
|
||
|
(cherry picked from commit e9e982a29d52834375e5fb553cecb45bc905cf91)
|
||
|
|
||
|
Related: #2017035
|
||
|
---
|
||
|
src/test/test-env-file.c | 68 +++++++++++++++++++++++++++++-----------
|
||
|
1 file changed, 50 insertions(+), 18 deletions(-)
|
||
|
|
||
|
diff --git a/src/test/test-env-file.c b/src/test/test-env-file.c
|
||
|
index 6cc2455c1f..7b132447bf 100644
|
||
|
--- a/src/test/test-env-file.c
|
||
|
+++ b/src/test/test-env-file.c
|
||
|
@@ -13,11 +13,11 @@
|
||
|
"a=a\n" \
|
||
|
"b=b\\\n" \
|
||
|
"c\n" \
|
||
|
- "d=d\\\n" \
|
||
|
- "e\\\n" \
|
||
|
- "f\n" \
|
||
|
+ "d= d\\\n" \
|
||
|
+ "e \\\n" \
|
||
|
+ "f \n" \
|
||
|
"g=g\\ \n" \
|
||
|
- "h=h\n" \
|
||
|
+ "h= ąęół\\ śćńźżµ \n" \
|
||
|
"i=i\\"
|
||
|
|
||
|
#define env_file_2 \
|
||
|
@@ -26,22 +26,34 @@
|
||
|
#define env_file_3 \
|
||
|
"#SPAMD_ARGS=\"-d --socketpath=/var/lib/bulwark/spamd \\\n" \
|
||
|
"#--nouser-config \\\n" \
|
||
|
- "normal=line"
|
||
|
-
|
||
|
-#define env_file_4 \
|
||
|
- "# Generated\n" \
|
||
|
- "\n" \
|
||
|
- "HWMON_MODULES=\"coretemp f71882fg\"\n" \
|
||
|
- "\n" \
|
||
|
- "# For compatibility reasons\n" \
|
||
|
- "\n" \
|
||
|
- "MODULE_0=coretemp\n" \
|
||
|
- "MODULE_1=f71882fg"
|
||
|
+ "normal=line \\\n" \
|
||
|
+ ";normal=ignored \\\n" \
|
||
|
+ "normal_ignored \\\n" \
|
||
|
+ "normal ignored \\\n"
|
||
|
+
|
||
|
+#define env_file_4 \
|
||
|
+ "# Generated\n" \
|
||
|
+ "\n" \
|
||
|
+ "HWMON_MODULES=\"coretemp f71882fg\"\n" \
|
||
|
+ "\n" \
|
||
|
+ "# For compatibility reasons\n" \
|
||
|
+ "\n" \
|
||
|
+ "MODULE_0=coretemp\n" \
|
||
|
+ "MODULE_1=f71882fg"
|
||
|
|
||
|
#define env_file_5 \
|
||
|
- "a=\n" \
|
||
|
+ "a=\n" \
|
||
|
"b="
|
||
|
|
||
|
+#define env_file_6 \
|
||
|
+ "a=\\ \\n \\t \\x \\y \\' \n" \
|
||
|
+ "b= \\$' \n" \
|
||
|
+ "c= ' \\n\\t\\$\\`\\\\\n" \
|
||
|
+ "' \n" \
|
||
|
+ "d= \" \\n\\t\\$\\`\\\\\n" \
|
||
|
+ "\" \n"
|
||
|
+
|
||
|
+
|
||
|
TEST(load_env_file_1) {
|
||
|
_cleanup_strv_free_ char **data = NULL;
|
||
|
int r;
|
||
|
@@ -57,9 +69,9 @@ TEST(load_env_file_1) {
|
||
|
assert_se(r == 0);
|
||
|
assert_se(streq(data[0], "a=a"));
|
||
|
assert_se(streq(data[1], "b=bc"));
|
||
|
- assert_se(streq(data[2], "d=def"));
|
||
|
+ assert_se(streq(data[2], "d=de f"));
|
||
|
assert_se(streq(data[3], "g=g "));
|
||
|
- assert_se(streq(data[4], "h=h"));
|
||
|
+ assert_se(streq(data[4], "h=ąęół śćńźżµ"));
|
||
|
assert_se(streq(data[5], "i=i"));
|
||
|
assert_se(data[6] == NULL);
|
||
|
}
|
||
|
@@ -133,6 +145,26 @@ TEST(load_env_file_5) {
|
||
|
assert_se(data[2] == NULL);
|
||
|
}
|
||
|
|
||
|
+TEST(load_env_file_6) {
|
||
|
+ _cleanup_strv_free_ char **data = NULL;
|
||
|
+ int r;
|
||
|
+
|
||
|
+ _cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
|
||
|
+ _cleanup_close_ int fd;
|
||
|
+
|
||
|
+ fd = mkostemp_safe(name);
|
||
|
+ assert_se(fd >= 0);
|
||
|
+ assert_se(write(fd, env_file_6, strlen(env_file_6)) == strlen(env_file_6));
|
||
|
+
|
||
|
+ r = load_env_file(NULL, name, &data);
|
||
|
+ assert_se(r == 0);
|
||
|
+ assert_se(streq(data[0], "a= n t x y '"));
|
||
|
+ assert_se(streq(data[1], "b=$'"));
|
||
|
+ assert_se(streq(data[2], "c= \\n\\t\\$\\`\\\\\n"));
|
||
|
+ assert_se(streq(data[3], "d= \\n\\t$`\\\n"));
|
||
|
+ assert_se(data[4] == NULL);
|
||
|
+}
|
||
|
+
|
||
|
TEST(write_and_load_env_file) {
|
||
|
const char *v;
|
||
|
|