]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add tests for UpheldBy= in [Install] section 27638/head
authorMike Yuan <me@yhndnzj.com>
Mon, 15 May 2023 06:41:29 +0000 (14:41 +0800)
committerMike Yuan <me@yhndnzj.com>
Mon, 15 May 2023 07:04:38 +0000 (15:04 +0800)
src/test/test-install-root.c
test/fuzz/fuzz-unit-file/directives-all.service
test/testsuite-23.units/testsuite-23-upheldby-install.service [new file with mode: 0644]
test/units/testsuite-23.Upholds.sh

index 55b8894ecc1651f686a31241067e0541067c952a..80166b17c68b4b9055b0df73657de5b0e36755e6 100644 (file)
@@ -1135,6 +1135,9 @@ TEST(verify_alias) {
         verify_one(&plain_service, "alias.socket", -EXDEV, NULL);
         verify_one(&plain_service, "alias@.service", -EXDEV, NULL);
         verify_one(&plain_service, "alias@inst.service", -EXDEV, NULL);
+
+        /* Setting WantedBy= and RequiredBy= through Alias= is supported for the sake of backwards
+         * compatibility. */
         verify_one(&plain_service, "foo.target.wants/plain.service", 0, NULL);
         verify_one(&plain_service, "foo.target.wants/plain.socket", -EXDEV, NULL);
         verify_one(&plain_service, "foo.target.wants/plain@.service", -EXDEV, NULL);
@@ -1143,9 +1146,14 @@ TEST(verify_alias) {
         verify_one(&plain_service, "foo.target.requires/plain.socket", -EXDEV, NULL);
         verify_one(&plain_service, "foo.target.requires/plain@.service", -EXDEV, NULL);
         verify_one(&plain_service, "foo.target.requires/service", -EXDEV, NULL);
-        verify_one(&plain_service, "foo.target.conf/plain.service", -EXDEV, NULL);
-        verify_one(&plain_service, "foo.service/plain.service", -EXDEV, NULL); /* missing dir suffix */
         verify_one(&plain_service, "asdf.requires/plain.service", -EXDEV, NULL); /* invalid unit name component */
+        /* The newly-added UpheldBy= (.upholds/) and other suffixes should be rejected */
+        verify_one(&plain_service, "foo.target.upholds/plain.service", -EXDEV, NULL);
+        verify_one(&plain_service, "foo.target.upholds/plain.socket", -EXDEV, NULL);
+        verify_one(&plain_service, "foo.target.upholds/plain@.service", -EXDEV, NULL);
+        verify_one(&plain_service, "foo.target.upholds/service", -EXDEV, NULL);
+        verify_one(&plain_service, "foo.service/plain.service", -EXDEV, NULL); /* missing dir suffix */
+        verify_one(&plain_service, "foo.target.conf/plain.service", -EXDEV, NULL);
 
         verify_one(&bare_template, "alias.service", -EXDEV, NULL);
         verify_one(&bare_template, "alias.socket", -EXDEV, NULL);
index 8450d024e608b457b8c1a612ea7e55307776aca8..818fb28dbf60c116f3fc99bc9a94baaa73906315 100644 (file)
@@ -269,6 +269,8 @@ Type=
 USBFunctionDescriptors=
 USBFunctionStrings=
 Unit=
+UpheldBy=
+Upholds=
 User=
 WakeSystem=
 WantedBy=
diff --git a/test/testsuite-23.units/testsuite-23-upheldby-install.service b/test/testsuite-23.units/testsuite-23-upheldby-install.service
new file mode 100644 (file)
index 0000000..a456207
--- /dev/null
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Unit]
+Description=Unit that sets UpheldBy= through [Install]
+
+[Service]
+ExecStart=/bin/sleep infinity
+
+[Install]
+UpheldBy=testsuite-23-retry-uphold.service
index 21db258e1d246d188aeca73d5158a67babfa5cf3..bce4d7205b960034527c57d732bee59f29c7bd6d 100755 (executable)
@@ -30,6 +30,8 @@ done
 
 systemctl stop testsuite-23-uphold.service
 
+systemctl enable testsuite-23-upheldby-install.service
+
 # Idea is this:
 #    1. we start testsuite-23-retry-uphold.service
 #    2. which through Uphold= starts testsuite-23-retry-upheld.service
@@ -42,12 +44,13 @@ systemctl stop testsuite-23-uphold.service
 
 rm -f /tmp/testsuite-23-retry-fail
 systemctl start testsuite-23-retry-uphold.service
+systemctl is-active testsuite-23-upheldby-install.service
 
 while ! systemctl is-failed testsuite-23-retry-fail.service ; do
     sleep .5
 done
 
-systemctl is-active testsuite-23-retry-upheld.service && { echo 'unexpected success'; exit 1; }
+(! systemctl is-active testsuite-23-retry-upheld.service)
 
 touch /tmp/testsuite-23-retry-fail