mirror of
https://github.com/systemd/systemd.git
synced 2025-03-25 18:50:18 +03:00
test: pass temporary allocated unit to config_parse_exec()
Now, config_parse_exec() use the userdata as unit and assert on NULL. So allocate empty unit and use that on config_parse_exec().
This commit is contained in:
parent
cb48dfca6a
commit
139891f033
@ -111,17 +111,30 @@ static void test_config_parse_exec(void) {
|
||||
|
||||
ExecCommand *c = NULL, *c1;
|
||||
const char *ccc;
|
||||
Manager *m = NULL;
|
||||
Unit *u = NULL;
|
||||
|
||||
r = manager_new(MANAGER_USER, true, &m);
|
||||
if (MANAGER_SKIP_TEST(r)) {
|
||||
printf("Skipping test: manager_new: %s\n", strerror(-r));
|
||||
return;
|
||||
}
|
||||
|
||||
assert_se(r >= 0);
|
||||
assert_se(manager_startup(m, NULL, NULL) >= 0);
|
||||
|
||||
assert_se(u = unit_new(m, sizeof(Service)));
|
||||
|
||||
log_info("/* basic test */");
|
||||
r = config_parse_exec(NULL, "fake", 1, "section", 1,
|
||||
"LValue", 0, "/RValue r1",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
check_execcommand(c, "/RValue", "/RValue", "r1", NULL, false);
|
||||
|
||||
r = config_parse_exec(NULL, "fake", 2, "section", 1,
|
||||
"LValue", 0, "/RValue///slashes r1///",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
|
||||
log_info("/* test slashes */");
|
||||
assert_se(r >= 0);
|
||||
@ -131,14 +144,14 @@ static void test_config_parse_exec(void) {
|
||||
log_info("/* trailing slash */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "/RValue/ argv0 r1",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c1->command_next == NULL);
|
||||
|
||||
log_info("/* honour_argv0 */");
|
||||
r = config_parse_exec(NULL, "fake", 3, "section", 1,
|
||||
"LValue", 0, "@/RValue///slashes2 ///argv0 r1",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/RValue/slashes2", "///argv0", "r1", NULL, false);
|
||||
@ -146,21 +159,21 @@ static void test_config_parse_exec(void) {
|
||||
log_info("/* honour_argv0, no args */");
|
||||
r = config_parse_exec(NULL, "fake", 3, "section", 1,
|
||||
"LValue", 0, "@/RValue",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c1->command_next == NULL);
|
||||
|
||||
log_info("/* no command, whitespace only, reset */");
|
||||
r = config_parse_exec(NULL, "fake", 3, "section", 1,
|
||||
"LValue", 0, " ",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c == NULL);
|
||||
|
||||
log_info("/* ignore && honour_argv0 */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "-@/RValue///slashes3 argv0a r1",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c;
|
||||
check_execcommand(c1, "/RValue/slashes3", "argv0a", "r1", NULL, true);
|
||||
@ -168,7 +181,7 @@ static void test_config_parse_exec(void) {
|
||||
log_info("/* ignore && honour_argv0 */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "@-/RValue///slashes4 argv0b r1",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/RValue/slashes4", "argv0b", "r1", NULL, true);
|
||||
@ -176,14 +189,14 @@ static void test_config_parse_exec(void) {
|
||||
log_info("/* ignore && ignore */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "--/RValue argv0 r1",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c1->command_next == NULL);
|
||||
|
||||
log_info("/* ignore && ignore (2) */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "-@-/RValue argv0 r1",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c1->command_next == NULL);
|
||||
|
||||
@ -192,7 +205,7 @@ static void test_config_parse_exec(void) {
|
||||
"LValue", 0,
|
||||
"-@/RValue argv0 r1 ; "
|
||||
"/goo/goo boo",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/RValue", "argv0", "r1", NULL, true);
|
||||
@ -205,7 +218,7 @@ static void test_config_parse_exec(void) {
|
||||
"LValue", 0,
|
||||
"-@/RValue argv0 r1 ; ; "
|
||||
"/goo/goo boo",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/RValue", "argv0", "r1", NULL, true);
|
||||
@ -217,7 +230,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"-@/RValue argv0 r1 ; ",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/RValue", "argv0", "r1", NULL, true);
|
||||
@ -228,7 +241,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"-@/RValue argv0 r1 ;",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/RValue", "argv0", "r1", NULL, true);
|
||||
@ -239,7 +252,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"-@/RValue argv0 r1 ';'",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/RValue", "argv0", "r1", ";", true);
|
||||
@ -248,7 +261,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"/bin/find \\;",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/bin/find", NULL, ";", NULL, false);
|
||||
@ -257,7 +270,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"/sbin/find \\; /x",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1,
|
||||
@ -267,7 +280,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"/sbin/find \\;x",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1,
|
||||
@ -277,7 +290,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"/bin/find \\073",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/bin/find", NULL, ";", NULL, false);
|
||||
@ -286,7 +299,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"/bin/find \";\"",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/bin/find", NULL, ";", NULL, false);
|
||||
@ -295,7 +308,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"/sbin/find \";\" /x",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1,
|
||||
@ -305,7 +318,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"\"/PATH WITH SPACES/daemon\" -1 -2",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1,
|
||||
@ -315,7 +328,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"\"/PATH WITH SPACES/daemon -1 -2\"",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1,
|
||||
@ -325,7 +338,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"\"/PATH WITH SPACES/daemon\" \"-1\" '-2'",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1,
|
||||
@ -335,7 +348,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"\"/PATH\\sWITH\\sSPACES/daemon\" '-1 -2'",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1,
|
||||
@ -345,7 +358,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"\"/PATH\\x20WITH\\x20SPACES/daemon\" \"-1 -2\"",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1,
|
||||
@ -359,7 +372,7 @@ static void test_config_parse_exec(void) {
|
||||
log_info("/* invalid character: \\%c */", *ccc);
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, path,
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c1->command_next == NULL);
|
||||
}
|
||||
@ -367,7 +380,7 @@ static void test_config_parse_exec(void) {
|
||||
log_info("/* valid character: \\s */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "/path\\s",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/path ", NULL, NULL, NULL, false);
|
||||
@ -376,7 +389,7 @@ static void test_config_parse_exec(void) {
|
||||
r = config_parse_exec(NULL, "fake", 5, "section", 1,
|
||||
"LValue", 0,
|
||||
"/bin/grep '\\w+\\K'",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r >= 0);
|
||||
c1 = c1->command_next;
|
||||
check_execcommand(c1, "/bin/grep", NULL, "\\w+\\K", NULL, false);
|
||||
@ -386,46 +399,49 @@ static void test_config_parse_exec(void) {
|
||||
/* backslash is invalid */
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "/path\\",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c1->command_next == NULL);
|
||||
|
||||
log_info("/* missing ending ' */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "/path 'foo",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c1->command_next == NULL);
|
||||
|
||||
log_info("/* missing ending ' with trailing backslash */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "/path 'foo\\",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c1->command_next == NULL);
|
||||
|
||||
log_info("/* invalid space between modifiers */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "- /path",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c1->command_next == NULL);
|
||||
|
||||
log_info("/* only modifiers, no path */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "-",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c1->command_next == NULL);
|
||||
|
||||
log_info("/* empty argument, reset */");
|
||||
r = config_parse_exec(NULL, "fake", 4, "section", 1,
|
||||
"LValue", 0, "",
|
||||
&c, NULL);
|
||||
&c, u);
|
||||
assert_se(r == 0);
|
||||
assert_se(c == NULL);
|
||||
|
||||
exec_command_free_list(c);
|
||||
|
||||
unit_free(u);
|
||||
manager_free(m);
|
||||
}
|
||||
|
||||
#define env_file_1 \
|
||||
|
Loading…
x
Reference in New Issue
Block a user