From b5b1351317db64de1f2c944ec153208ba8174079 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Mon, 15 May 2023 14:41:29 +0800 Subject: test: add tests for UpheldBy= in [Install] section --- src/test/test-install-root.c | 12 ++++++++++-- test/fuzz/fuzz-unit-file/directives-all.service | 2 ++ .../testsuite-23.units/testsuite-23-upheldby-install.service | 9 +++++++++ test/units/testsuite-23.Upholds.sh | 5 ++++- 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 test/testsuite-23.units/testsuite-23-upheldby-install.service diff --git a/src/test/test-install-root.c b/src/test/test-install-root.c index 55b8894ecc..80166b17c6 100644 --- a/src/test/test-install-root.c +++ b/src/test/test-install-root.c @@ -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); diff --git a/test/fuzz/fuzz-unit-file/directives-all.service b/test/fuzz/fuzz-unit-file/directives-all.service index 8450d024e6..818fb28dbf 100644 --- a/test/fuzz/fuzz-unit-file/directives-all.service +++ b/test/fuzz/fuzz-unit-file/directives-all.service @@ -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 index 0000000000..a4562077db --- /dev/null +++ b/test/testsuite-23.units/testsuite-23-upheldby-install.service @@ -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 diff --git a/test/units/testsuite-23.Upholds.sh b/test/units/testsuite-23.Upholds.sh index 21db258e1d..bce4d7205b 100755 --- a/test/units/testsuite-23.Upholds.sh +++ b/test/units/testsuite-23.Upholds.sh @@ -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 -- cgit v1.2.1