diff --git a/src/test/test-exec-util.c b/src/test/test-exec-util.c index 47a82eb969c..d6a9de32ad2 100644 --- a/src/test/test-exec-util.c +++ b/src/test/test-exec-util.c @@ -20,6 +20,7 @@ #include "string-util.h" #include "strv.h" #include "tests.h" +#include "tmpfile-util.h" static int here = 0, here2 = 0, here3 = 0; static void *ignore_stdout_args[] = { &here, &here2, &here3 }; @@ -54,9 +55,7 @@ static const gather_stdout_callback_t ignore_stdout[] = { }; static void test_execute_directory_one(bool gather_stdout) { - char template_lo[] = "/tmp/test-exec-util.lo.XXXXXXX"; - char template_hi[] = "/tmp/test-exec-util.hi.XXXXXXX"; - const char * dirs[] = {template_hi, template_lo, NULL}; + _cleanup_(rm_rf_physical_and_freep) char *tmp_lo = NULL, *tmp_hi = NULL; const char *name, *name2, *name3, *overridden, *override, *masked, *mask, @@ -65,20 +64,22 @@ static void test_execute_directory_one(bool gather_stdout) { log_info("/* %s (%s) */", __func__, gather_stdout ? "gathering stdout" : "asynchronous"); - assert_se(mkdtemp(template_lo)); - assert_se(mkdtemp(template_hi)); + assert_se(mkdtemp_malloc("/tmp/test-exec-util.lo.XXXXXXX", &tmp_lo) >= 0); + assert_se(mkdtemp_malloc("/tmp/test-exec-util.hi.XXXXXXX", &tmp_hi) >= 0); - name = strjoina(template_lo, "/script"); - name2 = strjoina(template_hi, "/script2"); - name3 = strjoina(template_lo, "/useless"); - overridden = strjoina(template_lo, "/overridden"); - override = strjoina(template_hi, "/overridden"); - masked = strjoina(template_lo, "/masked"); - mask = strjoina(template_hi, "/masked"); - masked2 = strjoina(template_lo, "/masked2"); - mask2 = strjoina(template_hi, "/masked2"); - masked2e = strjoina(template_lo, "/masked2e"); - mask2e = strjoina(template_hi, "/masked2e"); + const char * dirs[] = { tmp_hi, tmp_lo, NULL }; + + name = strjoina(tmp_lo, "/script"); + name2 = strjoina(tmp_hi, "/script2"); + name3 = strjoina(tmp_lo, "/useless"); + overridden = strjoina(tmp_lo, "/overridden"); + override = strjoina(tmp_hi, "/overridden"); + masked = strjoina(tmp_lo, "/masked"); + mask = strjoina(tmp_hi, "/masked"); + masked2 = strjoina(tmp_lo, "/masked2"); + mask2 = strjoina(tmp_hi, "/masked2"); + masked2e = strjoina(tmp_lo, "/masked2e"); + mask2e = strjoina(tmp_hi, "/masked2e"); assert_se(write_string_file(name, "#!/bin/sh\necho 'Executing '$0\ntouch $(dirname $0)/it_works", @@ -123,16 +124,13 @@ static void test_execute_directory_one(bool gather_stdout) { else execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, NULL, NULL, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS); - assert_se(chdir(template_lo) == 0); + assert_se(chdir(tmp_lo) == 0); assert_se(access("it_works", F_OK) >= 0); assert_se(access("failed", F_OK) < 0); - assert_se(chdir(template_hi) == 0); + assert_se(chdir(tmp_hi) == 0); assert_se(access("it_works2", F_OK) >= 0); assert_se(access("failed", F_OK) < 0); - - (void) rm_rf(template_lo, REMOVE_ROOT|REMOVE_PHYSICAL); - (void) rm_rf(template_hi, REMOVE_ROOT|REMOVE_PHYSICAL); } TEST(execute_directory) { @@ -141,28 +139,28 @@ TEST(execute_directory) { } TEST(execution_order) { - char template_lo[] = "/tmp/test-exec-util-lo.XXXXXXX"; - char template_hi[] = "/tmp/test-exec-util-hi.XXXXXXX"; - const char *dirs[] = {template_hi, template_lo, NULL}; + _cleanup_(rm_rf_physical_and_freep) char *tmp_lo = NULL, *tmp_hi = NULL; const char *name, *name2, *name3, *overridden, *override, *masked, *mask; const char *output, *t; _cleanup_free_ char *contents = NULL; - assert_se(mkdtemp(template_lo)); - assert_se(mkdtemp(template_hi)); + assert_se(mkdtemp_malloc("/tmp/test-exec-util-lo.XXXXXXX", &tmp_lo) >= 0); + assert_se(mkdtemp_malloc("/tmp/test-exec-util-hi.XXXXXXX", &tmp_hi) >= 0); - output = strjoina(template_hi, "/output"); + const char *dirs[] = { tmp_hi, tmp_lo, NULL }; + + output = strjoina(tmp_hi, "/output"); log_info("/* %s >>%s */", __func__, output); /* write files in "random" order */ - name2 = strjoina(template_lo, "/90-bar"); - name = strjoina(template_hi, "/80-foo"); - name3 = strjoina(template_lo, "/last"); - overridden = strjoina(template_lo, "/30-override"); - override = strjoina(template_hi, "/30-override"); - masked = strjoina(template_lo, "/10-masked"); - mask = strjoina(template_hi, "/10-masked"); + name2 = strjoina(tmp_lo, "/90-bar"); + name = strjoina(tmp_hi, "/80-foo"); + name3 = strjoina(tmp_lo, "/last"); + overridden = strjoina(tmp_lo, "/30-override"); + override = strjoina(tmp_hi, "/30-override"); + masked = strjoina(tmp_lo, "/10-masked"); + mask = strjoina(tmp_hi, "/10-masked"); t = strjoina("#!/bin/sh\necho $(basename $0) >>", output); assert_se(write_string_file(name, t, WRITE_STRING_FILE_CREATE) == 0); @@ -198,9 +196,6 @@ TEST(execution_order) { assert_se(read_full_file(output, &contents, NULL) >= 0); assert_se(streq(contents, "30-override\n80-foo\n90-bar\nlast\n")); - - (void) rm_rf(template_lo, REMOVE_ROOT|REMOVE_PHYSICAL); - (void) rm_rf(template_hi, REMOVE_ROOT|REMOVE_PHYSICAL); } static int gather_stdout_one(int fd, void *arg) { @@ -243,8 +238,7 @@ const gather_stdout_callback_t gather_stdouts[] = { }; TEST(stdout_gathering) { - char template[] = "/tmp/test-exec-util.XXXXXXX"; - const char *dirs[] = {template, NULL}; + _cleanup_(rm_rf_physical_and_freep) char *tmpdir = NULL; const char *name, *name2, *name3; int r; @@ -253,12 +247,14 @@ TEST(stdout_gathering) { void* args[] = {&tmp, &tmp, &output}; - assert_se(mkdtemp(template)); + assert_se(mkdtemp_malloc("/tmp/test-exec-util.XXXXXXX", &tmpdir) >= 0); + + const char *dirs[] = { tmpdir, NULL }; /* write files */ - name = strjoina(template, "/10-foo"); - name2 = strjoina(template, "/20-bar"); - name3 = strjoina(template, "/30-last"); + name = strjoina(tmpdir, "/10-foo"); + name2 = strjoina(tmpdir, "/20-bar"); + name3 = strjoina(tmpdir, "/30-last"); assert_se(write_string_file(name, "#!/bin/sh\necho a\necho b\necho c\n", @@ -287,9 +283,9 @@ TEST(stdout_gathering) { } TEST(environment_gathering) { - char template[] = "/tmp/test-exec-util.XXXXXXX", **p; - const char *dirs[] = {template, NULL}; + _cleanup_(rm_rf_physical_and_freep) char *tmpdir = NULL; const char *name, *name2, *name3, *old; + char **p; int r; char **tmp = NULL; /* this is only used in the forked process, no cleanup here */ @@ -297,12 +293,14 @@ TEST(environment_gathering) { void* const args[] = { &tmp, &tmp, &env }; - assert_se(mkdtemp(template)); + assert_se(mkdtemp_malloc("/tmp/test-exec-util.XXXXXXX", &tmpdir) >= 0); + + const char *dirs[] = { tmpdir, NULL }; /* write files */ - name = strjoina(template, "/10-foo"); - name2 = strjoina(template, "/20-bar"); - name3 = strjoina(template, "/30-last"); + name = strjoina(tmpdir, "/10-foo"); + name2 = strjoina(tmpdir, "/20-bar"); + name3 = strjoina(tmpdir, "/30-last"); assert_se(write_string_file(name, "#!/bin/sh\n" @@ -378,17 +376,18 @@ TEST(environment_gathering) { } TEST(error_catching) { - char template[] = "/tmp/test-exec-util.XXXXXXX"; - const char *dirs[] = {template, NULL}; + _cleanup_(rm_rf_physical_and_freep) char *tmpdir = NULL; const char *name, *name2, *name3; int r; - assert_se(mkdtemp(template)); + assert_se(mkdtemp_malloc("/tmp/test-exec-util.XXXXXXX", &tmpdir) >= 0); + + const char *dirs[] = { tmpdir, NULL }; /* write files */ - name = strjoina(template, "/10-foo"); - name2 = strjoina(template, "/20-bar"); - name3 = strjoina(template, "/30-last"); + name = strjoina(tmpdir, "/10-foo"); + name2 = strjoina(tmpdir, "/20-bar"); + name3 = strjoina(tmpdir, "/30-last"); assert_se(write_string_file(name, "#!/bin/sh\necho a\necho b\necho c\n", diff --git a/src/test/test-path-lookup.c b/src/test/test-path-lookup.c index a19a33c64b1..a1ae2362393 100644 --- a/src/test/test-path-lookup.c +++ b/src/test/test-path-lookup.c @@ -9,30 +9,28 @@ #include "string-util.h" #include "strv.h" #include "tests.h" +#include "tmpfile-util.h" static void test_paths_one(UnitFileScope scope) { - char template[] = "/tmp/test-path-lookup.XXXXXXX"; - + _cleanup_(rm_rf_physical_and_freep) char *tmp = NULL; _cleanup_(lookup_paths_free) LookupPaths lp_without_env = {}; _cleanup_(lookup_paths_free) LookupPaths lp_with_env = {}; char *systemd_unit_path; - assert_se(mkdtemp(template)); + assert_se(mkdtemp_malloc("/tmp/test-path-lookup.XXXXXXX", &tmp) >= 0); assert_se(unsetenv("SYSTEMD_UNIT_PATH") == 0); assert_se(lookup_paths_init(&lp_without_env, scope, 0, NULL) >= 0); assert_se(!strv_isempty(lp_without_env.search_path)); lookup_paths_log(&lp_without_env); - systemd_unit_path = strjoina(template, "/systemd-unit-path"); + systemd_unit_path = strjoina(tmp, "/systemd-unit-path"); assert_se(setenv("SYSTEMD_UNIT_PATH", systemd_unit_path, 1) == 0); assert_se(lookup_paths_init(&lp_with_env, scope, 0, NULL) == 0); assert_se(strv_length(lp_with_env.search_path) == 1); assert_se(streq(lp_with_env.search_path[0], systemd_unit_path)); lookup_paths_log(&lp_with_env); assert_se(strv_equal(lp_with_env.search_path, STRV_MAKE(systemd_unit_path))); - - assert_se(rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL) >= 0); } TEST(paths) { @@ -73,8 +71,7 @@ TEST(user_and_global_paths) { } static void test_generator_binary_paths_one(UnitFileScope scope) { - char template[] = "/tmp/test-path-lookup.XXXXXXX"; - + _cleanup_(rm_rf_physical_and_freep) char *tmp = NULL; _cleanup_strv_free_ char **gp_without_env = NULL; _cleanup_strv_free_ char **env_gp_without_env = NULL; _cleanup_strv_free_ char **gp_with_env = NULL; @@ -83,7 +80,7 @@ static void test_generator_binary_paths_one(UnitFileScope scope) { char *systemd_env_generator_path = NULL; char **dir; - assert_se(mkdtemp(template)); + assert_se(mkdtemp_malloc("/tmp/test-path-lookup.XXXXXXX", &tmp) >= 0); assert_se(unsetenv("SYSTEMD_GENERATOR_PATH") == 0); assert_se(unsetenv("SYSTEMD_ENVIRONMENT_GENERATOR_PATH") == 0); @@ -102,8 +99,8 @@ static void test_generator_binary_paths_one(UnitFileScope scope) { assert_se(!strv_isempty(gp_without_env)); assert_se(!strv_isempty(env_gp_without_env)); - systemd_generator_path = strjoina(template, "/systemd-generator-path"); - systemd_env_generator_path = strjoina(template, "/systemd-environment-generator-path"); + systemd_generator_path = strjoina(tmp, "/systemd-generator-path"); + systemd_env_generator_path = strjoina(tmp, "/systemd-environment-generator-path"); assert_se(setenv("SYSTEMD_GENERATOR_PATH", systemd_generator_path, 1) == 0); assert_se(setenv("SYSTEMD_ENVIRONMENT_GENERATOR_PATH", systemd_env_generator_path, 1) == 0);