test: repair full suite — hang fix, stale-test updates, patch hygiene, timeout backstop
Suite went from 27 failures plus one permanent hang (never finished) to 1846 passed / 0 failed in ~85s, including under FORCE_COLOR. - office_shutdown_lifecycle: construct WSHandler via the real __init__ (helper) instead of hand-copied __new__ stubs that drift from the constructor (#11 added _runtime_status_sync_task and the stubs hung); the formerly-hanging wait now has a 5s wait_for. - import-time patch hygiene: company_recruiter / company_reorg / engine_session_defaults replaced module-level permanent tempfile.TemporaryDirectory monkeypatching with paired setUpModule/tearDownModule, fixing order-dependent sqlite failures in transcript_pagination during full runs. - stale tests updated to current product semantics: resume stubs use status="done" (failed is deliberately non-resumable), fix4 asserts the native review contract through build_company_work_item_contract, delivery fixture carries user_visible/feedback_scope=final, ownership doc names progress_log, session compression calls maybe_compact_session(force=True) explicitly, hard delete removes the work item row, parallel-isolation asserts delegate rebind and stubs _get_project_delegate, role update goes through OrgService on an editable custom org (plus read-only rejection case), collab_rpc patches the single os.name decision point instead of poisoning pathlib, codex no-pty builds inside the patch, identity-guard false positives reworded. - cli_board actions rewritten against the real OfficeServiceFactory seam with a tempdir OPC_HOME (old direct-engine stubs were never consulted and the tests wrote into the real OPC home). - cli_app assertions strip ANSI via _plain_output so a color-forcing shell (FORCE_COLOR) cannot break plain-text expectations. - deleted never-runnable test_org_concurrency (pytest.mark.asyncio without the plugin, stdlib-only assertions) and three dead skipped filesystem-handoff tests. - pyproject: dev extra (pytest, pytest-timeout) and a 300s per-test timeout backstop so a wedged test fails instead of stalling the suite. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1506,7 +1506,7 @@ class ExternalAgentMonitoringTests(unittest.IsolatedAsyncioTestCase):
|
||||
self.assertNotIn("## Skill: memory", worker_task.description)
|
||||
self.assertIn("## Skill: memory", final_task.description)
|
||||
|
||||
async def test_engine_stages_uploaded_attachments_for_external_resume_prompt(self) -> None:
|
||||
async def test_engine_provisions_uploaded_attachments_for_external_resume_prompt(self) -> None:
|
||||
engine = OPCEngine()
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
@@ -2800,7 +2800,6 @@ class ExternalAgentMonitoringTests(unittest.IsolatedAsyncioTestCase):
|
||||
proc = type("Proc", (), {"pid": 321, "stdin": None, "stdout": object(), "stderr": object()})()
|
||||
task = Task(title="demo", description="demo")
|
||||
prompt = adapter.build_task_prompt(task)
|
||||
cmd, metadata = adapter.build_interactive_invocation(task, workspace_path="/repo")
|
||||
|
||||
tmpdir = _make_test_dir("codex-no-pty-argv-prompt")
|
||||
try:
|
||||
@@ -2809,6 +2808,12 @@ class ExternalAgentMonitoringTests(unittest.IsolatedAsyncioTestCase):
|
||||
"opc.layer3_agent.adapters.codex_adapter.asyncio.create_subprocess_exec",
|
||||
AsyncMock(return_value=proc),
|
||||
) as spawn_mock:
|
||||
# Build inside the no-PTY patch: build_interactive_invocation
|
||||
# records stdin_policy/interactive_input_channel in metadata,
|
||||
# and on a real PTY-less host build and start observe the same
|
||||
# platform capability. Building outside the patch would bake in
|
||||
# this host's PTY support and contradict the patched start.
|
||||
cmd, metadata = adapter.build_interactive_invocation(task, workspace_path="/repo")
|
||||
started = await adapter.start_process(
|
||||
cmd,
|
||||
tmpdir,
|
||||
|
||||
Reference in New Issue
Block a user