diff options
Diffstat (limited to 'app/tests/test_backends_servers.py')
| -rw-r--r-- | app/tests/test_backends_servers.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/app/tests/test_backends_servers.py b/app/tests/test_backends_servers.py index 02b65e6..987ff24 100644 --- a/app/tests/test_backends_servers.py +++ b/app/tests/test_backends_servers.py @@ -123,6 +123,57 @@ class StopTests(unittest.TestCase): self.assertFalse((self.dir / "test-server.pid").exists()) +class ManagesTests(unittest.TestCase): + """manages(): a live recorded pid marks a server as ours.""" + + def setUp(self): + self._tmp = tempfile.TemporaryDirectory() + self.dir = Path(self._tmp.name) + self.specs = [ServerSpec("test", "http://127.0.0.1:9999", [])] + + def tearDown(self): + self._tmp.cleanup() + + def _write_pid(self, name, pid): + (self.dir / f"{name}-server.pid").write_text(str(pid), + encoding="utf-8") + + def test_false_without_pid_file(self): + with patch.object(servers, "LOG_DIR", self.dir): + self.assertFalse(servers.manages(self.specs)) + + def test_true_with_live_recorded_pid(self): + self._write_pid("test", 4242) + with patch.object(servers, "LOG_DIR", self.dir), \ + patch.object(servers, "_pid_alive", return_value=True): + self.assertTrue(servers.manages(self.specs)) + + def test_false_with_dead_recorded_pid(self): + self._write_pid("test", 4242) + with patch.object(servers, "LOG_DIR", self.dir), \ + patch.object(servers, "_pid_alive", return_value=False): + self.assertFalse(servers.manages(self.specs)) + + def test_false_with_corrupt_pid_file(self): + (self.dir / "test-server.pid").write_text("junk", + encoding="utf-8") + with patch.object(servers, "LOG_DIR", self.dir), \ + patch.object(servers, "_pid_alive", + return_value=True) as mk_alive: + self.assertFalse(servers.manages(self.specs)) + mk_alive.assert_not_called() + + def test_true_when_any_spec_is_ours(self): + other = ServerSpec("other", "http://127.0.0.1:9998", []) + with patch.object(servers, "LOG_DIR", self.dir), \ + patch.object(servers, "_pid_alive", return_value=True): + self._write_pid("test", 4242) + self.assertTrue(servers.manages([other] + self.specs)) + # The live pid belongs to 'test'; 'other' alone stays unmanaged. + with patch.object(servers, "LOG_DIR", self.dir): + self.assertFalse(servers.manages([other])) + + class PidForTests(unittest.TestCase): def setUp(self): self._tmp = tempfile.TemporaryDirectory() |
