|
|
a19bc6 |
From f35b737bdd6e508cf73f43a1beb3f5cb8c1ebb07 Mon Sep 17 00:00:00 2001
|
|
|
a19bc6 |
From: Filipe Brandenburger <filbranden@google.com>
|
|
|
a19bc6 |
Date: Sun, 8 Nov 2015 10:37:05 -0800
|
|
|
a19bc6 |
Subject: [PATCH] test-execute: Add tests for new PassEnvironment= directive
|
|
|
a19bc6 |
|
|
|
a19bc6 |
Check the base case, plus erasing the list, listing the same variable
|
|
|
a19bc6 |
name more than once and when variables are absent from the manager
|
|
|
a19bc6 |
execution environment.
|
|
|
a19bc6 |
|
|
|
a19bc6 |
Confirmed that `sudo ./test-execute` passes and that modifying the test
|
|
|
a19bc6 |
cases (or the values of the set variables in test-execute.c) is enough
|
|
|
a19bc6 |
to make the test cases fail.
|
|
|
a19bc6 |
|
|
|
a19bc6 |
(cherry picked from commit 4c80d201ace0377312c27143afab04e9c9f1ee64)
|
|
|
a19bc6 |
|
|
|
a19bc6 |
Related: #1426214
|
|
|
a19bc6 |
---
|
|
|
a19bc6 |
Makefile.am | 4 ++++
|
|
|
a19bc6 |
src/test/test-execute.c | 14 ++++++++++++++
|
|
|
a19bc6 |
test/exec-passenvironment-absent.service | 7 +++++++
|
|
|
a19bc6 |
test/exec-passenvironment-empty.service | 8 ++++++++
|
|
|
a19bc6 |
test/exec-passenvironment-repeated.service | 8 ++++++++
|
|
|
a19bc6 |
test/exec-passenvironment.service | 7 +++++++
|
|
|
a19bc6 |
6 files changed, 48 insertions(+)
|
|
|
a19bc6 |
create mode 100644 test/exec-passenvironment-absent.service
|
|
|
a19bc6 |
create mode 100644 test/exec-passenvironment-empty.service
|
|
|
a19bc6 |
create mode 100644 test/exec-passenvironment-repeated.service
|
|
|
a19bc6 |
create mode 100644 test/exec-passenvironment.service
|
|
|
a19bc6 |
|
|
|
a19bc6 |
diff --git a/Makefile.am b/Makefile.am
|
|
|
a19bc6 |
index 924b34b..e9ceac9 100644
|
|
|
a19bc6 |
--- a/Makefile.am
|
|
|
a19bc6 |
+++ b/Makefile.am
|
|
|
a19bc6 |
@@ -1477,6 +1477,10 @@ EXTRA_DIST += \
|
|
|
a19bc6 |
test/exec-environment-empty.service \
|
|
|
a19bc6 |
test/exec-environment-multiple.service \
|
|
|
a19bc6 |
test/exec-environment.service \
|
|
|
a19bc6 |
+ test/exec-passenvironment-absent.service \
|
|
|
a19bc6 |
+ test/exec-passenvironment-empty.service \
|
|
|
a19bc6 |
+ test/exec-passenvironment-repeated.service \
|
|
|
a19bc6 |
+ test/exec-passenvironment.service \
|
|
|
a19bc6 |
test/exec-group.service \
|
|
|
a19bc6 |
test/exec-ignoresigpipe-no.service \
|
|
|
a19bc6 |
test/exec-ignoresigpipe-yes.service \
|
|
|
a19bc6 |
diff --git a/src/test/test-execute.c b/src/test/test-execute.c
|
|
|
a19bc6 |
index 5a02960..8def194 100644
|
|
|
a19bc6 |
--- a/src/test/test-execute.c
|
|
|
a19bc6 |
+++ b/src/test/test-execute.c
|
|
|
a19bc6 |
@@ -142,6 +142,19 @@ static void test_exec_environment(Manager *m) {
|
|
|
a19bc6 |
test(m, "exec-environment-empty.service", 0, CLD_EXITED);
|
|
|
a19bc6 |
}
|
|
|
a19bc6 |
|
|
|
a19bc6 |
+static void test_exec_passenvironment(Manager *m) {
|
|
|
a19bc6 |
+ assert_se(setenv("VAR1", "word1 word2", 1) == 0);
|
|
|
a19bc6 |
+ assert_se(setenv("VAR2", "word3", 1) == 0);
|
|
|
a19bc6 |
+ assert_se(setenv("VAR3", "$word 5 6", 1) == 0);
|
|
|
a19bc6 |
+ test(m, "exec-passenvironment.service", 0, CLD_EXITED);
|
|
|
a19bc6 |
+ test(m, "exec-passenvironment-repeated.service", 0, CLD_EXITED);
|
|
|
a19bc6 |
+ test(m, "exec-passenvironment-empty.service", 0, CLD_EXITED);
|
|
|
a19bc6 |
+ assert_se(unsetenv("VAR1") == 0);
|
|
|
a19bc6 |
+ assert_se(unsetenv("VAR2") == 0);
|
|
|
a19bc6 |
+ assert_se(unsetenv("VAR3") == 0);
|
|
|
a19bc6 |
+ test(m, "exec-passenvironment-absent.service", 0, CLD_EXITED);
|
|
|
a19bc6 |
+}
|
|
|
a19bc6 |
+
|
|
|
a19bc6 |
static void test_exec_umask(Manager *m) {
|
|
|
a19bc6 |
test(m, "exec-umask-default.service", 0, CLD_EXITED);
|
|
|
a19bc6 |
test(m, "exec-umask-0177.service", 0, CLD_EXITED);
|
|
|
a19bc6 |
@@ -165,6 +178,7 @@ int main(int argc, char *argv[]) {
|
|
|
a19bc6 |
test_exec_user,
|
|
|
a19bc6 |
test_exec_group,
|
|
|
a19bc6 |
test_exec_environment,
|
|
|
a19bc6 |
+ test_exec_passenvironment,
|
|
|
a19bc6 |
test_exec_umask,
|
|
|
a19bc6 |
test_exec_runtimedirectory,
|
|
|
a19bc6 |
NULL,
|
|
|
a19bc6 |
diff --git a/test/exec-passenvironment-absent.service b/test/exec-passenvironment-absent.service
|
|
|
a19bc6 |
new file mode 100644
|
|
|
a19bc6 |
index 0000000..7d5e32a
|
|
|
a19bc6 |
--- /dev/null
|
|
|
a19bc6 |
+++ b/test/exec-passenvironment-absent.service
|
|
|
a19bc6 |
@@ -0,0 +1,7 @@
|
|
|
a19bc6 |
+[Unit]
|
|
|
a19bc6 |
+Description=Test for PassEnvironment with variables absent from the execution environment
|
|
|
a19bc6 |
+
|
|
|
a19bc6 |
+[Service]
|
|
|
a19bc6 |
+ExecStart=/bin/sh -x -c 'test "$${VAR1-unset}" = "unset" && test "$${VAR2-unset}" = "unset" && test "$${VAR3-unset}" = "unset"'
|
|
|
a19bc6 |
+Type=oneshot
|
|
|
a19bc6 |
+PassEnvironment=VAR1 VAR2 VAR3
|
|
|
a19bc6 |
diff --git a/test/exec-passenvironment-empty.service b/test/exec-passenvironment-empty.service
|
|
|
a19bc6 |
new file mode 100644
|
|
|
a19bc6 |
index 0000000..c93c197
|
|
|
a19bc6 |
--- /dev/null
|
|
|
a19bc6 |
+++ b/test/exec-passenvironment-empty.service
|
|
|
a19bc6 |
@@ -0,0 +1,8 @@
|
|
|
a19bc6 |
+[Unit]
|
|
|
a19bc6 |
+Description=Test for PassEnvironment and erasing the variable list
|
|
|
a19bc6 |
+
|
|
|
a19bc6 |
+[Service]
|
|
|
a19bc6 |
+ExecStart=/bin/sh -x -c 'test "$${VAR1-unset}" = "unset" && test "$${VAR2-unset}" = "unset" && test "$${VAR3-unset}" = "unset"'
|
|
|
a19bc6 |
+Type=oneshot
|
|
|
a19bc6 |
+PassEnvironment=VAR1 VAR2 VAR3
|
|
|
a19bc6 |
+PassEnvironment=
|
|
|
a19bc6 |
diff --git a/test/exec-passenvironment-repeated.service b/test/exec-passenvironment-repeated.service
|
|
|
a19bc6 |
new file mode 100644
|
|
|
a19bc6 |
index 0000000..5e8c56f
|
|
|
a19bc6 |
--- /dev/null
|
|
|
a19bc6 |
+++ b/test/exec-passenvironment-repeated.service
|
|
|
a19bc6 |
@@ -0,0 +1,8 @@
|
|
|
a19bc6 |
+[Unit]
|
|
|
a19bc6 |
+Description=Test for PassEnvironment with a variable name repeated
|
|
|
a19bc6 |
+
|
|
|
a19bc6 |
+[Service]
|
|
|
a19bc6 |
+ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6"'
|
|
|
a19bc6 |
+Type=oneshot
|
|
|
a19bc6 |
+PassEnvironment=VAR1 VAR2
|
|
|
a19bc6 |
+PassEnvironment=VAR1 VAR3
|
|
|
a19bc6 |
diff --git a/test/exec-passenvironment.service b/test/exec-passenvironment.service
|
|
|
a19bc6 |
new file mode 100644
|
|
|
a19bc6 |
index 0000000..b4a9909
|
|
|
a19bc6 |
--- /dev/null
|
|
|
a19bc6 |
+++ b/test/exec-passenvironment.service
|
|
|
a19bc6 |
@@ -0,0 +1,7 @@
|
|
|
a19bc6 |
+[Unit]
|
|
|
a19bc6 |
+Description=Test for PassEnvironment
|
|
|
a19bc6 |
+
|
|
|
a19bc6 |
+[Service]
|
|
|
a19bc6 |
+ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6"'
|
|
|
a19bc6 |
+Type=oneshot
|
|
|
a19bc6 |
+PassEnvironment=VAR1 VAR2 VAR3
|