import os import subprocess import sys import unittest from pathlib import Path PROJECT_ROOT = Path("/Users/chick/.Hermes/workspace/DbusSmsForward") CLI_ENV = {**os.environ, "PYTHONPATH": str(PROJECT_ROOT / "src")} class DeploymentArtifactsTests(unittest.TestCase): def test_debian_systemd_unit_uses_forever_polling_and_pythonpath(self): service_path = PROJECT_ROOT / "deploy" / "debian" / "dbussmsforward.service" content = service_path.read_text(encoding="utf-8") self.assertIn("WorkingDirectory=/opt/dbussmsforward", content) self.assertIn("Environment=PYTHONPATH=/opt/dbussmsforward/src", content) self.assertIn("--iterations 0", content) self.assertIn("/etc/dbussmsforward/appsettings.json", content) def test_openwrt_init_script_uses_procd_and_forever_polling(self): init_path = PROJECT_ROOT / "deploy" / "openwrt" / "dbussmsforward.init" content = init_path.read_text(encoding="utf-8") self.assertIn("USE_PROCD=1", content) self.assertIn("PYTHONPATH=\"$APP_DIR/src\"", content) self.assertIn("--iterations 0", content) self.assertIn('CONFIG_FILE="/etc/dbussmsforward/appsettings.json"', content) def test_deploy_config_validates(self): result = subprocess.run( [ sys.executable, "-m", "dbussmsforward.cli", "validate-config", "--config", "deploy/common/appsettings.deploy.json", ], cwd=str(PROJECT_ROOT), env=CLI_ENV, capture_output=True, text=True, check=False, ) self.assertEqual(result.returncode, 0, msg=result.stderr) self.assertIn("config ok", result.stdout) if __name__ == "__main__": unittest.main()