Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer, web workflow engine and protocol, tooling, docs and task records. Large generated evidence, user-testing archives, build snapshots and imported test assets remain untracked. Co-Authored-By: Claude Code <noreply@anthropic.com>
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
"""Resume behavior tests; no Blender coverage claims."""
|
|
import copy
|
|
import unittest
|
|
from wbv2_autopilot import reset_resume_jobs
|
|
|
|
|
|
class ScopedResumeTests(unittest.TestCase):
|
|
def setUp(self):
|
|
self.records = {
|
|
"RIG": {"state": "blocked", "reason": "native failure", "attempts": 4},
|
|
"RNA": {"state": "blocked", "reason": "receipt missing", "attempts": 3},
|
|
"IO": {"state": "verified", "receipt": "prior.json"},
|
|
}
|
|
|
|
def test_normal_resume_does_not_requeue_failures(self):
|
|
before = copy.deepcopy(self.records)
|
|
self.assertEqual(reset_resume_jobs(self.records), [])
|
|
self.assertEqual(self.records, before)
|
|
|
|
def test_scoped_retry_preserves_other_failures_and_evidence(self):
|
|
before = copy.deepcopy(self.records)
|
|
self.assertEqual(reset_resume_jobs(self.records, True, "RIG"), ["RIG"])
|
|
self.assertEqual(self.records["RIG"]["state"], "retry_pending")
|
|
for job in ("RNA", "IO"):
|
|
self.assertEqual(self.records[job], before[job])
|
|
|
|
def test_unknown_job_fails_before_mutating(self):
|
|
before = copy.deepcopy(self.records)
|
|
with self.assertRaises(ValueError):
|
|
reset_resume_jobs(self.records, True, "UNKNOWN")
|
|
self.assertEqual(self.records, before)
|
|
|
|
def test_global_explicit_retry_preserves_verified(self):
|
|
self.assertEqual(reset_resume_jobs(self.records, True), ["RIG", "RNA"])
|
|
self.assertEqual(self.records["IO"]["state"], "verified")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|