fix(update): a state write failure before the install restarts the monitor; the exit table names the conversion code (Issue #72, review notes)
install_phase.sh exited when it could not mark the backup `installing`, before the installer ran, without starting the monitor phase 1 had stopped (decision 2) and leaving the backup behind. Nothing was changed at that point, so it now removes the backup, restarts the monitor if it ran, releases the marker and exits 1. SKILL.md's exit row said 1 for every failure; a failed registry conversion after a good install passes the converter's nonzero code through, and a cancelled prompt exits 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
253a0aa56e
commit
454b77215f
3 files changed
+29
-2
No files matched your search
@@ -702,6 +702,26 @@ def test_leftover_whose_restore_fails_is_kept_and_nothing_more_changes(box):
|
||||
assert not (box.mam / "update-in-progress").exists()
|
||||
|
||||
|
||||
def test_a_state_write_failure_before_the_install_changes_nothing_and_restarts_the_monitor(box):
|
||||
real_mv = shutil.which("mv")
|
||||
fake = box.bin / "mv"
|
||||
fake.write_text("#!/usr/bin/env bash\n"
|
||||
"src=\"${@: -2:1}\"\n"
|
||||
"case \"$src\" in */update-backup/state.tmp) grep -qx installing \"$src\" && exit 1 ;; esac\n"
|
||||
"exec %s \"$@\"\n" % real_mv)
|
||||
fake.chmod(0o755)
|
||||
box.stub_monitor()
|
||||
box.start_monitor()
|
||||
box.installer("touch \"$ws/INSTALLER-RAN\"\n")
|
||||
res = box.update()
|
||||
assert res.returncode == 1, res.stdout + res.stderr
|
||||
assert not (box.ws / "INSTALLER-RAN").exists()
|
||||
assert box.monitor_starts() == 2, "the monitor it stopped is started again"
|
||||
_until(lambda: bool(box.monitor_pids()))
|
||||
assert not (box.mam / "update-backup").exists() and not (box.mam / "update-in-progress").exists()
|
||||
assert "nothing was changed" in res.stderr
|
||||
|
||||
|
||||
def test_the_backup_lives_in_the_workspace_and_is_gone_after_success(box):
|
||||
box.installer("test -f \"$ws/.mam/update-backup/state\" && grep -qx installing \"$ws/.mam/update-backup/state\" "
|
||||
"&& test -f \"$ws/.mam/update-backup/files/.agents/skills/lib.sh\" && touch \"$ws/../saw-backup\"\n")
|
||||
|
||||
Reference in new issue
Block a user