]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add test case for issue #36031
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 15 May 2025 04:45:13 +0000 (13:45 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 25 Jun 2025 17:17:42 +0000 (18:17 +0100)
(cherry picked from commit 7824e70a074316ff799cbbc98af4f9ba944d6535)
(cherry picked from commit 0846c1414402fc67080c90d235c543ec54576315)

test/units/TEST-23-UNIT-FILE.start-stop-no-reload.sh

index 61a6592cb6c484211925b76312a338ecade78ef1..0d29c2393a0767548bf02ecf2d373542df474c04 100755 (executable)
@@ -10,7 +10,14 @@ set -o pipefail
 at_exit() {
     set +e
 
-    rm -f /run/systemd/system/TEST-23-UNIT-FILE-no-reload.{service,target}
+    rm -f /run/systemd/system/TEST-23-UNIT-FILE-no-reload.target
+    rm -f /run/systemd/system/TEST-23-UNIT-FILE-no-reload.service
+    rm -f /run/systemd/system/TEST-23-UNIT-FILE-no-reload-2.service
+    rm -f /run/systemd/system/TEST-23-UNIT-FILE-no-reload-3.service
+    systemctl stop TEST-23-UNIT-FILE-no-reload.target
+    systemctl stop TEST-23-UNIT-FILE-no-reload.service
+    systemctl stop TEST-23-UNIT-FILE-no-reload-2.service
+    systemctl stop TEST-23-UNIT-FILE-no-reload-3.service
 }
 
 trap at_exit EXIT
@@ -91,3 +98,58 @@ EOF
 systemctl restart TEST-23-UNIT-FILE-no-reload.target
 
 systemctl is-active TEST-23-UNIT-FILE-no-reload.service
+
+# Stop and remove, and try again to exercise https://github.com/systemd/systemd/issues/36031
+systemctl stop TEST-23-UNIT-FILE-no-reload.service TEST-23-UNIT-FILE-no-reload.target
+rm -f /run/systemd/system/TEST-23-UNIT-FILE-no-reload.service /run/systemd/system/TEST-23-UNIT-FILE-no-reload.target
+systemctl daemon-reload
+
+sleep 3.1
+
+cat >/run/systemd/system/TEST-23-UNIT-FILE-no-reload.target <<EOF
+[Unit]
+Conflicts=shutdown.target
+EOF
+
+cat >/run/systemd/system/TEST-23-UNIT-FILE-no-reload.service <<EOF
+[Unit]
+Conflicts=TEST-23-UNIT-FILE-no-reload.target
+Wants=TEST-23-UNIT-FILE-no-reload-2.service
+Wants=TEST-23-UNIT-FILE-no-reload-3.service
+[Service]
+ExecStart=sleep infinity
+EOF
+
+systemctl daemon-reload
+
+systemctl start TEST-23-UNIT-FILE-no-reload.service
+(! systemctl is-active TEST-23-UNIT-FILE-no-reload.target )
+systemctl is-active TEST-23-UNIT-FILE-no-reload.service
+[[ "$(systemctl show --property LoadState --value TEST-23-UNIT-FILE-no-reload-2.service)" == not-found ]]
+[[ "$(systemctl show --property LoadState --value TEST-23-UNIT-FILE-no-reload-3.service)" == not-found ]]
+
+cat >/run/systemd/system/TEST-23-UNIT-FILE-no-reload-2.service <<EOF
+[Unit]
+Conflicts=TEST-23-UNIT-FILE-no-reload.target
+[Service]
+ExecStart=sleep infinity
+EOF
+
+# This service file is intentionally invalid (Type=exec without ExecStart=).
+cat >/run/systemd/system/TEST-23-UNIT-FILE-no-reload-3.service <<EOF
+[Unit]
+Conflicts=TEST-23-UNIT-FILE-no-reload.target
+[Service]
+Type=exec
+ExecStop=sleep infinity
+EOF
+
+systemctl start TEST-23-UNIT-FILE-no-reload.target
+systemctl is-active TEST-23-UNIT-FILE-no-reload.target
+(! systemctl is-active TEST-23-UNIT-FILE-no-reload.service )
+(! systemctl is-active TEST-23-UNIT-FILE-no-reload-2.service )
+(! systemctl is-active TEST-23-UNIT-FILE-no-reload-3.service )
+[[ "$(systemctl show --property LoadState --value TEST-23-UNIT-FILE-no-reload-2.service)" == loaded ]]
+[[ "$(systemctl show --property LoadState --value TEST-23-UNIT-FILE-no-reload-3.service)" == bad-setting ]]
+[[ "$(systemctl show --property Conflicts --value TEST-23-UNIT-FILE-no-reload-2.service)" =~ TEST-23-UNIT-FILE-no-reload.target ]]
+[[ "$(systemctl show --property Conflicts --value TEST-23-UNIT-FILE-no-reload-3.service)" =~ TEST-23-UNIT-FILE-no-reload.target ]]