test: add simple test for validating some of the unit specifiers we support
authorLennart Poettering <lennart@poettering.net>
Wed, 11 Oct 2017 12:07:51 +0000 (14:07 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 26 Oct 2017 16:01:04 +0000 (18:01 +0200)
(Also, sort list of test unit files in meson.build alphabetically, to
make future additions more systematic)

src/test/test-execute.c
test/meson.build
test/test-execute/exec-specifier.service [new file with mode: 0644]

index 7e36900..7905b5d 100644 (file)
@@ -468,6 +468,10 @@ static void test_exec_unset_environment(Manager *m) {
         test(m, "exec-unset-environment.service", 0, CLD_EXITED);
 }
 
+static void test_exec_specifier(Manager *m) {
+        test(m, "exec-specifier.service", 0, CLD_EXITED);
+}
+
 static int run_tests(UnitFileScope scope, const test_function_t *tests) {
         const test_function_t *test = NULL;
         Manager *m = NULL;
@@ -529,6 +533,7 @@ int main(int argc, char *argv[]) {
         static const test_function_t system_tests[] = {
                 test_exec_systemcall_system_mode_with_user,
                 test_exec_dynamic_user,
+                test_exec_specifier,
                 NULL,
         };
         int r;
index 2b523da..5e98ec6 100644 (file)
@@ -1,18 +1,21 @@
 test_data_files = '''
         a.service
-        basic.target
         b.service
+        basic.target
         c.service
-        daughter.service
         d.service
-        end.service
+        daughter.service
         e.service
+        end.service
         f.service
-        grandchild.service
         g.service
+        grandchild.service
+        h.service
         hello-after-sleep.target
         hello.service
-        h.service
+        hwdb/10-bad.hwdb
+        journal-data/journal-1.txt
+        journal-data/journal-2.txt
         parent-deep.slice
         parent.slice
         sched_idle_bad.service
@@ -25,113 +28,111 @@ test_data_files = '''
         sockets.target
         son.service
         sysinit.target
-        testsuite.target
-        timers.target
-        unstoppable.service
-        test-path/paths.target
-        test-path/basic.target
-        test-path/sysinit.target
-        test-path/path-changed.service
-        test-path/path-directorynotempty.service
-        test-path/path-existsglob.service
-        test-path/path-exists.service
-        test-path/path-makedirectory.service
-        test-path/path-modified.service
-        test-path/path-mycustomunit.service
-        test-path/path-service.service
-        test-path/path-changed.path
-        test-path/path-directorynotempty.path
-        test-path/path-existsglob.path
-        test-path/path-exists.path
-        test-path/path-makedirectory.path
-        test-path/path-modified.path
-        test-path/path-unit.path
         test-execute/exec-bind-paths.service
+        test-execute/exec-capabilityambientset-merge-nfsnobody.service
+        test-execute/exec-capabilityambientset-merge.service
+        test-execute/exec-capabilityambientset-nfsnobody.service
+        test-execute/exec-capabilityambientset.service
+        test-execute/exec-capabilityboundingset-invert.service
+        test-execute/exec-capabilityboundingset-merge.service
+        test-execute/exec-capabilityboundingset-reset.service
+        test-execute/exec-capabilityboundingset-simple.service
+        test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service
+        test-execute/exec-dynamicuser-fixeduser.service
+        test-execute/exec-dynamicuser-state-dir.service
+        test-execute/exec-dynamicuser-supplementarygroups.service
         test-execute/exec-environment-empty.service
         test-execute/exec-environment-multiple.service
         test-execute/exec-environment.service
+        test-execute/exec-environmentfile.service
+        test-execute/exec-group-nfsnobody.service
+        test-execute/exec-group.service
+        test-execute/exec-ignoresigpipe-no.service
+        test-execute/exec-ignoresigpipe-yes.service
+        test-execute/exec-inaccessiblepaths-mount-propagation.service
+        test-execute/exec-inaccessiblepaths-proc.service
+        test-execute/exec-ioschedulingclass-best-effort.service
+        test-execute/exec-ioschedulingclass-idle.service
+        test-execute/exec-ioschedulingclass-none.service
+        test-execute/exec-ioschedulingclass-realtime.service
+        test-execute/exec-oomscoreadjust-negative.service
+        test-execute/exec-oomscoreadjust-positive.service
         test-execute/exec-passenvironment-absent.service
         test-execute/exec-passenvironment-empty.service
         test-execute/exec-passenvironment-repeated.service
         test-execute/exec-passenvironment.service
-        test-execute/exec-group.service
-        test-execute/exec-group-nfsnobody.service
-        test-execute/exec-supplementarygroups.service
-        test-execute/exec-supplementarygroups-single-group.service
-        test-execute/exec-supplementarygroups-single-group-user.service
-        test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service
-        test-execute/exec-supplementarygroups-multiple-groups-withgid.service
-        test-execute/exec-supplementarygroups-multiple-groups-withuid.service
-        test-execute/exec-dynamicuser-fixeduser.service
-        test-execute/exec-dynamicuser-fixeduser-one-supplementarygroup.service
-        test-execute/exec-dynamicuser-supplementarygroups.service
-        test-execute/exec-dynamicuser-state-dir.service
-        test-execute/exec-ignoresigpipe-no.service
-        test-execute/exec-ignoresigpipe-yes.service
-        test-execute/exec-personality-x86-64.service
-        test-execute/exec-personality-x86.service
-        test-execute/exec-personality-s390.service
+        test-execute/exec-personality-aarch64.service
         test-execute/exec-personality-ppc64.service
         test-execute/exec-personality-ppc64le.service
-        test-execute/exec-personality-aarch64.service
-        test-execute/exec-privatedevices-no.service
-        test-execute/exec-privatedevices-yes.service
+        test-execute/exec-personality-s390.service
+        test-execute/exec-personality-x86-64.service
+        test-execute/exec-personality-x86.service
         test-execute/exec-privatedevices-no-capability-mknod.service
+        test-execute/exec-privatedevices-no-capability-sys-rawio.service
+        test-execute/exec-privatedevices-no.service
         test-execute/exec-privatedevices-yes-capability-mknod.service
+        test-execute/exec-privatedevices-yes-capability-sys-rawio.service
+        test-execute/exec-privatedevices-yes.service
+        test-execute/exec-privatenetwork-yes.service
+        test-execute/exec-privatetmp-no.service
+        test-execute/exec-privatetmp-yes.service
         test-execute/exec-protectkernelmodules-no-capabilities.service
         test-execute/exec-protectkernelmodules-yes-capabilities.service
         test-execute/exec-protectkernelmodules-yes-mount-propagation.service
-        test-execute/exec-privatetmp-no.service
-        test-execute/exec-privatetmp-yes.service
-        test-execute/exec-readonlypaths.service
+        test-execute/exec-read-only-path-succeed.service
         test-execute/exec-readonlypaths-mount-propagation.service
+        test-execute/exec-readonlypaths.service
         test-execute/exec-readwritepaths-mount-propagation.service
-        test-execute/exec-inaccessiblepaths-mount-propagation.service
-        test-execute/exec-inaccessiblepaths-proc.service
+        test-execute/exec-restrict-namespaces-mnt-blacklist.service
+        test-execute/exec-restrict-namespaces-mnt.service
+        test-execute/exec-restrict-namespaces-no.service
+        test-execute/exec-restrict-namespaces-yes.service
+        test-execute/exec-runtimedirectory-mode.service
+        test-execute/exec-runtimedirectory-owner-nfsnobody.service
+        test-execute/exec-runtimedirectory-owner.service
+        test-execute/exec-runtimedirectory.service
         test-execute/exec-spec-interpolation.service
+        test-execute/exec-specifier.service
+        test-execute/exec-supplementarygroups-multiple-groups-default-group-user.service
+        test-execute/exec-supplementarygroups-multiple-groups-withgid.service
+        test-execute/exec-supplementarygroups-multiple-groups-withuid.service
+        test-execute/exec-supplementarygroups-single-group-user.service
+        test-execute/exec-supplementarygroups-single-group.service
+        test-execute/exec-supplementarygroups.service
         test-execute/exec-systemcallerrornumber.service
-        test-execute/exec-systemcallfilter-failing2.service
         test-execute/exec-systemcallfilter-failing.service
-        test-execute/exec-systemcallfilter-not-failing2.service
+        test-execute/exec-systemcallfilter-failing2.service
         test-execute/exec-systemcallfilter-not-failing.service
-        test-execute/exec-systemcallfilter-system-user.service
+        test-execute/exec-systemcallfilter-not-failing2.service
         test-execute/exec-systemcallfilter-system-user-nfsnobody.service
+        test-execute/exec-systemcallfilter-system-user.service
+        test-execute/exec-umask-0177.service
+        test-execute/exec-umask-default.service
         test-execute/exec-unset-environment.service
-        test-execute/exec-user.service
         test-execute/exec-user-nfsnobody.service
+        test-execute/exec-user.service
         test-execute/exec-workingdirectory.service
-        test-execute/exec-umask-0177.service
-        test-execute/exec-umask-default.service
-        test-execute/exec-privatenetwork-yes.service
-        test-execute/exec-environmentfile.service
-        test-execute/exec-oomscoreadjust-positive.service
-        test-execute/exec-oomscoreadjust-negative.service
-        test-execute/exec-ioschedulingclass-best-effort.service
-        test-execute/exec-ioschedulingclass-idle.service
-        test-execute/exec-ioschedulingclass-none.service
-        test-execute/exec-ioschedulingclass-realtime.service
-        test-execute/exec-capabilityboundingset-invert.service
-        test-execute/exec-capabilityboundingset-merge.service
-        test-execute/exec-capabilityboundingset-reset.service
-        test-execute/exec-capabilityboundingset-simple.service
-        test-execute/exec-capabilityambientset.service
-        test-execute/exec-capabilityambientset-nfsnobody.service
-        test-execute/exec-capabilityambientset-merge.service
-        test-execute/exec-capabilityambientset-merge-nfsnobody.service
-        test-execute/exec-runtimedirectory.service
-        test-execute/exec-runtimedirectory-mode.service
-        test-execute/exec-runtimedirectory-owner.service
-        test-execute/exec-runtimedirectory-owner-nfsnobody.service
-        test-execute/exec-restrict-namespaces-no.service
-        test-execute/exec-restrict-namespaces-yes.service
-        test-execute/exec-restrict-namespaces-mnt.service
-        test-execute/exec-restrict-namespaces-mnt-blacklist.service
-        test-execute/exec-read-only-path-succeed.service
-        test-execute/exec-privatedevices-yes-capability-sys-rawio.service
-        test-execute/exec-privatedevices-no-capability-sys-rawio.service
-        hwdb/10-bad.hwdb
-        journal-data/journal-1.txt
-        journal-data/journal-2.txt
+        test-path/basic.target
+        test-path/path-changed.path
+        test-path/path-changed.service
+        test-path/path-directorynotempty.path
+        test-path/path-directorynotempty.service
+        test-path/path-exists.path
+        test-path/path-exists.service
+        test-path/path-existsglob.path
+        test-path/path-existsglob.service
+        test-path/path-makedirectory.path
+        test-path/path-makedirectory.service
+        test-path/path-modified.path
+        test-path/path-modified.service
+        test-path/path-mycustomunit.service
+        test-path/path-service.service
+        test-path/path-unit.path
+        test-path/paths.target
+        test-path/sysinit.target
+        testsuite.target
+        timers.target
+        unstoppable.service
 '''.split()
 
 if conf.get('ENABLE_RESOLVE') == 1
diff --git a/test/test-execute/exec-specifier.service b/test/test-execute/exec-specifier.service
new file mode 100644 (file)
index 0000000..228d783
--- /dev/null
@@ -0,0 +1,15 @@
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/test %n = exec-specifier.service
+ExecStart=/usr/bin/test %N = exec-specifier
+ExecStart=/usr/bin/test %p = exec-specifier
+ExecStart=/usr/bin/test %P = exec/specifier
+ExecStart=/usr/bin/test %f = /exec/specifier
+ExecStart=/usr/bin/test %t = /run
+ExecStart=/usr/bin/test %S = /var/lib
+ExecStart=/usr/bin/test %C = /var/cache
+ExecStart=/usr/bin/test %L = /var/log
+ExecStart=/usr/bin/test %U = 0
+
+# We don't test the other specifiers here, since they migh resolve to different
+# things in different test environments