gander: record fourth gate busy preflight stop
This commit is contained in:
1 parent
91e3696efd
commit
05e940117f
12 files changed
+2664
No files matched your search
@@ -107,3 +107,7 @@ changes are planned before the batch. M1-M29 remain prepared and unexecuted.
|
||||
2026-10-21 sage-2072/2077 driver: unique string-target guard preflights every definition before any tests and before creating scratch state; M28 names without_proof, M28b names kept, M5 names the parse catch, M25 names append flags, M29 uses the unique full line. Static audit accepts all 30 definitions; zero/duplicate targets refuse. Against 64539c96b, M5 old/narrowed bytes match; M25 differs and joins the next batch. No mutation tests ran in this static check.
|
||||
|
||||
2026-10-21 mos-1198 r5: row 215 landed ahead of row 196; its library CLI fixture retained --tester-port, a semantic conflict despite the callback code merging. The sole test change switches activation to --tester-socket. The test name and every original assertion remain byte-identical; the existing startServer hook still captures both listener callback pairs. No product file changed. No test run before Sage's fourth-run grant; Duckworth reviews this hunk.
|
||||
|
||||
2026-10-21 fourth-run preflight, sage-2113: no predicted test reds. The prior editor rebuild skip may remain because shared esbuild is 0.28.1 while the test requires 0.28.2. Legacy case1/case2 tester-port consumers remain follow-up scope per mos-1198; their contract tests use stand-ins. The fourth run covers WebUI and CLI whole, eight union files and every scripts/test-*.sh. No product edit or dependency install.
|
||||
|
||||
2026-10-21 fourth-run stop, sage-2113/2120 at 91e3696ef: WebUI whole passed 304/0 with one existing editor skip in 112.142839 seconds. CLI did not start: busy preflight detected Sage queue add sage-2122a (PID 2054449) and refused, 1.612991 seconds. No extra files or shell tests started. No rerun; simultaneous report gander-0052 to Sage and Mos returned the slot. Sweep found zero gate leftovers and eight pre-existing harness helpers. Product tracked tree clean. Records: r5/gate/.
|
||||
@@ -26,3 +26,5 @@ sage-2096 r4 grant active on f8a59e6aa, TMPDIR r4/gate/tmpdir.txt, clean detache
|
||||
sage-2093 withdrew r3 grant due row215 landing e54e05463, not a mos-1166 stop. By inspection its SSO demonstration and four mutants had completed; no suites began, sweep 0. Rebased six commits onto e54 on preserved new r4 f8a59e6aa. Two conflicts: BUILD-LOG append and server imports; retained both histories/LIBRARY_VERBS plus peer helpers. r4/REBASE.md and conflicts.diff record every hunk; eight additional whole test files in whole-test-union.json. No gate until sage-2096 clear.
|
||||
sage-2096 ended at stop 3: whole bus 622/0/0 in 36.272 s; whole WebUI 303/1/1 in 113.151 s, failure library-cli.test's retired tester-port activation. CLI, eight extra files and shells unrun. SSO RED/GREEN passed and refreshed M13/M17/M22 killed; other 27 target hashes matched r3. Reported Sage gander-0045 and Mos gander-0046. Sweep correction gander-0047/48: broad scope 9 pre-existing harness helpers (all started 18:45), gate leftovers 0; raw and categorized evidence retained, Sage accepted in sage-2111. No fourth run without Mos/Sage grant.
|
||||
mos-1198 approves fourth run after Gizmoduck 250 r2 with Sage grant, r5 only activation flag change and BUILD note, exact name/assertions retained. New branch r5 a415de022 is one commit on retained r4; wider unpublished draft preserved on gander/row196-r5-draft. All 595 product blobs match r4 by SHA256. r5/TESTER-PORT-AUDIT.md lists scripts and tests, including case2-unit/case1-accept for Sage's chained follow-up. Sent gander-0049/50. No tests since stop3. mos-1199 requires all queue196 records committed/pushed before fourth grant, no product or node_modules changes. Next message gander-0051.
|
||||
|
||||
Fourth run sage-2113/2120 at 91e3696ef: WebUI whole 304/0/1 in 112.143 s. CLI mandatory busy preflight refused on Sage queue add sage-2122a PID 2054449, so no CLI, extras or shells started. Driver stopped; no rerun. gander-0052 simultaneously reported Sage and Mos and returned slot. Sweep gate leftovers 0, eight pre-existing harness helpers. r5/gate/RESULTS.md and raw logs retain evidence. Await Mos ruling and Sage grant; no fifth run.
|
||||
@@ -0,0 +1,16 @@
|
||||
# Fourth run, r5 91e3696ef
|
||||
|
||||
Grant sage-2113, updated by sage-2120. No product or test bytes differ from a415de022. Clean detached worktree, linked node_modules, TMPDIR /mnt/storage/scratch/tmp/gYGf, pipefail and tee for every start. Busy check gates every invocation with &&.
|
||||
|
||||
| Step | Pass | Fail | Skip | Wall seconds | Result |
|
||||
|---|---:|---:|---:|---:|---|
|
||||
| WebUI whole, 50 files | 304 | 0 | 1 | 112.142839 | Passed; existing editor build skip |
|
||||
| CLI preflight | n/a | n/a | n/a | 1.612991 | Busy refusal; CLI not started |
|
||||
| Eight union files | n/a | n/a | n/a | n/a | Not started |
|
||||
| Ten scripts/test-*.sh | n/a | n/a | n/a | n/a | Not started |
|
||||
|
||||
CLI busy preflight found PID 2054449 running Sage queue add sage-2122a. The driver stopped without retry. This is not a failed test. Report gander-0052 went simultaneously to Sage and Mos at 19:48:04Z, returning the slot. Any continuation requires their ruling and grant.
|
||||
|
||||
Sweep: zero gate leftovers; eight pre-existing harness helpers remain. The earlier r4 record had nine; one has since exited. No helper was stopped. Gate tracked tree remains clean; only the expected node_modules symlink is untracked.
|
||||
|
||||
Standing evidence per Mos-1198/Sage-2113: bus whole 622 pass, zero fail/skip in 36.272237 seconds, plus all 30 killed mutants. All 595 product hashes match r4; the r5 record-only commit changes none. This is incomplete acceptance, not a green final gate. Raw results, logs, plan and sweep are adjacent.
|
||||
@@ -0,0 +1 @@
|
||||
BUSY 2054449: node /mnt/storage/src/mosaic-stack/packages/queue/src/cli.mjs add --op sage-2122a --piece F27: case2-unit.sh and case1-accept.sh move to --tester-socket and ref
|
||||
@@ -0,0 +1,5 @@
|
||||
START webui 50 whole file(s)
|
||||
END webui {"code":0,"signal":null,"pass":304,"fail":0,"skip":1,"wallSeconds":112.142838529,"stopped":false}
|
||||
START cli 50 whole file(s)
|
||||
END cli {"code":1,"signal":null,"pass":null,"fail":null,"skip":null,"wallSeconds":1.612991227999999,"stopped":false}
|
||||
STOP cli
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"scope": [
|
||||
"/mnt/storage/scratch/tmp/g196-tree-tn651z",
|
||||
"/mnt/storage/scratch/tmp/gYGf",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
],
|
||||
"rawCount": 8,
|
||||
"preexistingCount": 8,
|
||||
"gateLeftoverCount": 0,
|
||||
"processes": [
|
||||
{
|
||||
"pid": 748279,
|
||||
"name": "npm exec @playw",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748302,
|
||||
"name": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748306,
|
||||
"name": "npm exec @model",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748314,
|
||||
"name": "npm exec chrome",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748494,
|
||||
"name": "chrome-devtools",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748496,
|
||||
"name": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748506,
|
||||
"name": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748547,
|
||||
"name": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
import os,json,datetime
|
||||
from pathlib import Path
|
||||
out=Path(__file__).parent
|
||||
roots=[Path('/mnt/storage/scratch/tmp/g196-tree-tn651z'),Path((out/'tmpdir.txt').read_text().strip()),Path('/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196')]
|
||||
old={x['pid']:x for x in json.loads((out/'../../r4/gate/categorized-sweep.json').read_text())['preexistingHarnessHelpers']}
|
||||
anc=set();pid=os.getpid()
|
||||
while pid>1 and pid not in anc:
|
||||
anc.add(pid)
|
||||
try:pid=int(Path(f'/proc/{pid}/stat').read_text().rsplit(')',1)[1].split()[1])
|
||||
except (OSError,ValueError):break
|
||||
rows=[]
|
||||
for p in Path('/proc').iterdir():
|
||||
if not p.name.isdigit() or int(p.name) in anc:continue
|
||||
try:
|
||||
cwd=Path(os.readlink(p/'cwd'));name=(p/'comm').read_text().strip()
|
||||
if not any(cwd==r or r in cwd.parents for r in roots):continue
|
||||
if not any(n in name.lower() for n in ['node','tee','npm','chrome','fifo','python','bash','sh']):continue
|
||||
rows.append(dict(pid=int(p.name),name=name,cwd=str(cwd),preexisting=int(p.name) in old))
|
||||
except (OSError,ValueError):continue
|
||||
result=dict(scope=list(map(str,roots)),rawCount=len(rows),preexistingCount=sum(r['preexisting'] for r in rows),gateLeftoverCount=sum(not r['preexisting'] for r in rows),processes=rows)
|
||||
(out/'process-sweep.json').write_text(json.dumps(result,indent=2)+'\n')
|
||||
print(json.dumps(result))
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/gYGf
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,440 @@
|
||||
[
|
||||
{
|
||||
"name": "webui",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"--test-concurrency=2",
|
||||
"packages/webui/tests/assistant.test.mjs",
|
||||
"packages/webui/tests/board-held.test.mjs",
|
||||
"packages/webui/tests/browser-edge.test.mjs",
|
||||
"packages/webui/tests/browser.test.mjs",
|
||||
"packages/webui/tests/bus-browser.test.mjs",
|
||||
"packages/webui/tests/bus.test.mjs",
|
||||
"packages/webui/tests/channel-chat.test.mjs",
|
||||
"packages/webui/tests/chat-browser.test.mjs",
|
||||
"packages/webui/tests/chat.test.mjs",
|
||||
"packages/webui/tests/conversation.test.mjs",
|
||||
"packages/webui/tests/discord.test.mjs",
|
||||
"packages/webui/tests/docs-browser.test.mjs",
|
||||
"packages/webui/tests/editor-browser.test.mjs",
|
||||
"packages/webui/tests/editor-provenance.test.mjs",
|
||||
"packages/webui/tests/editor.test.mjs",
|
||||
"packages/webui/tests/history-return-flow.test.mjs",
|
||||
"packages/webui/tests/instances-browser.test.mjs",
|
||||
"packages/webui/tests/instances.test.mjs",
|
||||
"packages/webui/tests/library-cli.test.mjs",
|
||||
"packages/webui/tests/limits-browser.test.mjs",
|
||||
"packages/webui/tests/limits-route.test.mjs",
|
||||
"packages/webui/tests/markdown-preview.test.mjs",
|
||||
"packages/webui/tests/messages.test.mjs",
|
||||
"packages/webui/tests/pinned-copy.test.mjs",
|
||||
"packages/webui/tests/preview.test.mjs",
|
||||
"packages/webui/tests/project-file.test.mjs",
|
||||
"packages/webui/tests/project-name-repo.test.mjs",
|
||||
"packages/webui/tests/proof-cli.test.mjs",
|
||||
"packages/webui/tests/proof.test.mjs",
|
||||
"packages/webui/tests/reads.test.mjs",
|
||||
"packages/webui/tests/relaunch.test.mjs",
|
||||
"packages/webui/tests/return-flow.test.mjs",
|
||||
"packages/webui/tests/routes-browser.test.mjs",
|
||||
"packages/webui/tests/routes.test.mjs",
|
||||
"packages/webui/tests/send-browser.test.mjs",
|
||||
"packages/webui/tests/send.test.mjs",
|
||||
"packages/webui/tests/serve.test.mjs",
|
||||
"packages/webui/tests/service.test.mjs",
|
||||
"packages/webui/tests/settings-form.test.mjs",
|
||||
"packages/webui/tests/settings-write.test.mjs",
|
||||
"packages/webui/tests/shell.test.mjs",
|
||||
"packages/webui/tests/sso-browser.test.mjs",
|
||||
"packages/webui/tests/sso.test.mjs",
|
||||
"packages/webui/tests/tester-browser.test.mjs",
|
||||
"packages/webui/tests/tester-cli.test.mjs",
|
||||
"packages/webui/tests/tester-listener.test.mjs",
|
||||
"packages/webui/tests/tester-socket.test.mjs",
|
||||
"packages/webui/tests/usage-browser.test.mjs",
|
||||
"packages/webui/tests/usage.test.mjs",
|
||||
"packages/webui/tests/views.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/webui/tests/assistant.test.mjs",
|
||||
"packages/webui/tests/board-held.test.mjs",
|
||||
"packages/webui/tests/browser-edge.test.mjs",
|
||||
"packages/webui/tests/browser.test.mjs",
|
||||
"packages/webui/tests/bus-browser.test.mjs",
|
||||
"packages/webui/tests/bus.test.mjs",
|
||||
"packages/webui/tests/channel-chat.test.mjs",
|
||||
"packages/webui/tests/chat-browser.test.mjs",
|
||||
"packages/webui/tests/chat.test.mjs",
|
||||
"packages/webui/tests/conversation.test.mjs",
|
||||
"packages/webui/tests/discord.test.mjs",
|
||||
"packages/webui/tests/docs-browser.test.mjs",
|
||||
"packages/webui/tests/editor-browser.test.mjs",
|
||||
"packages/webui/tests/editor-provenance.test.mjs",
|
||||
"packages/webui/tests/editor.test.mjs",
|
||||
"packages/webui/tests/history-return-flow.test.mjs",
|
||||
"packages/webui/tests/instances-browser.test.mjs",
|
||||
"packages/webui/tests/instances.test.mjs",
|
||||
"packages/webui/tests/library-cli.test.mjs",
|
||||
"packages/webui/tests/limits-browser.test.mjs",
|
||||
"packages/webui/tests/limits-route.test.mjs",
|
||||
"packages/webui/tests/markdown-preview.test.mjs",
|
||||
"packages/webui/tests/messages.test.mjs",
|
||||
"packages/webui/tests/pinned-copy.test.mjs",
|
||||
"packages/webui/tests/preview.test.mjs",
|
||||
"packages/webui/tests/project-file.test.mjs",
|
||||
"packages/webui/tests/project-name-repo.test.mjs",
|
||||
"packages/webui/tests/proof-cli.test.mjs",
|
||||
"packages/webui/tests/proof.test.mjs",
|
||||
"packages/webui/tests/reads.test.mjs",
|
||||
"packages/webui/tests/relaunch.test.mjs",
|
||||
"packages/webui/tests/return-flow.test.mjs",
|
||||
"packages/webui/tests/routes-browser.test.mjs",
|
||||
"packages/webui/tests/routes.test.mjs",
|
||||
"packages/webui/tests/send-browser.test.mjs",
|
||||
"packages/webui/tests/send.test.mjs",
|
||||
"packages/webui/tests/serve.test.mjs",
|
||||
"packages/webui/tests/service.test.mjs",
|
||||
"packages/webui/tests/settings-form.test.mjs",
|
||||
"packages/webui/tests/settings-write.test.mjs",
|
||||
"packages/webui/tests/shell.test.mjs",
|
||||
"packages/webui/tests/sso-browser.test.mjs",
|
||||
"packages/webui/tests/sso.test.mjs",
|
||||
"packages/webui/tests/tester-browser.test.mjs",
|
||||
"packages/webui/tests/tester-cli.test.mjs",
|
||||
"packages/webui/tests/tester-listener.test.mjs",
|
||||
"packages/webui/tests/tester-socket.test.mjs",
|
||||
"packages/webui/tests/usage-browser.test.mjs",
|
||||
"packages/webui/tests/usage.test.mjs",
|
||||
"packages/webui/tests/views.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "cli",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"--test-concurrency=2",
|
||||
"packages/cli/tests/app.test.mjs",
|
||||
"packages/cli/tests/boot-status.test.mjs",
|
||||
"packages/cli/tests/case1-accept.test.mjs",
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs",
|
||||
"packages/cli/tests/case2-persona-import.test.mjs",
|
||||
"packages/cli/tests/case2-unit.test.mjs",
|
||||
"packages/cli/tests/channel-cli.test.mjs",
|
||||
"packages/cli/tests/channel-recovery.test.mjs",
|
||||
"packages/cli/tests/cli.test.mjs",
|
||||
"packages/cli/tests/config.test.mjs",
|
||||
"packages/cli/tests/credentials.test.mjs",
|
||||
"packages/cli/tests/follow.test.mjs",
|
||||
"packages/cli/tests/format.test.mjs",
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs",
|
||||
"packages/cli/tests/gate-lane-image.test.mjs",
|
||||
"packages/cli/tests/gate-lane-state.test.mjs",
|
||||
"packages/cli/tests/gate-lane.test.mjs",
|
||||
"packages/cli/tests/git-socket.test.mjs",
|
||||
"packages/cli/tests/host.test.mjs",
|
||||
"packages/cli/tests/hosts.test.mjs",
|
||||
"packages/cli/tests/instances.test.mjs",
|
||||
"packages/cli/tests/launch-account.test.mjs",
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs",
|
||||
"packages/cli/tests/launch-limits.test.mjs",
|
||||
"packages/cli/tests/launch-routes.test.mjs",
|
||||
"packages/cli/tests/launcher.test.mjs",
|
||||
"packages/cli/tests/limits-tokens.test.mjs",
|
||||
"packages/cli/tests/limits.test.mjs",
|
||||
"packages/cli/tests/mark-read.test.mjs",
|
||||
"packages/cli/tests/names.test.mjs",
|
||||
"packages/cli/tests/notifier.test.mjs",
|
||||
"packages/cli/tests/other-tree.test.mjs",
|
||||
"packages/cli/tests/project-name-repo.test.mjs",
|
||||
"packages/cli/tests/project.test.mjs",
|
||||
"packages/cli/tests/publish-socket.test.mjs",
|
||||
"packages/cli/tests/stack-copy.test.mjs",
|
||||
"packages/cli/tests/stack-instances.test.mjs",
|
||||
"packages/cli/tests/stack-release-external.test.mjs",
|
||||
"packages/cli/tests/stack-release.test.mjs",
|
||||
"packages/cli/tests/stack-upgrade.test.mjs",
|
||||
"packages/cli/tests/tester-http.test.mjs",
|
||||
"packages/cli/tests/tester-reads.test.mjs",
|
||||
"packages/cli/tests/tester-threads.test.mjs",
|
||||
"packages/cli/tests/tester.test.mjs",
|
||||
"packages/cli/tests/thread-cli.test.mjs",
|
||||
"packages/cli/tests/thread-launch.test.mjs",
|
||||
"packages/cli/tests/trackers-boot.test.mjs",
|
||||
"packages/cli/tests/transport.test.mjs",
|
||||
"packages/cli/tests/usage.test.mjs",
|
||||
"packages/cli/tests/verbs.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/cli/tests/app.test.mjs",
|
||||
"packages/cli/tests/boot-status.test.mjs",
|
||||
"packages/cli/tests/case1-accept.test.mjs",
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs",
|
||||
"packages/cli/tests/case2-persona-import.test.mjs",
|
||||
"packages/cli/tests/case2-unit.test.mjs",
|
||||
"packages/cli/tests/channel-cli.test.mjs",
|
||||
"packages/cli/tests/channel-recovery.test.mjs",
|
||||
"packages/cli/tests/cli.test.mjs",
|
||||
"packages/cli/tests/config.test.mjs",
|
||||
"packages/cli/tests/credentials.test.mjs",
|
||||
"packages/cli/tests/follow.test.mjs",
|
||||
"packages/cli/tests/format.test.mjs",
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs",
|
||||
"packages/cli/tests/gate-lane-image.test.mjs",
|
||||
"packages/cli/tests/gate-lane-state.test.mjs",
|
||||
"packages/cli/tests/gate-lane.test.mjs",
|
||||
"packages/cli/tests/git-socket.test.mjs",
|
||||
"packages/cli/tests/host.test.mjs",
|
||||
"packages/cli/tests/hosts.test.mjs",
|
||||
"packages/cli/tests/instances.test.mjs",
|
||||
"packages/cli/tests/launch-account.test.mjs",
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs",
|
||||
"packages/cli/tests/launch-limits.test.mjs",
|
||||
"packages/cli/tests/launch-routes.test.mjs",
|
||||
"packages/cli/tests/launcher.test.mjs",
|
||||
"packages/cli/tests/limits-tokens.test.mjs",
|
||||
"packages/cli/tests/limits.test.mjs",
|
||||
"packages/cli/tests/mark-read.test.mjs",
|
||||
"packages/cli/tests/names.test.mjs",
|
||||
"packages/cli/tests/notifier.test.mjs",
|
||||
"packages/cli/tests/other-tree.test.mjs",
|
||||
"packages/cli/tests/project-name-repo.test.mjs",
|
||||
"packages/cli/tests/project.test.mjs",
|
||||
"packages/cli/tests/publish-socket.test.mjs",
|
||||
"packages/cli/tests/stack-copy.test.mjs",
|
||||
"packages/cli/tests/stack-instances.test.mjs",
|
||||
"packages/cli/tests/stack-release-external.test.mjs",
|
||||
"packages/cli/tests/stack-release.test.mjs",
|
||||
"packages/cli/tests/stack-upgrade.test.mjs",
|
||||
"packages/cli/tests/tester-http.test.mjs",
|
||||
"packages/cli/tests/tester-reads.test.mjs",
|
||||
"packages/cli/tests/tester-threads.test.mjs",
|
||||
"packages/cli/tests/tester.test.mjs",
|
||||
"packages/cli/tests/thread-cli.test.mjs",
|
||||
"packages/cli/tests/thread-launch.test.mjs",
|
||||
"packages/cli/tests/trackers-boot.test.mjs",
|
||||
"packages/cli/tests/transport.test.mjs",
|
||||
"packages/cli/tests/usage.test.mjs",
|
||||
"packages/cli/tests/verbs.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_business.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/business.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/business.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_cli.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/cli.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/cli.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_instance-settings.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/instance-settings.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/instance-settings.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_library-projects-protected.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/library-projects-protected.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/library-projects-protected.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_resolve.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/resolve.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/resolve.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_library_tests_mirror.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/library/tests/mirror.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/library/tests/mirror.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_project_tests_project.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/project/tests/project.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/project/tests/project.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_seat_tests_checkout.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/seat/tests/checkout.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/seat/tests/checkout.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-auth.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-auth.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-auth.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-conductor.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-conductor.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-conductor.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-config.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-config.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-config.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-discord.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-discord.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-discord.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-extension-package.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-extension-package.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-extension-package.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-foundation.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-foundation.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-foundation.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-land-work.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-land-work.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-land-work.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-queue.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-queue.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-queue.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-release.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-release.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-release.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-task.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-task.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-task.sh"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,246 @@
|
||||
[
|
||||
{
|
||||
"name": "webui",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"--test-concurrency=2",
|
||||
"packages/webui/tests/assistant.test.mjs",
|
||||
"packages/webui/tests/board-held.test.mjs",
|
||||
"packages/webui/tests/browser-edge.test.mjs",
|
||||
"packages/webui/tests/browser.test.mjs",
|
||||
"packages/webui/tests/bus-browser.test.mjs",
|
||||
"packages/webui/tests/bus.test.mjs",
|
||||
"packages/webui/tests/channel-chat.test.mjs",
|
||||
"packages/webui/tests/chat-browser.test.mjs",
|
||||
"packages/webui/tests/chat.test.mjs",
|
||||
"packages/webui/tests/conversation.test.mjs",
|
||||
"packages/webui/tests/discord.test.mjs",
|
||||
"packages/webui/tests/docs-browser.test.mjs",
|
||||
"packages/webui/tests/editor-browser.test.mjs",
|
||||
"packages/webui/tests/editor-provenance.test.mjs",
|
||||
"packages/webui/tests/editor.test.mjs",
|
||||
"packages/webui/tests/history-return-flow.test.mjs",
|
||||
"packages/webui/tests/instances-browser.test.mjs",
|
||||
"packages/webui/tests/instances.test.mjs",
|
||||
"packages/webui/tests/library-cli.test.mjs",
|
||||
"packages/webui/tests/limits-browser.test.mjs",
|
||||
"packages/webui/tests/limits-route.test.mjs",
|
||||
"packages/webui/tests/markdown-preview.test.mjs",
|
||||
"packages/webui/tests/messages.test.mjs",
|
||||
"packages/webui/tests/pinned-copy.test.mjs",
|
||||
"packages/webui/tests/preview.test.mjs",
|
||||
"packages/webui/tests/project-file.test.mjs",
|
||||
"packages/webui/tests/project-name-repo.test.mjs",
|
||||
"packages/webui/tests/proof-cli.test.mjs",
|
||||
"packages/webui/tests/proof.test.mjs",
|
||||
"packages/webui/tests/reads.test.mjs",
|
||||
"packages/webui/tests/relaunch.test.mjs",
|
||||
"packages/webui/tests/return-flow.test.mjs",
|
||||
"packages/webui/tests/routes-browser.test.mjs",
|
||||
"packages/webui/tests/routes.test.mjs",
|
||||
"packages/webui/tests/send-browser.test.mjs",
|
||||
"packages/webui/tests/send.test.mjs",
|
||||
"packages/webui/tests/serve.test.mjs",
|
||||
"packages/webui/tests/service.test.mjs",
|
||||
"packages/webui/tests/settings-form.test.mjs",
|
||||
"packages/webui/tests/settings-write.test.mjs",
|
||||
"packages/webui/tests/shell.test.mjs",
|
||||
"packages/webui/tests/sso-browser.test.mjs",
|
||||
"packages/webui/tests/sso.test.mjs",
|
||||
"packages/webui/tests/tester-browser.test.mjs",
|
||||
"packages/webui/tests/tester-cli.test.mjs",
|
||||
"packages/webui/tests/tester-listener.test.mjs",
|
||||
"packages/webui/tests/tester-socket.test.mjs",
|
||||
"packages/webui/tests/usage-browser.test.mjs",
|
||||
"packages/webui/tests/usage.test.mjs",
|
||||
"packages/webui/tests/views.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/webui/tests/assistant.test.mjs",
|
||||
"packages/webui/tests/board-held.test.mjs",
|
||||
"packages/webui/tests/browser-edge.test.mjs",
|
||||
"packages/webui/tests/browser.test.mjs",
|
||||
"packages/webui/tests/bus-browser.test.mjs",
|
||||
"packages/webui/tests/bus.test.mjs",
|
||||
"packages/webui/tests/channel-chat.test.mjs",
|
||||
"packages/webui/tests/chat-browser.test.mjs",
|
||||
"packages/webui/tests/chat.test.mjs",
|
||||
"packages/webui/tests/conversation.test.mjs",
|
||||
"packages/webui/tests/discord.test.mjs",
|
||||
"packages/webui/tests/docs-browser.test.mjs",
|
||||
"packages/webui/tests/editor-browser.test.mjs",
|
||||
"packages/webui/tests/editor-provenance.test.mjs",
|
||||
"packages/webui/tests/editor.test.mjs",
|
||||
"packages/webui/tests/history-return-flow.test.mjs",
|
||||
"packages/webui/tests/instances-browser.test.mjs",
|
||||
"packages/webui/tests/instances.test.mjs",
|
||||
"packages/webui/tests/library-cli.test.mjs",
|
||||
"packages/webui/tests/limits-browser.test.mjs",
|
||||
"packages/webui/tests/limits-route.test.mjs",
|
||||
"packages/webui/tests/markdown-preview.test.mjs",
|
||||
"packages/webui/tests/messages.test.mjs",
|
||||
"packages/webui/tests/pinned-copy.test.mjs",
|
||||
"packages/webui/tests/preview.test.mjs",
|
||||
"packages/webui/tests/project-file.test.mjs",
|
||||
"packages/webui/tests/project-name-repo.test.mjs",
|
||||
"packages/webui/tests/proof-cli.test.mjs",
|
||||
"packages/webui/tests/proof.test.mjs",
|
||||
"packages/webui/tests/reads.test.mjs",
|
||||
"packages/webui/tests/relaunch.test.mjs",
|
||||
"packages/webui/tests/return-flow.test.mjs",
|
||||
"packages/webui/tests/routes-browser.test.mjs",
|
||||
"packages/webui/tests/routes.test.mjs",
|
||||
"packages/webui/tests/send-browser.test.mjs",
|
||||
"packages/webui/tests/send.test.mjs",
|
||||
"packages/webui/tests/serve.test.mjs",
|
||||
"packages/webui/tests/service.test.mjs",
|
||||
"packages/webui/tests/settings-form.test.mjs",
|
||||
"packages/webui/tests/settings-write.test.mjs",
|
||||
"packages/webui/tests/shell.test.mjs",
|
||||
"packages/webui/tests/sso-browser.test.mjs",
|
||||
"packages/webui/tests/sso.test.mjs",
|
||||
"packages/webui/tests/tester-browser.test.mjs",
|
||||
"packages/webui/tests/tester-cli.test.mjs",
|
||||
"packages/webui/tests/tester-listener.test.mjs",
|
||||
"packages/webui/tests/tester-socket.test.mjs",
|
||||
"packages/webui/tests/usage-browser.test.mjs",
|
||||
"packages/webui/tests/usage.test.mjs",
|
||||
"packages/webui/tests/views.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r5/gate/webui.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 112.142838529,
|
||||
"pass": 304,
|
||||
"fail": 0,
|
||||
"skip": 1,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "cli",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"--test-concurrency=2",
|
||||
"packages/cli/tests/app.test.mjs",
|
||||
"packages/cli/tests/boot-status.test.mjs",
|
||||
"packages/cli/tests/case1-accept.test.mjs",
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs",
|
||||
"packages/cli/tests/case2-persona-import.test.mjs",
|
||||
"packages/cli/tests/case2-unit.test.mjs",
|
||||
"packages/cli/tests/channel-cli.test.mjs",
|
||||
"packages/cli/tests/channel-recovery.test.mjs",
|
||||
"packages/cli/tests/cli.test.mjs",
|
||||
"packages/cli/tests/config.test.mjs",
|
||||
"packages/cli/tests/credentials.test.mjs",
|
||||
"packages/cli/tests/follow.test.mjs",
|
||||
"packages/cli/tests/format.test.mjs",
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs",
|
||||
"packages/cli/tests/gate-lane-image.test.mjs",
|
||||
"packages/cli/tests/gate-lane-state.test.mjs",
|
||||
"packages/cli/tests/gate-lane.test.mjs",
|
||||
"packages/cli/tests/git-socket.test.mjs",
|
||||
"packages/cli/tests/host.test.mjs",
|
||||
"packages/cli/tests/hosts.test.mjs",
|
||||
"packages/cli/tests/instances.test.mjs",
|
||||
"packages/cli/tests/launch-account.test.mjs",
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs",
|
||||
"packages/cli/tests/launch-limits.test.mjs",
|
||||
"packages/cli/tests/launch-routes.test.mjs",
|
||||
"packages/cli/tests/launcher.test.mjs",
|
||||
"packages/cli/tests/limits-tokens.test.mjs",
|
||||
"packages/cli/tests/limits.test.mjs",
|
||||
"packages/cli/tests/mark-read.test.mjs",
|
||||
"packages/cli/tests/names.test.mjs",
|
||||
"packages/cli/tests/notifier.test.mjs",
|
||||
"packages/cli/tests/other-tree.test.mjs",
|
||||
"packages/cli/tests/project-name-repo.test.mjs",
|
||||
"packages/cli/tests/project.test.mjs",
|
||||
"packages/cli/tests/publish-socket.test.mjs",
|
||||
"packages/cli/tests/stack-copy.test.mjs",
|
||||
"packages/cli/tests/stack-instances.test.mjs",
|
||||
"packages/cli/tests/stack-release-external.test.mjs",
|
||||
"packages/cli/tests/stack-release.test.mjs",
|
||||
"packages/cli/tests/stack-upgrade.test.mjs",
|
||||
"packages/cli/tests/tester-http.test.mjs",
|
||||
"packages/cli/tests/tester-reads.test.mjs",
|
||||
"packages/cli/tests/tester-threads.test.mjs",
|
||||
"packages/cli/tests/tester.test.mjs",
|
||||
"packages/cli/tests/thread-cli.test.mjs",
|
||||
"packages/cli/tests/thread-launch.test.mjs",
|
||||
"packages/cli/tests/trackers-boot.test.mjs",
|
||||
"packages/cli/tests/transport.test.mjs",
|
||||
"packages/cli/tests/usage.test.mjs",
|
||||
"packages/cli/tests/verbs.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/cli/tests/app.test.mjs",
|
||||
"packages/cli/tests/boot-status.test.mjs",
|
||||
"packages/cli/tests/case1-accept.test.mjs",
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs",
|
||||
"packages/cli/tests/case2-persona-import.test.mjs",
|
||||
"packages/cli/tests/case2-unit.test.mjs",
|
||||
"packages/cli/tests/channel-cli.test.mjs",
|
||||
"packages/cli/tests/channel-recovery.test.mjs",
|
||||
"packages/cli/tests/cli.test.mjs",
|
||||
"packages/cli/tests/config.test.mjs",
|
||||
"packages/cli/tests/credentials.test.mjs",
|
||||
"packages/cli/tests/follow.test.mjs",
|
||||
"packages/cli/tests/format.test.mjs",
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs",
|
||||
"packages/cli/tests/gate-lane-image.test.mjs",
|
||||
"packages/cli/tests/gate-lane-state.test.mjs",
|
||||
"packages/cli/tests/gate-lane.test.mjs",
|
||||
"packages/cli/tests/git-socket.test.mjs",
|
||||
"packages/cli/tests/host.test.mjs",
|
||||
"packages/cli/tests/hosts.test.mjs",
|
||||
"packages/cli/tests/instances.test.mjs",
|
||||
"packages/cli/tests/launch-account.test.mjs",
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs",
|
||||
"packages/cli/tests/launch-limits.test.mjs",
|
||||
"packages/cli/tests/launch-routes.test.mjs",
|
||||
"packages/cli/tests/launcher.test.mjs",
|
||||
"packages/cli/tests/limits-tokens.test.mjs",
|
||||
"packages/cli/tests/limits.test.mjs",
|
||||
"packages/cli/tests/mark-read.test.mjs",
|
||||
"packages/cli/tests/names.test.mjs",
|
||||
"packages/cli/tests/notifier.test.mjs",
|
||||
"packages/cli/tests/other-tree.test.mjs",
|
||||
"packages/cli/tests/project-name-repo.test.mjs",
|
||||
"packages/cli/tests/project.test.mjs",
|
||||
"packages/cli/tests/publish-socket.test.mjs",
|
||||
"packages/cli/tests/stack-copy.test.mjs",
|
||||
"packages/cli/tests/stack-instances.test.mjs",
|
||||
"packages/cli/tests/stack-release-external.test.mjs",
|
||||
"packages/cli/tests/stack-release.test.mjs",
|
||||
"packages/cli/tests/stack-upgrade.test.mjs",
|
||||
"packages/cli/tests/tester-http.test.mjs",
|
||||
"packages/cli/tests/tester-reads.test.mjs",
|
||||
"packages/cli/tests/tester-threads.test.mjs",
|
||||
"packages/cli/tests/tester.test.mjs",
|
||||
"packages/cli/tests/thread-cli.test.mjs",
|
||||
"packages/cli/tests/thread-launch.test.mjs",
|
||||
"packages/cli/tests/trackers-boot.test.mjs",
|
||||
"packages/cli/tests/transport.test.mjs",
|
||||
"packages/cli/tests/usage.test.mjs",
|
||||
"packages/cli/tests/verbs.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r5/gate/cli.log",
|
||||
"code": 1,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.612991227999999,
|
||||
"pass": null,
|
||||
"fail": null,
|
||||
"skip": null,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
import {spawn} from 'node:child_process';import {readFileSync,writeFileSync,readdirSync} from 'node:fs';import {join} from 'node:path';import {performance} from 'node:perf_hooks';
|
||||
const root='/mnt/storage/scratch/tmp/g196-tree-tn651z',out=new URL('.',import.meta.url).pathname;
|
||||
const jobs=[];
|
||||
for(const pkg of ['webui','cli']){const files=readdirSync(join(root,'packages',pkg,'tests')).filter(n=>n.endsWith('.test.mjs')).sort().map(n=>`packages/${pkg}/tests/${n}`);jobs.push({name:pkg,command:process.execPath,args:['--test','--test-reporter=tap','--test-concurrency=2',...files],kind:'node',wholeFiles:files});}
|
||||
const extras=JSON.parse(readFileSync(new URL('../../r4/whole-test-union.json',import.meta.url),'utf8')).extraOutsideWholePackageSuites;
|
||||
for(const file of extras)jobs.push({name:file.replaceAll('/','_'),command:process.execPath,args:['--test','--test-reporter=tap',file],kind:'node',wholeFiles:[file]});
|
||||
for(const file of readdirSync(join(root,'scripts')).filter(n=>/^test-.*\.sh$/.test(n)).sort())jobs.push({name:file,command:'bash',args:['scripts/'+file],kind:'shell',wholeFiles:['scripts/'+file]});
|
||||
writeFileSync(out+'whole-plan.json',JSON.stringify(jobs,null,2)+'\n');
|
||||
const results=[];
|
||||
for(const job of jobs){
|
||||
const log=out+job.name+'.log',start=performance.now();let text='',buffer='',failures=0,stopped=false;
|
||||
console.log('START '+job.name+' '+job.wholeFiles.length+' whole file(s)');
|
||||
const child=spawn('bash',['-c','set -o pipefail; { python3 "$G196_BUSY" && "$@"; } 2>&1 | tee "$G196_LOG"','--',job.command,...job.args],{cwd:root,env:{...process.env,G196_LOG:log},stdio:['ignore','pipe','pipe'],detached:true});
|
||||
const consume=data=>{const part=String(data);text+=part;buffer+=part;const lines=buffer.split('\n');buffer=lines.pop();for(const raw of lines){const line=raw.replace(/\x1b\[[0-9;]*m/g,'');if(/^\s*not ok \d/.test(line)||/^FAIL(?:\s|:)/.test(line)){failures++;if(failures>=2&&!stopped){stopped=true;process.kill(-child.pid,'SIGTERM');}}}};
|
||||
child.stdout.on('data',consume);child.stderr.on('data',consume);
|
||||
const status=await new Promise(resolve=>child.on('close',(code,signal)=>resolve({code,signal})));
|
||||
const summary=key=>{const matches=[...text.matchAll(new RegExp('^# '+key+' (\\d+)','gm'))];return matches.length?Number(matches.at(-1)[1]):null;};
|
||||
const shell=[...text.matchAll(/(\d+) passed,\s*(\d+) failed/g)].at(-1);
|
||||
const result={...job,log,...status,wallSeconds:(performance.now()-start)/1000,pass:job.kind==='node'?summary('pass'):shell?Number(shell[1]):null,fail:job.kind==='node'?summary('fail'):shell?Number(shell[2]):null,skip:job.kind==='node'?summary('skipped'):0,observedFailures:failures,stopped,complete:!stopped};
|
||||
results.push(result);writeFileSync(out+'whole-results.json',JSON.stringify(results,null,2)+'\n');
|
||||
console.log('END '+job.name+' '+JSON.stringify({code:status.code,signal:status.signal,pass:result.pass,fail:result.fail,skip:result.skip,wallSeconds:result.wallSeconds,stopped}));
|
||||
if(status.code!==0||failures||result.pass===null){process.exitCode=1;console.log('STOP '+job.name);break;}
|
||||
}
|
||||
Reference in new issue
Block a user