Servers started via the web UI now create a WantedBy= symlink under multi-user.target.wants/, so they auto-start on the next host reboot. Helper verbs renamed start/stop -> enable/disable; service_control.py renamed start_service/stop_service -> enable_service/disable_service. The user-facing l4d2ctl start/stop commands keep their names per the AGENTS.md contract -- only the implementation changes. Spec: docs/superpowers/specs/2026-05-09-l4d2-server-lifecycle-reboot-and-drift-design.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
21 lines
667 B
Python
21 lines
667 B
Python
from unittest.mock import patch
|
|
|
|
from l4d2host.service_control import (
|
|
SYSTEMCTL_HELPER,
|
|
disable_service,
|
|
enable_service,
|
|
)
|
|
|
|
|
|
@patch("l4d2host.service_control.run_command")
|
|
def test_enable_service_invokes_helper_with_enable_action(mock_run):
|
|
enable_service("instance-7")
|
|
args, _ = mock_run.call_args
|
|
assert args[0] == ["sudo", "-n", SYSTEMCTL_HELPER, "enable", "instance-7"]
|
|
|
|
|
|
@patch("l4d2host.service_control.run_command")
|
|
def test_disable_service_invokes_helper_with_disable_action(mock_run):
|
|
disable_service("instance-7")
|
|
args, _ = mock_run.call_args
|
|
assert args[0] == ["sudo", "-n", SYSTEMCTL_HELPER, "disable", "instance-7"]
|