Rename a resumed session's husk with an 'X ' prefix
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user