diff options
-rw-r--r-- | src/test/test-execute.c | 11 | ||||
-rw-r--r-- | test/meson.build | 1 | ||||
-rw-r--r-- | test/test-execute/exec-bind-paths.service | 14 |
3 files changed, 26 insertions, 0 deletions
diff --git a/src/test/test-execute.c b/src/test/test-execute.c index 486c7e1226..7e36900ce8 100644 --- a/src/test/test-execute.c +++ b/src/test/test-execute.c @@ -100,6 +100,16 @@ static void test(Manager *m, const char *unit_name, int status_expected, int cod check(m, unit, status_expected, code_expected); } +static void test_exec_bind_paths(Manager *m) { + assert_se(mkdir_p("/tmp/test-exec_bind_paths", 0755) >= 0); + assert_se(mkdir_p("/tmp/test-exec_bind_readonly_paths", 0755) >= 0); + + test(m, "exec-bind-paths.service", 0, CLD_EXITED); + + (void) rm_rf("/tmp/test-exec_bind_paths", REMOVE_ROOT|REMOVE_PHYSICAL); + (void) rm_rf("/tmp/test-exec_bind_readonly_paths", REMOVE_ROOT|REMOVE_PHYSICAL); +} + static void test_exec_workingdirectory(Manager *m) { assert_se(mkdir_p("/tmp/test-exec_workingdirectory", 0755) >= 0); @@ -483,6 +493,7 @@ static int run_tests(UnitFileScope scope, const test_function_t *tests) { int main(int argc, char *argv[]) { static const test_function_t user_tests[] = { + test_exec_bind_paths, test_exec_workingdirectory, test_exec_personality, test_exec_ignoresigpipe, diff --git a/test/meson.build b/test/meson.build index c2df7ec226..2b523da725 100644 --- a/test/meson.build +++ b/test/meson.build @@ -46,6 +46,7 @@ test_data_files = ''' test-path/path-makedirectory.path test-path/path-modified.path test-path/path-unit.path + test-execute/exec-bind-paths.service test-execute/exec-environment-empty.service test-execute/exec-environment-multiple.service test-execute/exec-environment.service diff --git a/test/test-execute/exec-bind-paths.service b/test/test-execute/exec-bind-paths.service new file mode 100644 index 0000000000..e6584c8ef4 --- /dev/null +++ b/test/test-execute/exec-bind-paths.service @@ -0,0 +1,14 @@ +[Service] +Type=oneshot +# Create a file in /tmp/test-exec_bind_paths +ExecStart=/bin/sh -c 'touch /tmp/test-exec_bind_paths/thisisasimpletest' +# Then, the file can be access through /tmp +ExecStart=/bin/sh -c 'test -f /tmp/thisisasimpletest' +# Also, through /tmp/test-exec_bind_readonly_paths +ExecStart=/bin/sh -c 'test -f /tmp/test-exec_bind_readonly_paths/thisisasimpletest' +# The file cannot modify through /tmp/test-exec_bind_readonly_paths +ExecStart=/bin/sh -x -c '! touch /tmp/test-exec_bind_readonly_paths/thisisasimpletest' +# Cleanup +ExecStart=/bin/sh -c 'rm /tmp/thisisasimpletest' +BindPaths=/tmp:/tmp/test-exec_bind_paths +BindReadOnlyPaths=/tmp:/tmp/test-exec_bind_readonly_paths |