38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
import sys
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
from unittest.mock import patch
|
|
|
|
from deploy_tool.service_console import main
|
|
|
|
|
|
class ServiceConsoleTests(unittest.TestCase):
|
|
def test_tees_service_output_to_log_and_removes_pid_file(self):
|
|
with tempfile.TemporaryDirectory() as temp:
|
|
root = Path(temp)
|
|
log_path = root / "service.log"
|
|
pid_path = root / "service.pid"
|
|
argv = [
|
|
"service_console.py",
|
|
"--log",
|
|
str(log_path),
|
|
"--pid-file",
|
|
str(pid_path),
|
|
"--",
|
|
sys.executable,
|
|
"-c",
|
|
"print('service-ready')",
|
|
]
|
|
|
|
with patch.object(sys, "argv", argv):
|
|
exit_code = main()
|
|
|
|
self.assertEqual(exit_code, 0)
|
|
self.assertIn("service-ready", log_path.read_text(encoding="utf-8"))
|
|
self.assertFalse(pid_path.exists())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|