summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/test/test-execute.c11
-rw-r--r--test/meson.build1
-rw-r--r--test/test-execute/exec-bind-paths.service14
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