#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 };
};
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,
log_info("/* %s (%s) */", __func__, gather_stdout ? "gathering stdout" : "asynchronous");
- assert_se(mkdtemp(template_lo));
- assert_se(mkdtemp(template_hi));
-
- 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");
+ 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);
+
+ 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",
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) {
}
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);
+
+ const char *dirs[] = { tmp_hi, tmp_lo, NULL };
- output = strjoina(template_hi, "/output");
+ 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);
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) {
};
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;
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",
}
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 */
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"
}
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",
#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) {
}
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;
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);
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);