Rename a resumed session's husk with an 'X ' prefix

This commit is contained in:
Lilleman auf Larv
2026-09-04 10:54:04 +02:00
parent 673632ff21
commit 9a59c8cb50
3 changed files with 91 additions and 2 deletions
+39
View File
@@ -172,11 +172,50 @@ class Candidates(unittest.TestCase):
session = self.blocked_job(self.SPEND, timedelta(hours=2))
found = watchdog.candidates([session], self.jobs, self.now)
self.assertEqual([job["id"] for job in found], [session["id"]])
self.assertEqual(found[0]["state_file"], self.jobs / session["id"] / "state.json")
def test_fresh_spend_block_waits(self):
session = self.blocked_job(self.SPEND, timedelta(minutes=10))
self.assertEqual(watchdog.candidates([session], self.jobs, self.now), [])
class MarkSuperseded(unittest.TestCase):
"""The husk keeps its conversation, so its name must not read as the live one."""
def setUp(self):
temp = tempfile.TemporaryDirectory()
self.addCleanup(temp.cleanup)
self.state = Path(temp.name) / "state.json"
def write(self, **fields):
self.state.write_text(json.dumps(fields))
def read(self):
return json.loads(self.state.read_text())
def test_name_gains_the_prefix(self):
self.write(name="rewrite larvitsmpp typescript esm", state="blocked")
self.assertIsNone(watchdog.mark_superseded(self.state, "X "))
self.assertEqual(self.read()["name"], "X rewrite larvitsmpp typescript esm")
def test_the_respawn_name_stays_in_step(self):
self.write(name="fejkdata", respawnFlags=["--agent", "claude", "--name", "fejkdata"])
watchdog.mark_superseded(self.state, "X ")
self.assertEqual(self.read()["respawnFlags"], ["--agent", "claude", "--name", "X fejkdata"])
def test_a_husk_is_prefixed_only_once(self):
self.write(name="X fejkdata")
self.assertIsNone(watchdog.mark_superseded(self.state, "X "))
self.assertEqual(self.read()["name"], "X fejkdata")
def test_an_unnamed_job_is_left_alone(self):
self.write(state="blocked")
self.assertIsNone(watchdog.mark_superseded(self.state, "X "))
self.assertNotIn("name", self.read())
def test_unwritable_state_is_reported_rather_than_raised(self):
self.assertIsNotNone(watchdog.mark_superseded(self.state.with_name("gone.json"), "X "))
if __name__ == "__main__":
unittest.main()