Skip to content

Commit e9e982a

Browse files
keszybzyuwata
authored andcommitted
test-env-file: add tests for quoting in env files
1 parent 398a500 commit e9e982a

File tree

1 file changed

+50
-18
lines changed

1 file changed

+50
-18
lines changed

src/test/test-env-file.c

Lines changed: 50 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
"a=a\n" \
1414
"b=b\\\n" \
1515
"c\n" \
16-
"d=d\\\n" \
17-
"e\\\n" \
18-
"f\n" \
16+
"d= d\\\n" \
17+
"e \\\n" \
18+
"f \n" \
1919
"g=g\\ \n" \
20-
"h=h\n" \
20+
"h= ąęół\\ śćńźżµ \n" \
2121
"i=i\\"
2222

2323
#define env_file_2 \
@@ -26,22 +26,34 @@
2626
#define env_file_3 \
2727
"#SPAMD_ARGS=\"-d --socketpath=/var/lib/bulwark/spamd \\\n" \
2828
"#--nouser-config \\\n" \
29-
"normal=line"
30-
31-
#define env_file_4 \
32-
"# Generated\n" \
33-
"\n" \
34-
"HWMON_MODULES=\"coretemp f71882fg\"\n" \
35-
"\n" \
36-
"# For compatibility reasons\n" \
37-
"\n" \
38-
"MODULE_0=coretemp\n" \
39-
"MODULE_1=f71882fg"
29+
"normal=line \\\n" \
30+
";normal=ignored \\\n" \
31+
"normal_ignored \\\n" \
32+
"normal ignored \\\n"
33+
34+
#define env_file_4 \
35+
"# Generated\n" \
36+
"\n" \
37+
"HWMON_MODULES=\"coretemp f71882fg\"\n" \
38+
"\n" \
39+
"# For compatibility reasons\n" \
40+
"\n" \
41+
"MODULE_0=coretemp\n" \
42+
"MODULE_1=f71882fg"
4043

4144
#define env_file_5 \
42-
"a=\n" \
45+
"a=\n" \
4346
"b="
4447

48+
#define env_file_6 \
49+
"a=\\ \\n \\t \\x \\y \\' \n" \
50+
"b= \\$' \n" \
51+
"c= ' \\n\\t\\$\\`\\\\\n" \
52+
"' \n" \
53+
"d= \" \\n\\t\\$\\`\\\\\n" \
54+
"\" \n"
55+
56+
4557
TEST(load_env_file_1) {
4658
_cleanup_strv_free_ char **data = NULL;
4759
int r;
@@ -57,9 +69,9 @@ TEST(load_env_file_1) {
5769
assert_se(r == 0);
5870
assert_se(streq(data[0], "a=a"));
5971
assert_se(streq(data[1], "b=bc"));
60-
assert_se(streq(data[2], "d=def"));
72+
assert_se(streq(data[2], "d=de f"));
6173
assert_se(streq(data[3], "g=g "));
62-
assert_se(streq(data[4], "h=h"));
74+
assert_se(streq(data[4], "h=ąęół śćńźżµ"));
6375
assert_se(streq(data[5], "i=i"));
6476
assert_se(data[6] == NULL);
6577
}
@@ -133,6 +145,26 @@ TEST(load_env_file_5) {
133145
assert_se(data[2] == NULL);
134146
}
135147

148+
TEST(load_env_file_6) {
149+
_cleanup_strv_free_ char **data = NULL;
150+
int r;
151+
152+
_cleanup_(unlink_tempfilep) char name[] = "/tmp/test-load-env-file.XXXXXX";
153+
_cleanup_close_ int fd;
154+
155+
fd = mkostemp_safe(name);
156+
assert_se(fd >= 0);
157+
assert_se(write(fd, env_file_6, strlen(env_file_6)) == strlen(env_file_6));
158+
159+
r = load_env_file(NULL, name, &data);
160+
assert_se(r == 0);
161+
assert_se(streq(data[0], "a= n t x y '"));
162+
assert_se(streq(data[1], "b=$'"));
163+
assert_se(streq(data[2], "c= \\n\\t\\$\\`\\\\\n"));
164+
assert_se(streq(data[3], "d= \\n\\t$`\\\n"));
165+
assert_se(data[4] == NULL);
166+
}
167+
136168
TEST(write_and_load_env_file) {
137169
const char *v;
138170

0 commit comments

Comments
 (0)