@hominis/fireforge 0.55.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +233 -6
- package/README.md +51 -17
- package/dist/bin/fireforge.js +34 -129
- package/dist/build-info.json +4 -4
- package/dist/src/check/check.js +394 -0
- package/dist/src/check/gate.js +448 -0
- package/dist/src/check/index.js +10 -0
- package/dist/src/check/record.js +155 -0
- package/dist/src/cli/command.js +286 -0
- package/dist/src/cli/output.js +96 -0
- package/dist/src/cli/program.js +231 -0
- package/dist/src/cli/stdio.js +59 -0
- package/dist/src/cli/version.js +99 -0
- package/dist/src/commands/bootstrap.js +17 -102
- package/dist/src/commands/build.js +34 -456
- package/dist/src/commands/check.js +44 -157
- package/dist/src/commands/config.js +50 -226
- package/dist/src/commands/discard.js +38 -215
- package/dist/src/commands/doctor.js +29 -456
- package/dist/src/commands/download.js +35 -499
- package/dist/src/commands/export.js +42 -431
- package/dist/src/commands/furnace.js +220 -0
- package/dist/src/commands/gate.js +127 -0
- package/dist/src/commands/import.js +44 -445
- package/dist/src/commands/index.js +86 -0
- package/dist/src/commands/lint.js +44 -546
- package/dist/src/commands/merge-driver.js +56 -0
- package/dist/src/commands/migrate.js +75 -0
- package/dist/src/commands/override.js +43 -0
- package/dist/src/commands/package.js +48 -77
- package/dist/src/commands/patch.js +221 -0
- package/dist/src/commands/re-export.js +55 -359
- package/dist/src/commands/rebase.js +69 -0
- package/dist/src/commands/register.js +62 -103
- package/dist/src/commands/reset.js +28 -91
- package/dist/src/commands/resolve.js +20 -167
- package/dist/src/commands/restore.js +19 -0
- package/dist/src/commands/run.js +60 -382
- package/dist/src/commands/setup.js +78 -90
- package/dist/src/commands/status.js +44 -413
- package/dist/src/commands/test.js +97 -423
- package/dist/src/commands/token.js +185 -228
- package/dist/src/commands/typecheck.js +59 -241
- package/dist/src/commands/verify.js +28 -334
- package/dist/src/commands/version.js +14 -0
- package/dist/src/commands/watch.js +20 -218
- package/dist/src/commands/wire.js +60 -349
- package/dist/src/commands/workspace.js +117 -0
- package/dist/src/config/edit.js +237 -0
- package/dist/src/config/index.js +15 -0
- package/dist/src/config/load.js +59 -0
- package/dist/src/config/previous.js +404 -0
- package/dist/src/config/schema/build.js +63 -0
- package/dist/src/config/schema/check.js +113 -0
- package/dist/src/config/schema/common.js +71 -0
- package/dist/src/config/schema/export-queue.js +36 -0
- package/dist/src/config/schema/firefox.js +69 -0
- package/dist/src/config/schema/gate.js +199 -0
- package/dist/src/config/schema/identity.js +55 -0
- package/dist/src/config/schema/index.js +45 -0
- package/dist/src/config/schema/lint.js +297 -0
- package/dist/src/config/schema/policy.js +111 -0
- package/dist/src/config/schema/source.js +90 -0
- package/dist/src/config/schema/test.js +17 -0
- package/dist/src/config/schema/toolchains.js +17 -0
- package/dist/src/config/schema/typecheck.js +29 -0
- package/dist/src/config/schema/wire.js +15 -0
- package/dist/src/diff/apply.js +129 -0
- package/dist/src/diff/index.js +16 -0
- package/dist/src/diff/model.js +267 -0
- package/dist/src/diff/query.js +65 -0
- package/dist/src/doctor/index.js +240 -0
- package/dist/src/engine/archive.js +396 -0
- package/dist/src/engine/audit.js +66 -0
- package/dist/src/engine/build.js +150 -0
- package/dist/src/engine/hostLocks.js +66 -0
- package/dist/src/engine/index.js +26 -0
- package/dist/src/engine/installManifests.js +147 -0
- package/dist/src/engine/mach.js +97 -0
- package/dist/src/engine/machHints.js +80 -0
- package/dist/src/engine/mozconfig.js +110 -0
- package/dist/src/engine/objdir.js +124 -0
- package/dist/src/engine/package.js +169 -0
- package/dist/src/engine/pin.js +12 -0
- package/dist/src/engine/pool.js +423 -0
- package/dist/src/engine/pristine.js +281 -0
- package/dist/src/engine/python.js +68 -0
- package/dist/src/engine/resourceGuard.js +582 -0
- package/dist/src/engine/run.js +259 -0
- package/dist/src/engine/smoke.js +204 -0
- package/dist/src/engine/staleness.js +229 -0
- package/dist/src/engine/watch.js +82 -0
- package/dist/src/engine/workspace.js +85 -0
- package/dist/src/furnace/config.js +360 -0
- package/dist/src/furnace/deploy.js +414 -0
- package/dist/src/furnace/diff.js +59 -0
- package/dist/src/furnace/edit.js +64 -0
- package/dist/src/furnace/fragments.js +53 -0
- package/dist/src/furnace/index.js +19 -0
- package/dist/src/furnace/operations.js +283 -0
- package/dist/src/furnace/registration.js +220 -0
- package/dist/src/furnace/scaffold.js +311 -0
- package/dist/src/furnace/typing.js +252 -0
- package/dist/src/furnace/validate.js +662 -0
- package/dist/src/git/apply.js +129 -0
- package/dist/src/git/diff.js +143 -0
- package/dist/src/git/index.js +33 -0
- package/dist/src/git/objects.js +201 -0
- package/dist/src/git/refs.js +85 -0
- package/dist/src/git/repo.js +222 -0
- package/dist/src/git/run.js +242 -0
- package/dist/src/git/status.js +156 -0
- package/dist/src/kernel/errors.js +123 -0
- package/dist/src/kernel/fs.js +515 -0
- package/dist/src/kernel/glob.js +63 -0
- package/dist/src/kernel/hash.js +28 -0
- package/dist/src/kernel/journal.js +524 -0
- package/dist/src/kernel/json-edit.js +198 -0
- package/dist/src/kernel/json.js +101 -0
- package/dist/src/kernel/lock.js +589 -0
- package/dist/src/kernel/log.js +154 -0
- package/dist/src/kernel/process/identity.js +313 -0
- package/dist/src/kernel/process/index.js +8 -0
- package/dist/src/kernel/process/listing.js +128 -0
- package/dist/src/kernel/process/spawn.js +430 -0
- package/dist/src/kernel/process/tree.js +301 -0
- package/dist/src/kernel/schema.js +308 -0
- package/dist/src/kernel/signals.js +171 -0
- package/dist/src/kernel/text.js +151 -0
- package/dist/src/kernel/time.js +83 -0
- package/dist/src/kernel/tty.js +84 -0
- package/dist/src/lint/cache.js +77 -0
- package/dist/src/lint/checkjs.js +400 -0
- package/dist/src/lint/index.js +3 -0
- package/dist/src/lint/input.js +100 -0
- package/dist/src/lint/report.js +107 -0
- package/dist/src/lint/rule.js +41 -0
- package/dist/src/lint/rules/css.js +308 -0
- package/dist/src/lint/rules/javascript.js +299 -0
- package/dist/src/lint/rules/jsdoc.js +249 -0
- package/dist/src/lint/rules/license.js +93 -0
- package/dist/src/lint/rules/policy.js +201 -0
- package/dist/src/lint/rules/registration.js +264 -0
- package/dist/src/lint/rules/size.js +299 -0
- package/dist/src/lint/run.js +126 -0
- package/dist/src/lint/shim.js +323 -0
- package/dist/src/lint/typescript.js +186 -0
- package/dist/src/lint/waivers.js +93 -0
- package/dist/src/mode/changes.js +264 -0
- package/dist/src/mode/diagnose.js +173 -0
- package/dist/src/mode/export.js +147 -0
- package/dist/src/mode/index.js +23 -0
- package/dist/src/mode/migrate.js +181 -0
- package/dist/src/mode/previousWaivers.js +206 -0
- package/dist/src/mode/pristine.js +61 -0
- package/dist/src/mode/rebase.js +197 -0
- package/dist/src/mode/report.js +157 -0
- package/dist/src/mode/setup.js +103 -0
- package/dist/src/mode/tracked.js +116 -0
- package/dist/src/mode/upgrade.js +281 -0
- package/dist/src/mode/watch.js +83 -0
- package/dist/src/mode/workspace.js +189 -0
- package/dist/src/mozbuild/index.js +6 -0
- package/dist/src/mozbuild/jar.js +366 -0
- package/dist/src/mozbuild/mozbuild.js +321 -0
- package/dist/src/mozbuild/paths.js +96 -0
- package/dist/src/mozbuild/references.js +39 -0
- package/dist/src/mozbuild/testManifest.js +343 -0
- package/dist/src/mozbuild/text.js +142 -0
- package/dist/src/project/changes.js +145 -0
- package/dist/src/project/checkout.js +66 -0
- package/dist/src/project/index.js +11 -0
- package/dist/src/project/license.js +119 -0
- package/dist/src/project/project.js +111 -0
- package/dist/src/project/state.js +85 -0
- package/dist/src/project/tracked.js +1 -0
- package/dist/src/queue/apply.js +270 -0
- package/dist/src/queue/attribute.js +159 -0
- package/dist/src/queue/baseline.js +409 -0
- package/dist/src/queue/capture.js +298 -0
- package/dist/src/queue/changes.js +234 -0
- package/dist/src/queue/index.js +50 -0
- package/dist/src/queue/manifest.js +341 -0
- package/dist/src/queue/operations.js +454 -0
- package/dist/src/queue/placement.js +220 -0
- package/dist/src/queue/queue.js +359 -0
- package/dist/src/queue/restore.js +103 -0
- package/dist/src/queue/session.js +685 -0
- package/dist/src/queue/status.js +137 -0
- package/dist/src/register/files.js +39 -0
- package/dist/src/register/index.js +8 -0
- package/dist/src/register/js.js +217 -0
- package/dist/src/register/register.js +359 -0
- package/dist/src/register/wire.js +146 -0
- package/dist/src/source/adopt.js +99 -0
- package/dist/src/source/changes.js +132 -0
- package/dist/src/source/edit.js +278 -0
- package/dist/src/source/export.js +70 -0
- package/dist/src/source/groups.js +131 -0
- package/dist/src/source/index.js +20 -0
- package/dist/src/source/materialize.js +382 -0
- package/dist/src/source/merge.js +255 -0
- package/dist/src/source/objects.js +102 -0
- package/dist/src/source/previous.js +166 -0
- package/dist/src/source/records.js +138 -0
- package/dist/src/source/refresh.js +264 -0
- package/dist/src/source/tree.js +337 -0
- package/dist/src/syntax/css.js +215 -0
- package/dist/src/syntax/fragments.js +63 -0
- package/dist/src/syntax/index.js +10 -0
- package/dist/src/syntax/js.js +270 -0
- package/dist/src/test/classify.js +826 -0
- package/dist/src/test/control.js +236 -0
- package/dist/src/test/host.js +266 -0
- package/dist/src/test/index.js +11 -0
- package/dist/src/test/plan.js +347 -0
- package/dist/src/test/rawLog.js +138 -0
- package/dist/src/test/run.js +404 -0
- package/dist/src/test/verdict.js +420 -0
- package/dist/src/test/xpcshell.js +143 -0
- package/dist/src/tokens/add.js +304 -0
- package/dist/src/tokens/coverage.js +65 -0
- package/dist/src/tokens/css.js +58 -0
- package/dist/src/tokens/index.js +12 -0
- package/dist/src/tokens/lint.js +96 -0
- package/dist/src/tokens/model.js +118 -0
- package/dist/src/tokens/settings.js +87 -0
- package/dist/src/tokens/siblings.js +104 -0
- package/dist/src/typecheck/explain.js +123 -0
- package/dist/src/typecheck/index.js +8 -0
- package/dist/src/typecheck/typecheck.js +332 -0
- package/docs/README.md +23 -28
- package/docs/authoring.md +97 -0
- package/docs/configuration.md +307 -766
- package/docs/exit-codes.md +76 -94
- package/docs/furnace.md +111 -221
- package/docs/gate.md +205 -0
- package/docs/getting-started.md +165 -0
- package/docs/machine-output.md +201 -290
- package/docs/migrating.md +261 -0
- package/docs/patch-workflow.md +159 -723
- package/docs/quality.md +220 -0
- package/docs/source-workflow.md +228 -0
- package/docs/testing.md +101 -719
- package/docs/workspaces.md +187 -0
- package/package.json +22 -30
- package/templates/configs/common.mozconfig +8 -2
- package/templates/configs/darwin.mozconfig +6 -7
- package/templates/configs/linux.mozconfig +5 -8
- package/templates/configs/win32.mozconfig +3 -9
- package/dist/bin/fireforge.d.ts +0 -9
- package/dist/src/cli-usage-error.d.ts +0 -46
- package/dist/src/cli-usage-error.js +0 -81
- package/dist/src/cli.d.ts +0 -41
- package/dist/src/cli.js +0 -380
- package/dist/src/commands/bootstrap-checks.d.ts +0 -16
- package/dist/src/commands/bootstrap-checks.js +0 -66
- package/dist/src/commands/bootstrap.d.ts +0 -10
- package/dist/src/commands/build-prelock.d.ts +0 -20
- package/dist/src/commands/build-prelock.js +0 -50
- package/dist/src/commands/build.d.ts +0 -13
- package/dist/src/commands/check-report.d.ts +0 -41
- package/dist/src/commands/check-report.js +0 -98
- package/dist/src/commands/check-run.d.ts +0 -44
- package/dist/src/commands/check-run.js +0 -125
- package/dist/src/commands/check-steps.d.ts +0 -75
- package/dist/src/commands/check-steps.js +0 -200
- package/dist/src/commands/check.d.ts +0 -32
- package/dist/src/commands/config.d.ts +0 -13
- package/dist/src/commands/declarations-report.d.ts +0 -49
- package/dist/src/commands/declarations-report.js +0 -83
- package/dist/src/commands/destructive-decision.d.ts +0 -19
- package/dist/src/commands/destructive-decision.js +0 -31
- package/dist/src/commands/discard.d.ts +0 -12
- package/dist/src/commands/doctor-check-core.d.ts +0 -110
- package/dist/src/commands/doctor-check-core.js +0 -24
- package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
- package/dist/src/commands/doctor-engine-eslint.js +0 -17
- package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
- package/dist/src/commands/doctor-external-toolchains.js +0 -56
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
- package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
- package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
- package/dist/src/commands/doctor-furnace-jar.js +0 -44
- package/dist/src/commands/doctor-furnace.d.ts +0 -8
- package/dist/src/commands/doctor-furnace.js +0 -514
- package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
- package/dist/src/commands/doctor-macos-sdk.js +0 -158
- package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
- package/dist/src/commands/doctor-orphaned-harness.js +0 -98
- package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
- package/dist/src/commands/doctor-patch-manifest.js +0 -156
- package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
- package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
- package/dist/src/commands/doctor-source-pin.d.ts +0 -29
- package/dist/src/commands/doctor-source-pin.js +0 -91
- package/dist/src/commands/doctor-working-tree.d.ts +0 -27
- package/dist/src/commands/doctor-working-tree.js +0 -89
- package/dist/src/commands/doctor.d.ts +0 -49
- package/dist/src/commands/download.d.ts +0 -11
- package/dist/src/commands/export-adopt-check.d.ts +0 -37
- package/dist/src/commands/export-adopt-check.js +0 -97
- package/dist/src/commands/export-all.d.ts +0 -11
- package/dist/src/commands/export-all.js +0 -361
- package/dist/src/commands/export-flow.d.ts +0 -124
- package/dist/src/commands/export-flow.js +0 -423
- package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
- package/dist/src/commands/export-placement-conflicts.js +0 -75
- package/dist/src/commands/export-placement-gate.d.ts +0 -42
- package/dist/src/commands/export-placement-gate.js +0 -107
- package/dist/src/commands/export-placement-policy.d.ts +0 -22
- package/dist/src/commands/export-placement-policy.js +0 -54
- package/dist/src/commands/export-shared.d.ts +0 -152
- package/dist/src/commands/export-shared.js +0 -396
- package/dist/src/commands/export-staged-registration.d.ts +0 -46
- package/dist/src/commands/export-staged-registration.js +0 -91
- package/dist/src/commands/export.d.ts +0 -13
- package/dist/src/commands/forward-import-remedy.d.ts +0 -31
- package/dist/src/commands/forward-import-remedy.js +0 -62
- package/dist/src/commands/furnace/apply.d.ts +0 -8
- package/dist/src/commands/furnace/apply.js +0 -327
- package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
- package/dist/src/commands/furnace/authoring-config.js +0 -19
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
- package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
- package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
- package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
- package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
- package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
- package/dist/src/commands/furnace/chrome-doc.js +0 -365
- package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
- package/dist/src/commands/furnace/create-browser-test.js +0 -179
- package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
- package/dist/src/commands/furnace/create-dry-run.js +0 -107
- package/dist/src/commands/furnace/create-features.d.ts +0 -24
- package/dist/src/commands/furnace/create-features.js +0 -55
- package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
- package/dist/src/commands/furnace/create-mochikit.js +0 -75
- package/dist/src/commands/furnace/create-readback.d.ts +0 -22
- package/dist/src/commands/furnace/create-readback.js +0 -32
- package/dist/src/commands/furnace/create-templates.d.ts +0 -119
- package/dist/src/commands/furnace/create-templates.js +0 -283
- package/dist/src/commands/furnace/create-validation.d.ts +0 -6
- package/dist/src/commands/furnace/create-validation.js +0 -59
- package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
- package/dist/src/commands/furnace/create-xpcshell.js +0 -80
- package/dist/src/commands/furnace/create.d.ts +0 -24
- package/dist/src/commands/furnace/create.js +0 -407
- package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
- package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
- package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
- package/dist/src/commands/furnace/deploy-named.js +0 -107
- package/dist/src/commands/furnace/deploy.d.ts +0 -9
- package/dist/src/commands/furnace/deploy.js +0 -229
- package/dist/src/commands/furnace/diff.d.ts +0 -11
- package/dist/src/commands/furnace/diff.js +0 -238
- package/dist/src/commands/furnace/index.d.ts +0 -4
- package/dist/src/commands/furnace/index.js +0 -283
- package/dist/src/commands/furnace/init.d.ts +0 -11
- package/dist/src/commands/furnace/init.js +0 -287
- package/dist/src/commands/furnace/list.d.ts +0 -8
- package/dist/src/commands/furnace/list.js +0 -104
- package/dist/src/commands/furnace/override.d.ts +0 -16
- package/dist/src/commands/furnace/override.js +0 -454
- package/dist/src/commands/furnace/preview.d.ts +0 -19
- package/dist/src/commands/furnace/preview.js +0 -349
- package/dist/src/commands/furnace/refresh.d.ts +0 -10
- package/dist/src/commands/furnace/refresh.js +0 -303
- package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
- package/dist/src/commands/furnace/remove-mutations.js +0 -168
- package/dist/src/commands/furnace/remove-state.d.ts +0 -20
- package/dist/src/commands/furnace/remove-state.js +0 -60
- package/dist/src/commands/furnace/remove.d.ts +0 -8
- package/dist/src/commands/furnace/remove.js +0 -415
- package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
- package/dist/src/commands/furnace/rename-browser-test.js +0 -68
- package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
- package/dist/src/commands/furnace/rename-dry-run.js +0 -127
- package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
- package/dist/src/commands/furnace/rename-helpers.js +0 -85
- package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
- package/dist/src/commands/furnace/rename-registrations.js +0 -98
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
- package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
- package/dist/src/commands/furnace/rename.d.ts +0 -6
- package/dist/src/commands/furnace/rename.js +0 -400
- package/dist/src/commands/furnace/scan.d.ts +0 -14
- package/dist/src/commands/furnace/scan.js +0 -192
- package/dist/src/commands/furnace/status.d.ts +0 -7
- package/dist/src/commands/furnace/status.js +0 -209
- package/dist/src/commands/furnace/sync.d.ts +0 -12
- package/dist/src/commands/furnace/sync.js +0 -145
- package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
- package/dist/src/commands/furnace/test-file-name.js +0 -39
- package/dist/src/commands/furnace/validate-report.d.ts +0 -45
- package/dist/src/commands/furnace/validate-report.js +0 -91
- package/dist/src/commands/furnace/validate.d.ts +0 -8
- package/dist/src/commands/furnace/validate.js +0 -309
- package/dist/src/commands/furnace/validation-output.d.ts +0 -47
- package/dist/src/commands/furnace/validation-output.js +0 -161
- package/dist/src/commands/import.d.ts +0 -11
- package/dist/src/commands/lint-per-patch.d.ts +0 -10
- package/dist/src/commands/lint-per-patch.js +0 -428
- package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
- package/dist/src/commands/lint-per-run-checkjs.js +0 -102
- package/dist/src/commands/lint-report.d.ts +0 -25
- package/dist/src/commands/lint-report.js +0 -76
- package/dist/src/commands/lint.d.ts +0 -47
- package/dist/src/commands/manifest.d.ts +0 -38
- package/dist/src/commands/manifest.js +0 -68
- package/dist/src/commands/package.d.ts +0 -11
- package/dist/src/commands/park.d.ts +0 -22
- package/dist/src/commands/park.js +0 -232
- package/dist/src/commands/patch/body.d.ts +0 -29
- package/dist/src/commands/patch/body.js +0 -60
- package/dist/src/commands/patch/compact.d.ts +0 -28
- package/dist/src/commands/patch/compact.js +0 -208
- package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
- package/dist/src/commands/patch/delete-gap-notice.js +0 -48
- package/dist/src/commands/patch/delete.d.ts +0 -28
- package/dist/src/commands/patch/delete.js +0 -131
- package/dist/src/commands/patch/entry-projection.d.ts +0 -13
- package/dist/src/commands/patch/entry-projection.js +0 -24
- package/dist/src/commands/patch/index.d.ts +0 -16
- package/dist/src/commands/patch/index.js +0 -54
- package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
- package/dist/src/commands/patch/lint-ignore-from.js +0 -141
- package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
- package/dist/src/commands/patch/lint-ignore.js +0 -263
- package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
- package/dist/src/commands/patch/move-files-adopt.js +0 -65
- package/dist/src/commands/patch/move-files-create.d.ts +0 -19
- package/dist/src/commands/patch/move-files-create.js +0 -187
- package/dist/src/commands/patch/move-files-into.d.ts +0 -65
- package/dist/src/commands/patch/move-files-into.js +0 -325
- package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
- package/dist/src/commands/patch/move-files-retire.js +0 -91
- package/dist/src/commands/patch/move-files.d.ts +0 -28
- package/dist/src/commands/patch/move-files.js +0 -224
- package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
- package/dist/src/commands/patch/move-size-tier.js +0 -66
- package/dist/src/commands/patch/patch-context.d.ts +0 -40
- package/dist/src/commands/patch/patch-context.js +0 -51
- package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
- package/dist/src/commands/patch/removal-created-files.js +0 -83
- package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
- package/dist/src/commands/patch/removal-dependents.js +0 -133
- package/dist/src/commands/patch/rename.d.ts +0 -35
- package/dist/src/commands/patch/rename.js +0 -378
- package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
- package/dist/src/commands/patch/reorder-projection.js +0 -49
- package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
- package/dist/src/commands/patch/reorder-shift.js +0 -307
- package/dist/src/commands/patch/reorder.d.ts +0 -34
- package/dist/src/commands/patch/reorder.js +0 -375
- package/dist/src/commands/patch/reserve.d.ts +0 -33
- package/dist/src/commands/patch/reserve.js +0 -152
- package/dist/src/commands/patch/retire.d.ts +0 -34
- package/dist/src/commands/patch/retire.js +0 -133
- package/dist/src/commands/patch/split-plan.d.ts +0 -125
- package/dist/src/commands/patch/split-plan.js +0 -313
- package/dist/src/commands/patch/split-staged.d.ts +0 -108
- package/dist/src/commands/patch/split-staged.js +0 -202
- package/dist/src/commands/patch/split.d.ts +0 -43
- package/dist/src/commands/patch/split.js +0 -367
- package/dist/src/commands/patch/stage.d.ts +0 -34
- package/dist/src/commands/patch/stage.js +0 -153
- package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
- package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
- package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
- package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
- package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
- package/dist/src/commands/patch/staged-dependency-from.js +0 -114
- package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
- package/dist/src/commands/patch/staged-dependency-remove.js +0 -114
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -27
- package/dist/src/commands/patch/staged-dependency-validate.js +0 -78
- package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
- package/dist/src/commands/patch/staged-dependency.js +0 -251
- package/dist/src/commands/patch/tier.d.ts +0 -34
- package/dist/src/commands/patch/tier.js +0 -125
- package/dist/src/commands/patch-rename-map.d.ts +0 -30
- package/dist/src/commands/patch-rename-map.js +0 -54
- package/dist/src/commands/pending-resolution.d.ts +0 -15
- package/dist/src/commands/pending-resolution.js +0 -25
- package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
- package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
- package/dist/src/commands/re-export-adjacent.d.ts +0 -111
- package/dist/src/commands/re-export-adjacent.js +0 -285
- package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
- package/dist/src/commands/re-export-bulk-scan.js +0 -233
- package/dist/src/commands/re-export-drift.d.ts +0 -110
- package/dist/src/commands/re-export-drift.js +0 -358
- package/dist/src/commands/re-export-each.d.ts +0 -46
- package/dist/src/commands/re-export-each.js +0 -110
- package/dist/src/commands/re-export-files.d.ts +0 -15
- package/dist/src/commands/re-export-files.js +0 -307
- package/dist/src/commands/re-export-hunks.d.ts +0 -37
- package/dist/src/commands/re-export-hunks.js +0 -264
- package/dist/src/commands/re-export-lint.d.ts +0 -137
- package/dist/src/commands/re-export-lint.js +0 -303
- package/dist/src/commands/re-export-options.d.ts +0 -29
- package/dist/src/commands/re-export-options.js +0 -192
- package/dist/src/commands/re-export-preflight.d.ts +0 -23
- package/dist/src/commands/re-export-preflight.js +0 -159
- package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
- package/dist/src/commands/re-export-purity-scope.js +0 -137
- package/dist/src/commands/re-export-register.d.ts +0 -12
- package/dist/src/commands/re-export-register.js +0 -99
- package/dist/src/commands/re-export-removed.d.ts +0 -15
- package/dist/src/commands/re-export-removed.js +0 -94
- package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
- package/dist/src/commands/re-export-retired-declarations.js +0 -113
- package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
- package/dist/src/commands/re-export-scan-owner.js +0 -116
- package/dist/src/commands/re-export-scan.d.ts +0 -72
- package/dist/src/commands/re-export-scan.js +0 -265
- package/dist/src/commands/re-export-single.d.ts +0 -53
- package/dist/src/commands/re-export-single.js +0 -426
- package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
- package/dist/src/commands/re-export-stale-registrations.js +0 -106
- package/dist/src/commands/re-export-summary.d.ts +0 -44
- package/dist/src/commands/re-export-summary.js +0 -59
- package/dist/src/commands/re-export.d.ts +0 -8
- package/dist/src/commands/rebase/abort.d.ts +0 -7
- package/dist/src/commands/rebase/abort.js +0 -67
- package/dist/src/commands/rebase/confirm.d.ts +0 -42
- package/dist/src/commands/rebase/confirm.js +0 -36
- package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
- package/dist/src/commands/rebase/conflict-summary.js +0 -37
- package/dist/src/commands/rebase/continue.d.ts +0 -7
- package/dist/src/commands/rebase/continue.js +0 -119
- package/dist/src/commands/rebase/index.d.ts +0 -22
- package/dist/src/commands/rebase/index.js +0 -209
- package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
- package/dist/src/commands/rebase/patch-loop.js +0 -289
- package/dist/src/commands/rebase/summary.d.ts +0 -8
- package/dist/src/commands/rebase/summary.js +0 -47
- package/dist/src/commands/register.d.ts +0 -13
- package/dist/src/commands/reset.d.ts +0 -11
- package/dist/src/commands/resolve.d.ts +0 -36
- package/dist/src/commands/run.d.ts +0 -10
- package/dist/src/commands/setup-support.d.ts +0 -35
- package/dist/src/commands/setup-support.js +0 -386
- package/dist/src/commands/setup.d.ts +0 -11
- package/dist/src/commands/source.d.ts +0 -9
- package/dist/src/commands/source.js +0 -120
- package/dist/src/commands/status-check.d.ts +0 -87
- package/dist/src/commands/status-check.js +0 -161
- package/dist/src/commands/status-json.d.ts +0 -45
- package/dist/src/commands/status-json.js +0 -97
- package/dist/src/commands/status-output.d.ts +0 -23
- package/dist/src/commands/status-output.js +0 -231
- package/dist/src/commands/status-ownership.d.ts +0 -54
- package/dist/src/commands/status-ownership.js +0 -59
- package/dist/src/commands/status-scope.d.ts +0 -37
- package/dist/src/commands/status-scope.js +0 -54
- package/dist/src/commands/status.d.ts +0 -11
- package/dist/src/commands/test-appdir.d.ts +0 -6
- package/dist/src/commands/test-appdir.js +0 -29
- package/dist/src/commands/test-browser-preflight.d.ts +0 -28
- package/dist/src/commands/test-browser-preflight.js +0 -197
- package/dist/src/commands/test-build-furnace.d.ts +0 -21
- package/dist/src/commands/test-build-furnace.js +0 -53
- package/dist/src/commands/test-build-phase.d.ts +0 -34
- package/dist/src/commands/test-build-phase.js +0 -291
- package/dist/src/commands/test-checkjs.d.ts +0 -3
- package/dist/src/commands/test-checkjs.js +0 -35
- package/dist/src/commands/test-control-restore.d.ts +0 -40
- package/dist/src/commands/test-control-restore.js +0 -86
- package/dist/src/commands/test-diagnose.d.ts +0 -23
- package/dist/src/commands/test-diagnose.js +0 -317
- package/dist/src/commands/test-dispatch.d.ts +0 -39
- package/dist/src/commands/test-dispatch.js +0 -281
- package/dist/src/commands/test-furnace-reach.d.ts +0 -37
- package/dist/src/commands/test-furnace-reach.js +0 -132
- package/dist/src/commands/test-harness-env.d.ts +0 -23
- package/dist/src/commands/test-harness-env.js +0 -81
- package/dist/src/commands/test-harness-teardown.d.ts +0 -62
- package/dist/src/commands/test-harness-teardown.js +0 -128
- package/dist/src/commands/test-modes.d.ts +0 -57
- package/dist/src/commands/test-modes.js +0 -158
- package/dist/src/commands/test-multi-verdict.d.ts +0 -61
- package/dist/src/commands/test-multi-verdict.js +0 -112
- package/dist/src/commands/test-orchestrate.d.ts +0 -70
- package/dist/src/commands/test-orchestrate.js +0 -277
- package/dist/src/commands/test-perf-scope.d.ts +0 -50
- package/dist/src/commands/test-perf-scope.js +0 -138
- package/dist/src/commands/test-prelock.d.ts +0 -61
- package/dist/src/commands/test-prelock.js +0 -301
- package/dist/src/commands/test-register.d.ts +0 -4
- package/dist/src/commands/test-register.js +0 -181
- package/dist/src/commands/test-results.d.ts +0 -71
- package/dist/src/commands/test-results.js +0 -79
- package/dist/src/commands/test-run.d.ts +0 -89
- package/dist/src/commands/test-run.js +0 -251
- package/dist/src/commands/test-shards.d.ts +0 -114
- package/dist/src/commands/test-shards.js +0 -272
- package/dist/src/commands/test-stale-gate.d.ts +0 -56
- package/dist/src/commands/test-stale-gate.js +0 -208
- package/dist/src/commands/test-verdict.d.ts +0 -102
- package/dist/src/commands/test-verdict.js +0 -176
- package/dist/src/commands/test.d.ts +0 -22
- package/dist/src/commands/token-coverage.d.ts +0 -5
- package/dist/src/commands/token-coverage.js +0 -170
- package/dist/src/commands/token-lint.d.ts +0 -14
- package/dist/src/commands/token-lint.js +0 -151
- package/dist/src/commands/token-list.d.ts +0 -26
- package/dist/src/commands/token-list.js +0 -153
- package/dist/src/commands/token.d.ts +0 -14
- package/dist/src/commands/tree.d.ts +0 -19
- package/dist/src/commands/tree.js +0 -341
- package/dist/src/commands/typecheck-explain.d.ts +0 -13
- package/dist/src/commands/typecheck-explain.js +0 -100
- package/dist/src/commands/typecheck.d.ts +0 -61
- package/dist/src/commands/verify-scope.d.ts +0 -28
- package/dist/src/commands/verify-scope.js +0 -67
- package/dist/src/commands/verify.d.ts +0 -58
- package/dist/src/commands/watch.d.ts +0 -9
- package/dist/src/commands/wire.d.ts +0 -13
- package/dist/src/core/ast-utils.d.ts +0 -73
- package/dist/src/core/ast-utils.js +0 -105
- package/dist/src/core/brand-validation.d.ts +0 -7
- package/dist/src/core/brand-validation.js +0 -14
- package/dist/src/core/branding.d.ts +0 -86
- package/dist/src/core/branding.js +0 -371
- package/dist/src/core/browser-wire.d.ts +0 -48
- package/dist/src/core/browser-wire.js +0 -133
- package/dist/src/core/build-audit-platform.d.ts +0 -67
- package/dist/src/core/build-audit-platform.js +0 -373
- package/dist/src/core/build-audit-registration.d.ts +0 -80
- package/dist/src/core/build-audit-registration.js +0 -181
- package/dist/src/core/build-audit-resolve.d.ts +0 -78
- package/dist/src/core/build-audit-resolve.js +0 -240
- package/dist/src/core/build-audit-skip.d.ts +0 -57
- package/dist/src/core/build-audit-skip.js +0 -112
- package/dist/src/core/build-audit-transforms.d.ts +0 -23
- package/dist/src/core/build-audit-transforms.js +0 -92
- package/dist/src/core/build-audit.d.ts +0 -93
- package/dist/src/core/build-audit.js +0 -633
- package/dist/src/core/build-baseline-types.d.ts +0 -225
- package/dist/src/core/build-baseline-types.js +0 -10
- package/dist/src/core/build-baseline-validate.d.ts +0 -32
- package/dist/src/core/build-baseline-validate.js +0 -173
- package/dist/src/core/build-baseline.d.ts +0 -103
- package/dist/src/core/build-baseline.js +0 -261
- package/dist/src/core/build-jar-escalation.d.ts +0 -61
- package/dist/src/core/build-jar-escalation.js +0 -125
- package/dist/src/core/build-overwrite-guard.d.ts +0 -92
- package/dist/src/core/build-overwrite-guard.js +0 -235
- package/dist/src/core/build-prepare.d.ts +0 -83
- package/dist/src/core/build-prepare.js +0 -414
- package/dist/src/core/build-run-record.d.ts +0 -74
- package/dist/src/core/build-run-record.js +0 -136
- package/dist/src/core/checkjs-support-heads.d.ts +0 -41
- package/dist/src/core/checkjs-support-heads.js +0 -104
- package/dist/src/core/component-source-guard.d.ts +0 -20
- package/dist/src/core/component-source-guard.js +0 -68
- package/dist/src/core/config-mutate.d.ts +0 -16
- package/dist/src/core/config-mutate.js +0 -76
- package/dist/src/core/config-paths.d.ts +0 -16
- package/dist/src/core/config-paths.js +0 -106
- package/dist/src/core/config-state.d.ts +0 -16
- package/dist/src/core/config-state.js +0 -141
- package/dist/src/core/config-validate-build-audit.d.ts +0 -8
- package/dist/src/core/config-validate-build-audit.js +0 -80
- package/dist/src/core/config-validate-check.d.ts +0 -8
- package/dist/src/core/config-validate-check.js +0 -219
- package/dist/src/core/config-validate-file-size.d.ts +0 -15
- package/dist/src/core/config-validate-file-size.js +0 -154
- package/dist/src/core/config-validate-history.d.ts +0 -11
- package/dist/src/core/config-validate-history.js +0 -38
- package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
- package/dist/src/core/config-validate-patch-policy.js +0 -284
- package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
- package/dist/src/core/config-validate-test-toolchains.js +0 -133
- package/dist/src/core/config-validate-token-scales.d.ts +0 -9
- package/dist/src/core/config-validate-token-scales.js +0 -125
- package/dist/src/core/config-validate.d.ts +0 -11
- package/dist/src/core/config-validate.js +0 -509
- package/dist/src/core/config.d.ts +0 -92
- package/dist/src/core/config.js +0 -169
- package/dist/src/core/coverage-dispatch.d.ts +0 -24
- package/dist/src/core/coverage-dispatch.js +0 -44
- package/dist/src/core/coverage-extend.d.ts +0 -89
- package/dist/src/core/coverage-extend.js +0 -239
- package/dist/src/core/coverage-records.d.ts +0 -107
- package/dist/src/core/coverage-records.js +0 -383
- package/dist/src/core/destructive.d.ts +0 -144
- package/dist/src/core/destructive.js +0 -182
- package/dist/src/core/dev-profile.d.ts +0 -28
- package/dist/src/core/dev-profile.js +0 -58
- package/dist/src/core/diff-hunks.d.ts +0 -73
- package/dist/src/core/diff-hunks.js +0 -286
- package/dist/src/core/discard-baseline.d.ts +0 -60
- package/dist/src/core/discard-baseline.js +0 -247
- package/dist/src/core/display-state.d.ts +0 -50
- package/dist/src/core/display-state.js +0 -87
- package/dist/src/core/engine-changes.d.ts +0 -40
- package/dist/src/core/engine-changes.js +0 -95
- package/dist/src/core/engine-precondition.d.ts +0 -42
- package/dist/src/core/engine-precondition.js +0 -60
- package/dist/src/core/engine-session-lock.d.ts +0 -119
- package/dist/src/core/engine-session-lock.js +0 -374
- package/dist/src/core/engine-write-boundary.d.ts +0 -5
- package/dist/src/core/engine-write-boundary.js +0 -41
- package/dist/src/core/export-moved-code-shape.d.ts +0 -98
- package/dist/src/core/export-moved-code-shape.js +0 -220
- package/dist/src/core/file-lock-owner.d.ts +0 -103
- package/dist/src/core/file-lock-owner.js +0 -259
- package/dist/src/core/file-lock-queue.d.ts +0 -67
- package/dist/src/core/file-lock-queue.js +0 -219
- package/dist/src/core/file-lock-shared.d.ts +0 -57
- package/dist/src/core/file-lock-shared.js +0 -117
- package/dist/src/core/file-lock.d.ts +0 -143
- package/dist/src/core/file-lock.js +0 -531
- package/dist/src/core/firefox-archive.d.ts +0 -45
- package/dist/src/core/firefox-archive.js +0 -96
- package/dist/src/core/firefox-cache.d.ts +0 -30
- package/dist/src/core/firefox-cache.js +0 -248
- package/dist/src/core/firefox-download.d.ts +0 -30
- package/dist/src/core/firefox-download.js +0 -152
- package/dist/src/core/firefox-extract.d.ts +0 -42
- package/dist/src/core/firefox-extract.js +0 -248
- package/dist/src/core/firefox-ignorefile.d.ts +0 -17
- package/dist/src/core/firefox-ignorefile.js +0 -30
- package/dist/src/core/firefox.d.ts +0 -66
- package/dist/src/core/firefox.js +0 -121
- package/dist/src/core/forward-registrations.d.ts +0 -33
- package/dist/src/core/forward-registrations.js +0 -16
- package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
- package/dist/src/core/furnace-apply-dry-run.js +0 -99
- package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
- package/dist/src/core/furnace-apply-ftl.js +0 -210
- package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
- package/dist/src/core/furnace-apply-helpers.js +0 -436
- package/dist/src/core/furnace-apply-output.d.ts +0 -36
- package/dist/src/core/furnace-apply-output.js +0 -111
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -67
- package/dist/src/core/furnace-apply-overwrite-warn.js +0 -131
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
- package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
- package/dist/src/core/furnace-apply.d.ts +0 -49
- package/dist/src/core/furnace-apply.js +0 -465
- package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
- package/dist/src/core/furnace-checksum-utils.js +0 -54
- package/dist/src/core/furnace-composed-source.d.ts +0 -76
- package/dist/src/core/furnace-composed-source.js +0 -167
- package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
- package/dist/src/core/furnace-config-array-utils.js +0 -26
- package/dist/src/core/furnace-config-custom.d.ts +0 -15
- package/dist/src/core/furnace-config-custom.js +0 -73
- package/dist/src/core/furnace-config-order.d.ts +0 -8
- package/dist/src/core/furnace-config-order.js +0 -90
- package/dist/src/core/furnace-config-tokens.d.ts +0 -17
- package/dist/src/core/furnace-config-tokens.js +0 -42
- package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
- package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
- package/dist/src/core/furnace-config-validate.d.ts +0 -32
- package/dist/src/core/furnace-config-validate.js +0 -167
- package/dist/src/core/furnace-config.d.ts +0 -139
- package/dist/src/core/furnace-config.js +0 -511
- package/dist/src/core/furnace-constants.d.ts +0 -81
- package/dist/src/core/furnace-constants.js +0 -125
- package/dist/src/core/furnace-css-fragments.d.ts +0 -96
- package/dist/src/core/furnace-css-fragments.js +0 -279
- package/dist/src/core/furnace-deploy-owner.d.ts +0 -29
- package/dist/src/core/furnace-deploy-owner.js +0 -116
- package/dist/src/core/furnace-dir-entry.d.ts +0 -20
- package/dist/src/core/furnace-dir-entry.js +0 -21
- package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
- package/dist/src/core/furnace-fragment-includers.js +0 -122
- package/dist/src/core/furnace-graph-utils.d.ts +0 -11
- package/dist/src/core/furnace-graph-utils.js +0 -93
- package/dist/src/core/furnace-jsconfig.d.ts +0 -87
- package/dist/src/core/furnace-jsconfig.js +0 -248
- package/dist/src/core/furnace-marker.d.ts +0 -15
- package/dist/src/core/furnace-marker.js +0 -21
- package/dist/src/core/furnace-operation.d.ts +0 -195
- package/dist/src/core/furnace-operation.js +0 -444
- package/dist/src/core/furnace-precondition.d.ts +0 -61
- package/dist/src/core/furnace-precondition.js +0 -67
- package/dist/src/core/furnace-refresh.d.ts +0 -28
- package/dist/src/core/furnace-refresh.js +0 -125
- package/dist/src/core/furnace-registration-ast.d.ts +0 -53
- package/dist/src/core/furnace-registration-ast.js +0 -402
- package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
- package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
- package/dist/src/core/furnace-registration-remove.d.ts +0 -56
- package/dist/src/core/furnace-registration-remove.js +0 -260
- package/dist/src/core/furnace-registration-rename.d.ts +0 -26
- package/dist/src/core/furnace-registration-rename.js +0 -77
- package/dist/src/core/furnace-registration-validate.d.ts +0 -53
- package/dist/src/core/furnace-registration-validate.js +0 -110
- package/dist/src/core/furnace-registration.d.ts +0 -112
- package/dist/src/core/furnace-registration.js +0 -348
- package/dist/src/core/furnace-rollback.d.ts +0 -48
- package/dist/src/core/furnace-rollback.js +0 -170
- package/dist/src/core/furnace-scanner.d.ts +0 -47
- package/dist/src/core/furnace-scanner.js +0 -236
- package/dist/src/core/furnace-stale-export.d.ts +0 -60
- package/dist/src/core/furnace-stale-export.js +0 -125
- package/dist/src/core/furnace-staleness.d.ts +0 -24
- package/dist/src/core/furnace-staleness.js +0 -67
- package/dist/src/core/furnace-state-persist.d.ts +0 -68
- package/dist/src/core/furnace-state-persist.js +0 -116
- package/dist/src/core/furnace-step-errors.d.ts +0 -23
- package/dist/src/core/furnace-step-errors.js +0 -25
- package/dist/src/core/furnace-stories.d.ts +0 -37
- package/dist/src/core/furnace-stories.js +0 -186
- package/dist/src/core/furnace-tag-map.d.ts +0 -47
- package/dist/src/core/furnace-tag-map.js +0 -182
- package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
- package/dist/src/core/furnace-validate-accessibility.js +0 -417
- package/dist/src/core/furnace-validate-checks.d.ts +0 -4
- package/dist/src/core/furnace-validate-checks.js +0 -6
- package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
- package/dist/src/core/furnace-validate-compatibility.js +0 -295
- package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
- package/dist/src/core/furnace-validate-exceptions.js +0 -98
- package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
- package/dist/src/core/furnace-validate-helpers.js +0 -4
- package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
- package/dist/src/core/furnace-validate-icon-button.js +0 -78
- package/dist/src/core/furnace-validate-registration.d.ts +0 -67
- package/dist/src/core/furnace-validate-registration.js +0 -487
- package/dist/src/core/furnace-validate-structure.d.ts +0 -22
- package/dist/src/core/furnace-validate-structure.js +0 -122
- package/dist/src/core/furnace-validate.d.ts +0 -41
- package/dist/src/core/furnace-validate.js +0 -331
- package/dist/src/core/furnace-version-drift.d.ts +0 -57
- package/dist/src/core/furnace-version-drift.js +0 -102
- package/dist/src/core/gecko-dom-types.d.ts +0 -2
- package/dist/src/core/gecko-dom-types.js +0 -17
- package/dist/src/core/git-base.d.ts +0 -101
- package/dist/src/core/git-base.js +0 -162
- package/dist/src/core/git-diff-new-file.d.ts +0 -40
- package/dist/src/core/git-diff-new-file.js +0 -118
- package/dist/src/core/git-diff.d.ts +0 -82
- package/dist/src/core/git-diff.js +0 -539
- package/dist/src/core/git-file-ops.d.ts +0 -108
- package/dist/src/core/git-file-ops.js +0 -280
- package/dist/src/core/git-readonly-index.d.ts +0 -91
- package/dist/src/core/git-readonly-index.js +0 -177
- package/dist/src/core/git-status.d.ts +0 -84
- package/dist/src/core/git-status.js +0 -208
- package/dist/src/core/git.d.ts +0 -114
- package/dist/src/core/git.js +0 -540
- package/dist/src/core/harness-helper-pids.d.ts +0 -98
- package/dist/src/core/harness-helper-pids.js +0 -240
- package/dist/src/core/harness-orphans.d.ts +0 -118
- package/dist/src/core/harness-orphans.js +0 -268
- package/dist/src/core/harness-port-fallback.d.ts +0 -60
- package/dist/src/core/harness-port-fallback.js +0 -96
- package/dist/src/core/harness-port-reservation.d.ts +0 -60
- package/dist/src/core/harness-port-reservation.js +0 -122
- package/dist/src/core/history-log-file.d.ts +0 -61
- package/dist/src/core/history-log-file.js +0 -164
- package/dist/src/core/history-log.d.ts +0 -20
- package/dist/src/core/history-log.js +0 -30
- package/dist/src/core/json-preserving-edit.d.ts +0 -22
- package/dist/src/core/json-preserving-edit.js +0 -199
- package/dist/src/core/launchable-build.d.ts +0 -39
- package/dist/src/core/launchable-build.js +0 -85
- package/dist/src/core/license-headers.d.ts +0 -103
- package/dist/src/core/license-headers.js +0 -328
- package/dist/src/core/line-prefixer.d.ts +0 -18
- package/dist/src/core/line-prefixer.js +0 -34
- package/dist/src/core/lit-template-regions.d.ts +0 -4
- package/dist/src/core/lit-template-regions.js +0 -50
- package/dist/src/core/mach-build-artifacts.d.ts +0 -176
- package/dist/src/core/mach-build-artifacts.js +0 -436
- package/dist/src/core/mach-error-hints.d.ts +0 -24
- package/dist/src/core/mach-error-hints.js +0 -135
- package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
- package/dist/src/core/mach-known-noise-filter.js +0 -257
- package/dist/src/core/mach-mozconfig.d.ts +0 -57
- package/dist/src/core/mach-mozconfig.js +0 -166
- package/dist/src/core/mach-python.d.ts +0 -19
- package/dist/src/core/mach-python.js +0 -131
- package/dist/src/core/mach-resource-shim.d.ts +0 -107
- package/dist/src/core/mach-resource-shim.js +0 -640
- package/dist/src/core/mach.d.ts +0 -284
- package/dist/src/core/mach.js +0 -445
- package/dist/src/core/marionette-port.d.ts +0 -153
- package/dist/src/core/marionette-port.js +0 -474
- package/dist/src/core/marionette-preflight.d.ts +0 -58
- package/dist/src/core/marionette-preflight.js +0 -332
- package/dist/src/core/markdown-table.d.ts +0 -104
- package/dist/src/core/markdown-table.js +0 -265
- package/dist/src/core/mochitest-server-port.d.ts +0 -81
- package/dist/src/core/mochitest-server-port.js +0 -175
- package/dist/src/core/module-resolution-preflight.d.ts +0 -65
- package/dist/src/core/module-resolution-preflight.js +0 -171
- package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
- package/dist/src/core/moz-manifest-helpers.js +0 -163
- package/dist/src/core/moz-manifest-register.d.ts +0 -19
- package/dist/src/core/moz-manifest-register.js +0 -51
- package/dist/src/core/moz-manifest-rules.d.ts +0 -58
- package/dist/src/core/moz-manifest-rules.js +0 -264
- package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
- package/dist/src/core/moz-manifest-tokenizers.js +0 -108
- package/dist/src/core/negative-control-compiled.d.ts +0 -46
- package/dist/src/core/negative-control-compiled.js +0 -109
- package/dist/src/core/negative-control-diff.d.ts +0 -51
- package/dist/src/core/negative-control-diff.js +0 -167
- package/dist/src/core/negative-control.d.ts +0 -150
- package/dist/src/core/negative-control.js +0 -399
- package/dist/src/core/objdir-install-manifests.d.ts +0 -73
- package/dist/src/core/objdir-install-manifests.js +0 -226
- package/dist/src/core/objdir-maintenance.d.ts +0 -10
- package/dist/src/core/objdir-maintenance.js +0 -167
- package/dist/src/core/ownership-table.d.ts +0 -53
- package/dist/src/core/ownership-table.js +0 -159
- package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
- package/dist/src/core/parent-exit-watchdog.js +0 -69
- package/dist/src/core/park-store.d.ts +0 -63
- package/dist/src/core/park-store.js +0 -216
- package/dist/src/core/parser-fallback.d.ts +0 -50
- package/dist/src/core/parser-fallback.js +0 -61
- package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
- package/dist/src/core/patch-apply-fuzz.js +0 -125
- package/dist/src/core/patch-apply.d.ts +0 -88
- package/dist/src/core/patch-apply.js +0 -435
- package/dist/src/core/patch-export-coverage.d.ts +0 -49
- package/dist/src/core/patch-export-coverage.js +0 -73
- package/dist/src/core/patch-export-metadata.d.ts +0 -46
- package/dist/src/core/patch-export-metadata.js +0 -47
- package/dist/src/core/patch-export-update.d.ts +0 -55
- package/dist/src/core/patch-export-update.js +0 -95
- package/dist/src/core/patch-export.d.ts +0 -175
- package/dist/src/core/patch-export.js +0 -312
- package/dist/src/core/patch-files.d.ts +0 -17
- package/dist/src/core/patch-files.js +0 -59
- package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
- package/dist/src/core/patch-identifier-suggest.js +0 -135
- package/dist/src/core/patch-lint-binary.d.ts +0 -45
- package/dist/src/core/patch-lint-binary.js +0 -39
- package/dist/src/core/patch-lint-cache-checkjs.d.ts +0 -45
- package/dist/src/core/patch-lint-cache-checkjs.js +0 -195
- package/dist/src/core/patch-lint-cache.d.ts +0 -79
- package/dist/src/core/patch-lint-cache.js +0 -247
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -57
- package/dist/src/core/patch-lint-checkjs-any-import.js +0 -91
- package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
- package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
- package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
- package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
- package/dist/src/core/patch-lint-checkjs-resolve.d.ts +0 -31
- package/dist/src/core/patch-lint-checkjs-resolve.js +0 -86
- package/dist/src/core/patch-lint-checkjs.d.ts +0 -182
- package/dist/src/core/patch-lint-checkjs.js +0 -563
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
- package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
- package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
- package/dist/src/core/patch-lint-code-lines.js +0 -105
- package/dist/src/core/patch-lint-creators.d.ts +0 -26
- package/dist/src/core/patch-lint-creators.js +0 -45
- package/dist/src/core/patch-lint-cross.d.ts +0 -232
- package/dist/src/core/patch-lint-cross.js +0 -590
- package/dist/src/core/patch-lint-css.d.ts +0 -27
- package/dist/src/core/patch-lint-css.js +0 -228
- package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
- package/dist/src/core/patch-lint-diff-tag.js +0 -105
- package/dist/src/core/patch-lint-diff.d.ts +0 -42
- package/dist/src/core/patch-lint-diff.js +0 -100
- package/dist/src/core/patch-lint-file-size.d.ts +0 -57
- package/dist/src/core/patch-lint-file-size.js +0 -62
- package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
- package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
- package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
- package/dist/src/core/patch-lint-forward-registration.js +0 -266
- package/dist/src/core/patch-lint-ignore.d.ts +0 -196
- package/dist/src/core/patch-lint-ignore.js +0 -429
- package/dist/src/core/patch-lint-imports.d.ts +0 -9
- package/dist/src/core/patch-lint-imports.js +0 -90
- package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
- package/dist/src/core/patch-lint-jsdoc.js +0 -471
- package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
- package/dist/src/core/patch-lint-module-registration.js +0 -97
- package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
- package/dist/src/core/patch-lint-mozbuild.js +0 -192
- package/dist/src/core/patch-lint-observer.d.ts +0 -37
- package/dist/src/core/patch-lint-observer.js +0 -167
- package/dist/src/core/patch-lint-ownership.d.ts +0 -74
- package/dist/src/core/patch-lint-ownership.js +0 -125
- package/dist/src/core/patch-lint-prettier.d.ts +0 -34
- package/dist/src/core/patch-lint-prettier.js +0 -124
- package/dist/src/core/patch-lint-projection.d.ts +0 -25
- package/dist/src/core/patch-lint-projection.js +0 -43
- package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
- package/dist/src/core/patch-lint-queue-types.js +0 -12
- package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
- package/dist/src/core/patch-lint-size-thresholds.js +0 -110
- package/dist/src/core/patch-lint-size.d.ts +0 -117
- package/dist/src/core/patch-lint-size.js +0 -331
- package/dist/src/core/patch-lint-staged-registration.d.ts +0 -98
- package/dist/src/core/patch-lint-staged-registration.js +0 -128
- package/dist/src/core/patch-lint-token-scale.d.ts +0 -65
- package/dist/src/core/patch-lint-token-scale.js +0 -304
- package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
- package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
- package/dist/src/core/patch-lint.d.ts +0 -206
- package/dist/src/core/patch-lint.js +0 -533
- package/dist/src/core/patch-lock.d.ts +0 -40
- package/dist/src/core/patch-lock.js +0 -129
- package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
- package/dist/src/core/patch-manifest-consistency.js +0 -256
- package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
- package/dist/src/core/patch-manifest-files-affected.js +0 -77
- package/dist/src/core/patch-manifest-io.d.ts +0 -199
- package/dist/src/core/patch-manifest-io.js +0 -556
- package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
- package/dist/src/core/patch-manifest-key-order.js +0 -60
- package/dist/src/core/patch-manifest-query.d.ts +0 -55
- package/dist/src/core/patch-manifest-query.js +0 -139
- package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
- package/dist/src/core/patch-manifest-resolve.js +0 -35
- package/dist/src/core/patch-manifest-stage.d.ts +0 -46
- package/dist/src/core/patch-manifest-stage.js +0 -96
- package/dist/src/core/patch-manifest-validate.d.ts +0 -20
- package/dist/src/core/patch-manifest-validate.js +0 -240
- package/dist/src/core/patch-manifest.d.ts +0 -12
- package/dist/src/core/patch-manifest.js +0 -13
- package/dist/src/core/patch-order-legal.d.ts +0 -26
- package/dist/src/core/patch-order-legal.js +0 -88
- package/dist/src/core/patch-parse.d.ts +0 -176
- package/dist/src/core/patch-parse.js +0 -416
- package/dist/src/core/patch-policy-content.d.ts +0 -40
- package/dist/src/core/patch-policy-content.js +0 -219
- package/dist/src/core/patch-policy.d.ts +0 -80
- package/dist/src/core/patch-policy.js +0 -394
- package/dist/src/core/patch-registration-refs.d.ts +0 -41
- package/dist/src/core/patch-registration-refs.js +0 -107
- package/dist/src/core/patch-retired.d.ts +0 -57
- package/dist/src/core/patch-retired.js +0 -92
- package/dist/src/core/patch-source-metadata.d.ts +0 -6
- package/dist/src/core/patch-source-metadata.js +0 -12
- package/dist/src/core/patch-subset.d.ts +0 -18
- package/dist/src/core/patch-subset.js +0 -67
- package/dist/src/core/patch-transform.d.ts +0 -61
- package/dist/src/core/patch-transform.js +0 -198
- package/dist/src/core/preflight-wait.d.ts +0 -22
- package/dist/src/core/preflight-wait.js +0 -62
- package/dist/src/core/process-cpu-time.d.ts +0 -12
- package/dist/src/core/process-cpu-time.js +0 -52
- package/dist/src/core/process-owner.d.ts +0 -9
- package/dist/src/core/process-owner.js +0 -43
- package/dist/src/core/rebase-dry-run.d.ts +0 -48
- package/dist/src/core/rebase-dry-run.js +0 -105
- package/dist/src/core/rebase-from-version.d.ts +0 -46
- package/dist/src/core/rebase-from-version.js +0 -71
- package/dist/src/core/rebase-session.d.ts +0 -100
- package/dist/src/core/rebase-session.js +0 -174
- package/dist/src/core/register-browser-content.d.ts +0 -11
- package/dist/src/core/register-browser-content.js +0 -52
- package/dist/src/core/register-browser-test.d.ts +0 -18
- package/dist/src/core/register-browser-test.js +0 -66
- package/dist/src/core/register-module.d.ts +0 -11
- package/dist/src/core/register-module.js +0 -56
- package/dist/src/core/register-result.d.ts +0 -30
- package/dist/src/core/register-result.js +0 -8
- package/dist/src/core/register-scaffold.d.ts +0 -55
- package/dist/src/core/register-scaffold.js +0 -146
- package/dist/src/core/register-shared-css.d.ts +0 -36
- package/dist/src/core/register-shared-css.js +0 -112
- package/dist/src/core/register-xpcshell-test.d.ts +0 -50
- package/dist/src/core/register-xpcshell-test.js +0 -143
- package/dist/src/core/run-log-redact.d.ts +0 -38
- package/dist/src/core/run-log-redact.js +0 -69
- package/dist/src/core/run-log.d.ts +0 -97
- package/dist/src/core/run-log.js +0 -334
- package/dist/src/core/run-profile.d.ts +0 -57
- package/dist/src/core/run-profile.js +0 -137
- package/dist/src/core/shared-ftl.d.ts +0 -28
- package/dist/src/core/shared-ftl.js +0 -49
- package/dist/src/core/signal-critical.d.ts +0 -38
- package/dist/src/core/signal-critical.js +0 -62
- package/dist/src/core/smoke-patterns.d.ts +0 -81
- package/dist/src/core/smoke-patterns.js +0 -176
- package/dist/src/core/state-file.d.ts +0 -60
- package/dist/src/core/state-file.js +0 -71
- package/dist/src/core/status-binary.d.ts +0 -62
- package/dist/src/core/status-binary.js +0 -133
- package/dist/src/core/status-classify.d.ts +0 -96
- package/dist/src/core/status-classify.js +0 -244
- package/dist/src/core/test-changed-prefs.d.ts +0 -30
- package/dist/src/core/test-changed-prefs.js +0 -93
- package/dist/src/core/test-harness-crash.d.ts +0 -251
- package/dist/src/core/test-harness-crash.js +0 -780
- package/dist/src/core/test-harness-infra.d.ts +0 -32
- package/dist/src/core/test-harness-infra.js +0 -69
- package/dist/src/core/test-harness-output.d.ts +0 -45
- package/dist/src/core/test-harness-output.js +0 -119
- package/dist/src/core/test-harness-signature.d.ts +0 -57
- package/dist/src/core/test-harness-signature.js +0 -35
- package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
- package/dist/src/core/test-harness-verdict-notes.js +0 -48
- package/dist/src/core/test-host-state.d.ts +0 -14
- package/dist/src/core/test-host-state.js +0 -80
- package/dist/src/core/test-path-scope.d.ts +0 -59
- package/dist/src/core/test-path-scope.js +0 -147
- package/dist/src/core/test-profile-files.d.ts +0 -17
- package/dist/src/core/test-profile-files.js +0 -75
- package/dist/src/core/test-raw-log.d.ts +0 -66
- package/dist/src/core/test-raw-log.js +0 -122
- package/dist/src/core/test-run-completeness.d.ts +0 -97
- package/dist/src/core/test-run-completeness.js +0 -191
- package/dist/src/core/test-stale-check.d.ts +0 -213
- package/dist/src/core/test-stale-check.js +0 -396
- package/dist/src/core/test-stale-exempt.d.ts +0 -40
- package/dist/src/core/test-stale-exempt.js +0 -70
- package/dist/src/core/test-stale-symlink.d.ts +0 -12
- package/dist/src/core/test-stale-symlink.js +0 -39
- package/dist/src/core/test-stall-triage.d.ts +0 -51
- package/dist/src/core/test-stall-triage.js +0 -142
- package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
- package/dist/src/core/test-xpcshell-retry.js +0 -31
- package/dist/src/core/token-category.d.ts +0 -54
- package/dist/src/core/token-category.js +0 -299
- package/dist/src/core/token-coverage.d.ts +0 -12
- package/dist/src/core/token-coverage.js +0 -96
- package/dist/src/core/token-dark-mode.d.ts +0 -64
- package/dist/src/core/token-dark-mode.js +0 -186
- package/dist/src/core/token-docs.d.ts +0 -34
- package/dist/src/core/token-docs.js +0 -102
- package/dist/src/core/token-inventory.d.ts +0 -56
- package/dist/src/core/token-inventory.js +0 -114
- package/dist/src/core/token-lint.d.ts +0 -53
- package/dist/src/core/token-lint.js +0 -131
- package/dist/src/core/token-manager.d.ts +0 -87
- package/dist/src/core/token-manager.js +0 -407
- package/dist/src/core/token-scaffold.d.ts +0 -36
- package/dist/src/core/token-scaffold.js +0 -73
- package/dist/src/core/token-sibling-sheets.d.ts +0 -46
- package/dist/src/core/token-sibling-sheets.js +0 -119
- package/dist/src/core/token-variant.d.ts +0 -90
- package/dist/src/core/token-variant.js +0 -327
- package/dist/src/core/toolchain-preflight.d.ts +0 -90
- package/dist/src/core/toolchain-preflight.js +0 -251
- package/dist/src/core/tree-cow.d.ts +0 -16
- package/dist/src/core/tree-cow.js +0 -71
- package/dist/src/core/tree-guard.d.ts +0 -35
- package/dist/src/core/tree-guard.js +0 -194
- package/dist/src/core/tree-store.d.ts +0 -143
- package/dist/src/core/tree-store.js +0 -478
- package/dist/src/core/typecheck-explain.d.ts +0 -93
- package/dist/src/core/typecheck-explain.js +0 -213
- package/dist/src/core/typecheck-shim.d.ts +0 -90
- package/dist/src/core/typecheck-shim.js +0 -508
- package/dist/src/core/typecheck.d.ts +0 -97
- package/dist/src/core/typecheck.js +0 -457
- package/dist/src/core/wire-destroy.d.ts +0 -25
- package/dist/src/core/wire-destroy.js +0 -126
- package/dist/src/core/wire-dom-fragment.d.ts +0 -44
- package/dist/src/core/wire-dom-fragment.js +0 -139
- package/dist/src/core/wire-init.d.ts +0 -28
- package/dist/src/core/wire-init.js +0 -219
- package/dist/src/core/wire-subscript.d.ts +0 -23
- package/dist/src/core/wire-subscript.js +0 -145
- package/dist/src/core/wire-utils.d.ts +0 -149
- package/dist/src/core/wire-utils.js +0 -338
- package/dist/src/core/xpcshell-appdir.d.ts +0 -157
- package/dist/src/core/xpcshell-appdir.js +0 -299
- package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
- package/dist/src/core/xpcshell-profile-dir.js +0 -45
- package/dist/src/errors/base.d.ts +0 -217
- package/dist/src/errors/base.js +0 -279
- package/dist/src/errors/build.d.ts +0 -92
- package/dist/src/errors/build.js +0 -166
- package/dist/src/errors/codes.d.ts +0 -74
- package/dist/src/errors/codes.js +0 -74
- package/dist/src/errors/config.d.ts +0 -17
- package/dist/src/errors/config.js +0 -39
- package/dist/src/errors/download.d.ts +0 -66
- package/dist/src/errors/download.js +0 -160
- package/dist/src/errors/furnace.d.ts +0 -20
- package/dist/src/errors/furnace.js +0 -28
- package/dist/src/errors/git.d.ts +0 -65
- package/dist/src/errors/git.js +0 -140
- package/dist/src/errors/patch.d.ts +0 -27
- package/dist/src/errors/patch.js +0 -52
- package/dist/src/errors/rebase.d.ts +0 -42
- package/dist/src/errors/rebase.js +0 -71
- package/dist/src/errors/run.d.ts +0 -16
- package/dist/src/errors/run.js +0 -22
- package/dist/src/index.d.ts +0 -42
- package/dist/src/index.js +0 -32
- package/dist/src/types/cli.d.ts +0 -14
- package/dist/src/types/commands/index.d.ts +0 -6
- package/dist/src/types/commands/index.js +0 -5
- package/dist/src/types/commands/options.d.ts +0 -1372
- package/dist/src/types/commands/options.js +0 -5
- package/dist/src/types/commands/patches.d.ts +0 -352
- package/dist/src/types/commands/patches.js +0 -5
- package/dist/src/types/commands/project.d.ts +0 -51
- package/dist/src/types/commands/project.js +0 -5
- package/dist/src/types/config.d.ts +0 -732
- package/dist/src/types/config.js +0 -15
- package/dist/src/types/furnace.d.ts +0 -422
- package/dist/src/types/furnace.js +0 -26
- package/dist/src/types/index.d.ts +0 -5
- package/dist/src/types/index.js +0 -5
- package/dist/src/types/json.d.ts +0 -22
- package/dist/src/types/json.js +0 -11
- package/dist/src/types/typecheck.d.ts +0 -51
- package/dist/src/types/typecheck.js +0 -14
- package/dist/src/utils/assert.d.ts +0 -34
- package/dist/src/utils/assert.js +0 -61
- package/dist/src/utils/build-info.d.ts +0 -30
- package/dist/src/utils/build-info.js +0 -99
- package/dist/src/utils/child-env.d.ts +0 -28
- package/dist/src/utils/child-env.js +0 -27
- package/dist/src/utils/concurrency.d.ts +0 -8
- package/dist/src/utils/concurrency.js +0 -32
- package/dist/src/utils/elapsed.d.ts +0 -2
- package/dist/src/utils/elapsed.js +0 -23
- package/dist/src/utils/errors.d.ts +0 -39
- package/dist/src/utils/errors.js +0 -67
- package/dist/src/utils/fs.d.ts +0 -113
- package/dist/src/utils/fs.js +0 -337
- package/dist/src/utils/hash.d.ts +0 -12
- package/dist/src/utils/hash.js +0 -16
- package/dist/src/utils/line-dispatch.d.ts +0 -15
- package/dist/src/utils/line-dispatch.js +0 -48
- package/dist/src/utils/logger.d.ts +0 -109
- package/dist/src/utils/logger.js +0 -270
- package/dist/src/utils/machine-output.d.ts +0 -12
- package/dist/src/utils/machine-output.js +0 -33
- package/dist/src/utils/options.d.ts +0 -155
- package/dist/src/utils/options.js +0 -312
- package/dist/src/utils/package-root.d.ts +0 -21
- package/dist/src/utils/package-root.js +0 -70
- package/dist/src/utils/parse.d.ts +0 -117
- package/dist/src/utils/parse.js +0 -214
- package/dist/src/utils/path-glob.d.ts +0 -15
- package/dist/src/utils/path-glob.js +0 -47
- package/dist/src/utils/paths.d.ts +0 -31
- package/dist/src/utils/paths.js +0 -80
- package/dist/src/utils/platform.d.ts +0 -9
- package/dist/src/utils/platform.js +0 -14
- package/dist/src/utils/process-group.d.ts +0 -42
- package/dist/src/utils/process-group.js +0 -190
- package/dist/src/utils/process-input.d.ts +0 -27
- package/dist/src/utils/process-input.js +0 -46
- package/dist/src/utils/process.d.ts +0 -293
- package/dist/src/utils/process.js +0 -593
- package/dist/src/utils/ps-duration.d.ts +0 -31
- package/dist/src/utils/ps-duration.js +0 -70
- package/dist/src/utils/regex.d.ts +0 -39
- package/dist/src/utils/regex.js +0 -109
- package/dist/src/utils/sleep.d.ts +0 -25
- package/dist/src/utils/sleep.js +0 -30
- package/dist/src/utils/stdio-drain.d.ts +0 -28
- package/dist/src/utils/stdio-drain.js +0 -54
- package/dist/src/utils/validation.d.ts +0 -182
- package/dist/src/utils/validation.js +0 -394
- package/docs/lifecycle-invariants.md +0 -523
- package/docs/run-logs.md +0 -122
- package/docs/verification-trees.md +0 -49
- /package/dist/src/{types/cli.js → cli/context.js} +0 -0
|
@@ -1,780 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
/**
|
|
3
|
-
* Harness-crash classification for `fireforge test`.
|
|
4
|
-
*
|
|
5
|
-
* The wrapped mach harness exhibits flaky non-test failures that an exit
|
|
6
|
-
* code (or a "did it print a summary" grep) cannot distinguish from real
|
|
7
|
-
* test results:
|
|
8
|
-
*
|
|
9
|
-
* - startup crashes from the mozlog resource monitor on macOS
|
|
10
|
-
* (`AttributeError: 'SystemResourceMonitor' object has no attribute
|
|
11
|
-
* 'poll_interval'`, `host_statistics64(HOST_VM_INFO64) syscall failed`,
|
|
12
|
-
* `(ipc/mig) array not large enough`, a psutil/macOS mismatch) which
|
|
13
|
-
* abort the run before any test executes.
|
|
14
|
-
* - hangs after browser startup that die at the no-output timeout yet still
|
|
15
|
-
* emit a `Passed: 0` summary.
|
|
16
|
-
* - post-green shutdown re-entry, where a fully green run stalls on "must
|
|
17
|
-
* wait for focus" and records "Application shut down (without crashing)
|
|
18
|
-
* in the middle of a test!" as the only unexpected failure.
|
|
19
|
-
*
|
|
20
|
-
* Classification therefore keys on `TEST-START` presence, so summary lines
|
|
21
|
-
* never count as proof that tests ran, and recognizes the crash shapes
|
|
22
|
-
* above so the command layer can retry them with a bounded budget instead of
|
|
23
|
-
* reporting phantom test failures (or phantom passes).
|
|
24
|
-
*/
|
|
25
|
-
import { hasKnownTeardownNoise } from './mach-known-noise-filter.js';
|
|
26
|
-
import { detectServerStartupFailure } from './test-harness-infra.js';
|
|
27
|
-
import { truncateEvidence, unmarkedFailureEvidenceNote, } from './test-harness-verdict-notes.js';
|
|
28
|
-
import { classifyProfileArgumentFailure } from './test-profile-files.js';
|
|
29
|
-
import { formatIncompleteSuffix, formatShardsSuffix, } from './test-harness-signature.js';
|
|
30
|
-
// The operator message after exhausted retries lives beside the
|
|
31
|
-
// server-startup shape in `test-harness-infra.ts`.
|
|
32
|
-
export { buildHarnessCrashMessage } from './test-harness-infra.js';
|
|
33
|
-
// The no-output-stall triage text lives in `test-stall-triage.ts` (it is
|
|
34
|
-
// operator advice, not classification) and is re-exported here so the
|
|
35
|
-
// command layer keeps importing its harness diagnostics from one module.
|
|
36
|
-
export { headedDisplayAsleepVerdictNote, headedNoOutputTimeoutHint } from './test-stall-triage.js';
|
|
37
|
-
const TEST_START_PATTERN = /\bTEST-START\b/;
|
|
38
|
-
/**
|
|
39
|
-
* Structured-log execution marker (`mach xpcshell-test` mozlog output uses
|
|
40
|
-
* `TEST_START`/`SUITE_END` with underscores, not the hyphenated
|
|
41
|
-
* `TEST-START` the browser-chrome dispatch prints).
|
|
42
|
-
*/
|
|
43
|
-
const STRUCTURED_TEST_START_PATTERN = /\bTEST_START\b/;
|
|
44
|
-
const SUITE_END_PATTERN = /\bSUITE_END\b/;
|
|
45
|
-
const GREEN_UNEXPECTED_SUMMARY_PATTERN = /\bUnexpected results:\s*0\b/;
|
|
46
|
-
const NONZERO_UNEXPECTED_SUMMARY_PATTERN = /\bUnexpected results:\s*[1-9]/;
|
|
47
|
-
/**
|
|
48
|
-
* Execution signals emitted by the suite-specific xpcshell dispatch
|
|
49
|
-
* (`mach xpcshell-test`), which does not print `TEST-START` lines the way
|
|
50
|
-
* the generic `mach test` / browser-chrome dispatch does. A passing
|
|
51
|
-
* single-file xpcshell run prints a result-summary block instead
|
|
52
|
-
* (`TEST_END: Test PASS`, `Ran 16 checks`, `Unexpected results: 0`), so
|
|
53
|
-
* keying execution purely on `TEST-START` mis-reads a green xpcshell run as
|
|
54
|
-
* "no tests started".
|
|
55
|
-
*
|
|
56
|
-
* These markers are xpcshell-specific on purpose: the bare `Passed: 0` /
|
|
57
|
-
* `Failed: 0` summary that the no-output hang shape prints is deliberately
|
|
58
|
-
* not matched here, because that case must still read as `no-tests`.
|
|
59
|
-
*/
|
|
60
|
-
const XPCSHELL_RESULT_SUMMARY_PATTERN = /\bTEST_END\b|\bRan \d+ checks?\b|\bResult summary:/i;
|
|
61
|
-
const UNEXPECTED_LINE_PATTERN = /^.*\bTEST-UNEXPECTED-[A-Z-]+\b.*$/gm;
|
|
62
|
-
/**
|
|
63
|
-
* A `FAIL` token that is harness-shaped. Not a bare `\bFAIL\b`
|
|
64
|
-
* word match: that matched any output line containing the ordinary English
|
|
65
|
-
* word, so a test's own passing diagnostic could manufacture a red run (see
|
|
66
|
-
* {@link realUnexpectedFailureLines}). It also matched `TEST-KNOWN-FAIL`,
|
|
67
|
-
* an expected failure, and counted it as a real one.
|
|
68
|
-
*
|
|
69
|
-
* The `TEST-` prefix is what makes the token the harness's rather than
|
|
70
|
-
* prose, and the negative lookahead is what keeps a known-fail annotation
|
|
71
|
-
* out of the evidence set.
|
|
72
|
-
*/
|
|
73
|
-
const FAIL_LINE_PATTERN = /^.*\bTEST-(?!KNOWN-FAIL\b)[A-Z-]*FAIL\b.*$/gm;
|
|
74
|
-
/**
|
|
75
|
-
* The three concrete shapes Gecko prints for a real assertion failure.
|
|
76
|
-
* Case-sensitive and punctuation-anchored on purpose: the previous
|
|
77
|
-
* `/\b(?:Assertion failure|MOZ_ASSERT|ASSERTION)\b/gim` was
|
|
78
|
-
* case-insensitive, so the ordinary English word "assertion" in a passing
|
|
79
|
-
* diagnostic ("If an assertion below times out, this is why") was read as
|
|
80
|
-
* a failure, and the verdict then named that diagnostic as the first real
|
|
81
|
-
* test failure, pointing the reader at the wrong line.
|
|
82
|
-
*/
|
|
83
|
-
const ASSERTION_LINE_PATTERN = /^.*(?:Assertion failure:|MOZ_ASSERT\(|###!!! ASSERTION).*$/gm;
|
|
84
|
-
export const SHUTDOWN_REENTRY_PATTERN = /Application shut down \(without crashing\) in the middle of a test/i;
|
|
85
|
-
const FOCUS_STALL_PATTERN = /must wait for focus/i;
|
|
86
|
-
const TRACEBACK_PATTERN = /Traceback \(most recent call last\)/;
|
|
87
|
-
const NO_OUTPUT_TIMEOUT_PATTERN = /timed out after \d+ seconds with no output/i;
|
|
88
|
-
/**
|
|
89
|
-
* Crash-marker lines mozcrash / the mochitest harness print when the browser
|
|
90
|
-
* process itself died. Matched against the raw output (never noise-stripped):
|
|
91
|
-
* any of these proves the run was truncated by a crash, so an embedded green
|
|
92
|
-
* summary is under-reporting, not a result. `Main app process: killed by
|
|
93
|
-
* SIGSEGV` at the second of eight files with a `Passed: 2 / Failed: 0`
|
|
94
|
-
* summary is the shape this exists to catch.
|
|
95
|
-
*/
|
|
96
|
-
const CRASH_MARKER_PATTERNS = [
|
|
97
|
-
/Main app process: killed by SIG\w+/,
|
|
98
|
-
/\bPROCESS-CRASH\b/,
|
|
99
|
-
// The minidump-processing header shapes mozcrash emits when it walks a
|
|
100
|
-
// crash dump after the run.
|
|
101
|
-
/mozcrash.*minidump/i,
|
|
102
|
-
/Crash dump filename/i,
|
|
103
|
-
/Thread \d+ \(crashed\)/,
|
|
104
|
-
];
|
|
105
|
-
/**
|
|
106
|
-
* Startup-traceback fingerprints from the mozlog resource monitor / psutil
|
|
107
|
-
* on macOS. Each is matched per-line so the evidence line in the report is
|
|
108
|
-
* the concrete failure, not the whole traceback.
|
|
109
|
-
*/
|
|
110
|
-
// A `_DegradedReading` fallback that is not a real namedtuple duck type
|
|
111
|
-
// crashes mozsystemmonitor on the fallback itself (`_build_meta` subscripts
|
|
112
|
-
// the reading, `_collect` unpacks it). A startup abort with zero TEST-START
|
|
113
|
-
// lines from this family is a crash, not a test failure. The `_collect
|
|
114
|
-
// failed` variant is caught-and-logged, so it carries no Traceback header.
|
|
115
|
-
// It gets its own zero-TEST-START check in `detectHarnessCrashSignature`
|
|
116
|
-
// besides joining the traceback cluster.
|
|
117
|
-
const DEGRADED_READING_CRASH_SIGNALS = [
|
|
118
|
-
/'_DegradedReading' object is not subscriptable/,
|
|
119
|
-
/'_DegradedReading' object is not iterable/,
|
|
120
|
-
];
|
|
121
|
-
const STARTUP_TRACEBACK_SIGNALS = [
|
|
122
|
-
/AttributeError:.*SystemResourceMonitor/,
|
|
123
|
-
/'SystemResourceMonitor' object has no attribute/,
|
|
124
|
-
/poll_interval/,
|
|
125
|
-
/host_statistics64/,
|
|
126
|
-
/HOST_VM_INFO64/,
|
|
127
|
-
/\(ipc\/mig\) array not large enough/,
|
|
128
|
-
/psutil\.[A-Za-z]*Error/,
|
|
129
|
-
// On a degraded host every collector sample is rejected, aggregation has
|
|
130
|
-
// nothing, and mozbuild's log_resource_usage dies on
|
|
131
|
-
// usage["io"].read_bytes AFTER a fully successful compile ("Error running
|
|
132
|
-
// mach" with complete artifacts). Environmental, not a build regression:
|
|
133
|
-
// the protected build retries it, since an incremental retry is cheap and
|
|
134
|
-
// the guard keeps the retry green.
|
|
135
|
-
/AttributeError: 'NoneType' object has no attribute 'read_bytes'/,
|
|
136
|
-
...DEGRADED_READING_CRASH_SIGNALS,
|
|
137
|
-
];
|
|
138
|
-
function findLine(output, patterns) {
|
|
139
|
-
for (const line of output.split(/\r?\n/)) {
|
|
140
|
-
if (patterns.some((p) => p.test(line)))
|
|
141
|
-
return line.trim();
|
|
142
|
-
}
|
|
143
|
-
return undefined;
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Non-signal noise lines: the resource-monitor degrade path (FireForge's own
|
|
147
|
-
* guard plus mozlog's `_collect failed`) prints warnings on runs that then
|
|
148
|
-
* complete green. Without excluding them, every multi-file suite reports
|
|
149
|
-
* CRASH because these lines match the startup-traceback signals even though
|
|
150
|
-
* the embedded summary is fully green.
|
|
151
|
-
*/
|
|
152
|
-
const NOISE_LINE_PATTERNS = [
|
|
153
|
-
/\bUserWarning\b/,
|
|
154
|
-
/psutil failed to run/i,
|
|
155
|
-
// `_collect failed` chatter is noise on green runs, EXCEPT the
|
|
156
|
-
// `_DegradedReading` variant: that is the crash evidence for the
|
|
157
|
-
// "object is not iterable" startup-abort signature above and must
|
|
158
|
-
// survive stripNonSignalNoise.
|
|
159
|
-
/_collect failed(?!.*_DegradedReading)/i,
|
|
160
|
-
/FireForge: host resource monitor degraded/i,
|
|
161
|
-
/warnings\.warn\(/,
|
|
162
|
-
// mozsystemmonitor's parent-side drain loop rejecting a malformed sample.
|
|
163
|
-
// mach sometimes reprints the warning text without the `UserWarning:`
|
|
164
|
-
// token, and a run that completes despite the stream must never classify
|
|
165
|
-
// as crash on it.
|
|
166
|
-
/failed to read the received data/i,
|
|
167
|
-
];
|
|
168
|
-
/** Matches the caught/telemetry context that marks a traceback as benign. */
|
|
169
|
-
const BENIGN_TRACEBACK_CONTEXT = /telemetry|glean/i;
|
|
170
|
-
/**
|
|
171
|
-
* Strips non-signal noise from captured output before crash-signature
|
|
172
|
-
* matching: resource-monitor degradation warnings, and traceback blocks
|
|
173
|
-
* that mach caught itself (telemetry submission tracebacks are printed but
|
|
174
|
-
* never abort the run). The stripped text is used only as crash evidence.
|
|
175
|
-
* Classification of test results still reads the full output.
|
|
176
|
-
*/
|
|
177
|
-
export function stripNonSignalNoise(output) {
|
|
178
|
-
const lines = output.split(/\r?\n/);
|
|
179
|
-
const kept = [];
|
|
180
|
-
for (let i = 0; i < lines.length; i += 1) {
|
|
181
|
-
const line = lines[i] ?? '';
|
|
182
|
-
if (NOISE_LINE_PATTERNS.some((p) => p.test(line)))
|
|
183
|
-
continue;
|
|
184
|
-
if (TRACEBACK_PATTERN.test(line)) {
|
|
185
|
-
// Collect the whole traceback block: the header, indented frame/code
|
|
186
|
-
// lines, and the trailing unindented exception line.
|
|
187
|
-
const block = [line];
|
|
188
|
-
let j = i + 1;
|
|
189
|
-
for (; j < lines.length; j += 1) {
|
|
190
|
-
const blockLine = lines[j] ?? '';
|
|
191
|
-
block.push(blockLine);
|
|
192
|
-
const isIndented = /^\s/.test(blockLine) || blockLine.trim().length === 0;
|
|
193
|
-
if (!isIndented)
|
|
194
|
-
break; // unindented exception line terminates the block
|
|
195
|
-
}
|
|
196
|
-
if (BENIGN_TRACEBACK_CONTEXT.test(block.join('\n'))) {
|
|
197
|
-
i = j; // drop the whole caught-telemetry traceback block
|
|
198
|
-
continue;
|
|
199
|
-
}
|
|
200
|
-
// A real traceback stays in evidence line-by-line (minus noise lines
|
|
201
|
-
// already filtered above).
|
|
202
|
-
}
|
|
203
|
-
kept.push(line);
|
|
204
|
-
}
|
|
205
|
-
return kept.join('\n');
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* True when the output carries any execution signal: the browser-chrome
|
|
209
|
-
* `TEST-START` marker, the structured-log `TEST_START` marker, or the
|
|
210
|
-
* suite-specific xpcshell result-summary block.
|
|
211
|
-
*/
|
|
212
|
-
function hasExecutionSignal(output) {
|
|
213
|
-
return (TEST_START_PATTERN.test(output) ||
|
|
214
|
-
STRUCTURED_TEST_START_PATTERN.test(output) ||
|
|
215
|
-
hasXpcshellResultSummary(output));
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Finds the first crash-marker line in the RAW output (see
|
|
219
|
-
* {@link CRASH_MARKER_PATTERNS}), or undefined when the run shows no
|
|
220
|
-
* crash evidence. Exported for direct unit testing.
|
|
221
|
-
*/
|
|
222
|
-
export function findCrashMarkerLine(output) {
|
|
223
|
-
return findLine(output, CRASH_MARKER_PATTERNS);
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* True when the summary lines LOOK green: execution signal, `Unexpected
|
|
227
|
-
* results: 0` with no non-zero count, `SUITE_END`, no real
|
|
228
|
-
* `TEST-UNEXPECTED-*` lines. Blind to crash/truncation
|
|
229
|
-
* evidence: {@link hasCompletedGreenSummary} layers that on top, and
|
|
230
|
-
* {@link classifyHarnessRun} needs the distinction to report why a
|
|
231
|
-
* green-shaped summary was rejected.
|
|
232
|
-
*/
|
|
233
|
-
function hasGreenShapedSummary(output) {
|
|
234
|
-
return (hasExecutionSignal(output) &&
|
|
235
|
-
SUITE_END_PATTERN.test(output) &&
|
|
236
|
-
GREEN_UNEXPECTED_SUMMARY_PATTERN.test(output) &&
|
|
237
|
-
!NONZERO_UNEXPECTED_SUMMARY_PATTERN.test(output) &&
|
|
238
|
-
realUnexpectedFailureLines(output).length === 0);
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* True when the output embeds a completed, green suite summary: an execution
|
|
242
|
-
* signal, `Unexpected results: 0` (and no non-zero unexpected count), a
|
|
243
|
-
* `SUITE_END` marker, no real `TEST-UNEXPECTED-*` lines, and no crash
|
|
244
|
-
* marker. Such a run finished its suite, so any startup-traceback-shaped
|
|
245
|
-
* noise in the same output is non-fatal and this vetoes
|
|
246
|
-
* signature-based crash classification. Without the veto, fully green
|
|
247
|
-
* sharded runs report `CRASH (N attempts)` because degradation warnings
|
|
248
|
-
* match the psutil signals. A summary printed after a crash marker is not
|
|
249
|
-
* "completed": it only covers the files that ran before the crash.
|
|
250
|
-
* Exported for direct unit testing.
|
|
251
|
-
*/
|
|
252
|
-
export function hasCompletedGreenSummary(output) {
|
|
253
|
-
return hasGreenShapedSummary(output) && findCrashMarkerLine(output) === undefined;
|
|
254
|
-
}
|
|
255
|
-
/** Basename shape of a mozbuild-manifest test implementation file. */
|
|
256
|
-
export const TEST_FILE_BASENAME_PATTERN = /^(?:browser|test)_.*\.m?js$/;
|
|
257
|
-
/**
|
|
258
|
-
* Start/end execution markers, both log dialects: the structured mozlog
|
|
259
|
-
* `TEST_START`/`TEST_END` pair and the human browser-chrome
|
|
260
|
-
* `TEST-START`/`TEST-OK` pair. `TEST-UNEXPECTED-*` end shapes are
|
|
261
|
-
* irrelevant here, since any such line already fails the green-summary check
|
|
262
|
-
* before completeness is consulted.
|
|
263
|
-
*/
|
|
264
|
-
export const START_MARKER_PATTERN = /\bTEST[-_]START\b[:| ]*\s*(\S+)?/;
|
|
265
|
-
const END_MARKER_PATTERN = /\bTEST[-_]END\b|\bTEST-OK\b/;
|
|
266
|
-
/**
|
|
267
|
-
* Cross-checks run completeness against the requested test files: every
|
|
268
|
-
* requested file must produce a start marker, and every started test must
|
|
269
|
-
* produce an end marker (the harness emits both even for failing files).
|
|
270
|
-
*
|
|
271
|
-
* Ends are paired with starts positionally (last open start is closed by
|
|
272
|
-
* the next end), not by filename: the xpcshell dialect's `TEST_END: Test
|
|
273
|
-
* PASS` lines do not name the file. Requested paths that are not
|
|
274
|
-
* test-file-shaped (directories, manifests) are skipped for the
|
|
275
|
-
* never-started check. The start/end pairing scan covers them regardless.
|
|
276
|
-
* Exported for direct unit testing.
|
|
277
|
-
*/
|
|
278
|
-
export function analyzeTestCompleteness(output, requestedPaths) {
|
|
279
|
-
const startedNames = [];
|
|
280
|
-
const openTests = [];
|
|
281
|
-
for (const line of output.split(/\r?\n/)) {
|
|
282
|
-
const startMatch = START_MARKER_PATTERN.exec(line);
|
|
283
|
-
if (startMatch) {
|
|
284
|
-
const name = startMatch[1] ?? '(unnamed test)';
|
|
285
|
-
startedNames.push(name);
|
|
286
|
-
openTests.push(name);
|
|
287
|
-
continue;
|
|
288
|
-
}
|
|
289
|
-
if (END_MARKER_PATTERN.test(line)) {
|
|
290
|
-
openTests.pop();
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
const neverStarted = requestedPaths.filter((path) => {
|
|
294
|
-
const base = path.slice(path.lastIndexOf('/') + 1);
|
|
295
|
-
if (!TEST_FILE_BASENAME_PATTERN.test(base))
|
|
296
|
-
return false;
|
|
297
|
-
return !startedNames.some((name) => name.includes(base));
|
|
298
|
-
});
|
|
299
|
-
return { neverStarted, neverEnded: openTests };
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* True when the captured output carries the suite-specific xpcshell
|
|
303
|
-
* result-summary block, which proves tests executed even though the
|
|
304
|
-
* xpcshell dispatch emits no `TEST-START` line. Used alongside
|
|
305
|
-
* `TEST_START_PATTERN` so a green single-file xpcshell run is not
|
|
306
|
-
* mis-classified as `no-tests`. Exported for direct unit testing.
|
|
307
|
-
*/
|
|
308
|
-
function hasXpcshellResultSummary(output) {
|
|
309
|
-
return XPCSHELL_RESULT_SUMMARY_PATTERN.test(output);
|
|
310
|
-
}
|
|
311
|
-
/** Unexpected-failure lines that are not the shutdown re-entry artifact. */
|
|
312
|
-
function realUnexpectedFailureLines(output) {
|
|
313
|
-
const matches = [
|
|
314
|
-
...(output.match(UNEXPECTED_LINE_PATTERN) ?? []),
|
|
315
|
-
...(output.match(FAIL_LINE_PATTERN) ?? []),
|
|
316
|
-
...(output.match(ASSERTION_LINE_PATTERN) ?? []),
|
|
317
|
-
];
|
|
318
|
-
if (NONZERO_UNEXPECTED_SUMMARY_PATTERN.test(output)) {
|
|
319
|
-
const summary = output
|
|
320
|
-
.split(/\r?\n/)
|
|
321
|
-
.find((line) => NONZERO_UNEXPECTED_SUMMARY_PATTERN.test(line));
|
|
322
|
-
if (summary)
|
|
323
|
-
matches.push(summary);
|
|
324
|
-
}
|
|
325
|
-
return [...new Set(matches.map((line) => line.trim()))].filter((line) => !SHUTDOWN_REENTRY_PATTERN.test(line));
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
* Non-global copies of the unexpected/assertion patterns for per-line use.
|
|
329
|
-
* The `g`-flagged module patterns carry `lastIndex` state across `.test()`
|
|
330
|
-
* calls and must never be reused line-by-line.
|
|
331
|
-
*/
|
|
332
|
-
const UNEXPECTED_LINE_SINGLE = /\bTEST-UNEXPECTED-[A-Z-]+\b/;
|
|
333
|
-
/**
|
|
334
|
-
* Context lines the chrome/xpcshell harnesses print directly under a
|
|
335
|
-
* TEST-UNEXPECTED line: `Got …` / `Expected …` / `Actual …`, Assert
|
|
336
|
-
* messages, diff markers, stack-trace heads, and indented continuation
|
|
337
|
-
* lines.
|
|
338
|
-
*/
|
|
339
|
-
const FAILURE_CONTEXT_LINE_PATTERN = /^(?:\s*(?:Got\b|Expected\b|Actual\b|Assert\w*\b|Stack trace:|[-+]\s)|\s{2,}\S)/;
|
|
340
|
-
/** Cap on context lines echoed under a single TEST-UNEXPECTED line. */
|
|
341
|
-
const FAILURE_BLOCK_CONTEXT_LIMIT = 6;
|
|
342
|
-
/**
|
|
343
|
-
* Collects the first `limit` TEST-UNEXPECTED-* lines with their trailing
|
|
344
|
-
* assertion/diff context, one string per block. The shutdown-reentry
|
|
345
|
-
* artifact is excluded (it is harness noise, not a test result). When more
|
|
346
|
-
* than `limit` blocks exist, a final `…(+N more …)` note is appended so the
|
|
347
|
-
* operator knows the echo was truncated. Pure. Exported for unit tests.
|
|
348
|
-
*/
|
|
349
|
-
export function collectUnexpectedFailureBlocks(output, limit = 5) {
|
|
350
|
-
const lines = output.split(/\r?\n/);
|
|
351
|
-
const blocks = [];
|
|
352
|
-
let skipped = 0;
|
|
353
|
-
for (let i = 0; i < lines.length; i++) {
|
|
354
|
-
const line = lines[i] ?? '';
|
|
355
|
-
if (!UNEXPECTED_LINE_SINGLE.test(line) || SHUTDOWN_REENTRY_PATTERN.test(line))
|
|
356
|
-
continue;
|
|
357
|
-
if (blocks.length >= limit) {
|
|
358
|
-
skipped++;
|
|
359
|
-
continue;
|
|
360
|
-
}
|
|
361
|
-
const block = [line.trim()];
|
|
362
|
-
let contextCount = 0;
|
|
363
|
-
for (let j = i + 1; j < lines.length && contextCount < FAILURE_BLOCK_CONTEXT_LIMIT; j++) {
|
|
364
|
-
const next = lines[j] ?? '';
|
|
365
|
-
if (UNEXPECTED_LINE_SINGLE.test(next))
|
|
366
|
-
break;
|
|
367
|
-
if (!FAILURE_CONTEXT_LINE_PATTERN.test(next))
|
|
368
|
-
break;
|
|
369
|
-
block.push(next.trimEnd());
|
|
370
|
-
contextCount++;
|
|
371
|
-
}
|
|
372
|
-
blocks.push(block.join('\n'));
|
|
373
|
-
}
|
|
374
|
-
if (skipped > 0) {
|
|
375
|
-
blocks.push(`…(+${skipped} more TEST-UNEXPECTED line${skipped === 1 ? '' : 's'} not shown)`);
|
|
376
|
-
}
|
|
377
|
-
return blocks;
|
|
378
|
-
}
|
|
379
|
-
function detectSecondaryHarnessNoise(output) {
|
|
380
|
-
const evidence = stripNonSignalNoise(output);
|
|
381
|
-
if (TRACEBACK_PATTERN.test(evidence)) {
|
|
382
|
-
const signalLine = findLine(evidence, STARTUP_TRACEBACK_SIGNALS);
|
|
383
|
-
if (signalLine) {
|
|
384
|
-
return {
|
|
385
|
-
reason: 'harness traceback also present (resource monitor/psutil)',
|
|
386
|
-
line: signalLine,
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
const timeoutLine = findLine(evidence, [NO_OUTPUT_TIMEOUT_PATTERN]);
|
|
391
|
-
if (timeoutLine) {
|
|
392
|
-
return { reason: 'harness no-output timeout also present', line: timeoutLine };
|
|
393
|
-
}
|
|
394
|
-
return undefined;
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* Detects the known harness-crash shapes in captured mach output.
|
|
398
|
-
* Returns undefined for anything that looks like a genuine test result.
|
|
399
|
-
*/
|
|
400
|
-
export function detectHarnessCrashSignature(output) {
|
|
401
|
-
// Browser/app process crashes are deterministic crash evidence, not
|
|
402
|
-
// retriable environmental harness noise. Leave them to
|
|
403
|
-
// `classifyHarnessRun` so it can reject green-looking truncated summaries
|
|
404
|
-
// with the crash line plus never-started/never-ended file evidence.
|
|
405
|
-
if (findCrashMarkerLine(output) !== undefined) {
|
|
406
|
-
return undefined;
|
|
407
|
-
}
|
|
408
|
-
const hasTestStart = hasExecutionSignal(output);
|
|
409
|
-
const realFailures = realUnexpectedFailureLines(output);
|
|
410
|
-
// A completed green embedded summary vetoes signature-based crash
|
|
411
|
-
// classification outright: the suite finished, so any startup-shaped
|
|
412
|
-
// noise in the same output was non-fatal. (The post-green shutdown
|
|
413
|
-
// re-entry shape below is exempt: it is a crash verdict on
|
|
414
|
-
// an otherwise-green log, keyed on its own explicit markers.)
|
|
415
|
-
const greenSummaryVeto = hasCompletedGreenSummary(output);
|
|
416
|
-
// Startup traceback cluster (resource monitor / psutil), scanned over
|
|
417
|
-
// noise-stripped evidence so degradation warnings and caught telemetry
|
|
418
|
-
// tracebacks never count. Real test failures take precedence: a
|
|
419
|
-
// traceback printed during teardown of a genuinely failing run must not
|
|
420
|
-
// get the whole run retried.
|
|
421
|
-
const evidence = stripNonSignalNoise(output);
|
|
422
|
-
if (!greenSummaryVeto && TRACEBACK_PATTERN.test(evidence) && realFailures.length === 0) {
|
|
423
|
-
const signalLine = findLine(evidence, STARTUP_TRACEBACK_SIGNALS);
|
|
424
|
-
if (signalLine) {
|
|
425
|
-
return { reason: 'harness startup traceback (resource monitor/psutil)', line: signalLine };
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
// Post-browser-startup hang: no test ever started, the harness died at
|
|
429
|
-
// the no-output timeout. A trailing "Passed: 0" summary is part of this
|
|
430
|
-
// shape and must not be read as a result.
|
|
431
|
-
if (!hasTestStart) {
|
|
432
|
-
// Startup abort on the degraded-reading fallback family: the `_collect
|
|
433
|
-
// failed: '_DegradedReading' ...` variant is caught-and-logged (no
|
|
434
|
-
// Traceback header), so the traceback cluster above never sees it.
|
|
435
|
-
if (realFailures.length === 0) {
|
|
436
|
-
const degradedLine = findLine(evidence, DEGRADED_READING_CRASH_SIGNALS);
|
|
437
|
-
if (degradedLine) {
|
|
438
|
-
return {
|
|
439
|
-
reason: 'degraded resource reading crashed the harness fallback (_DegradedReading)',
|
|
440
|
-
line: degradedLine,
|
|
441
|
-
};
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
const timeoutLine = findLine(evidence, [NO_OUTPUT_TIMEOUT_PATTERN]);
|
|
445
|
-
if (timeoutLine) {
|
|
446
|
-
return { reason: 'no-output timeout before any test started', line: timeoutLine };
|
|
447
|
-
}
|
|
448
|
-
return undefined;
|
|
449
|
-
}
|
|
450
|
-
// Post-green shutdown re-entry: every unexpected line is the
|
|
451
|
-
// shutdown-mid-test artifact, the run stalled on focus, and at least one
|
|
452
|
-
// such artifact exists, on an otherwise green log.
|
|
453
|
-
const shutdownLine = findLine(output, [SHUTDOWN_REENTRY_PATTERN]);
|
|
454
|
-
if (shutdownLine && realFailures.length === 0 && FOCUS_STALL_PATTERN.test(output)) {
|
|
455
|
-
return { reason: 'post-green shutdown re-entry during harness teardown', line: shutdownLine };
|
|
456
|
-
}
|
|
457
|
-
return undefined;
|
|
458
|
-
}
|
|
459
|
-
/**
|
|
460
|
-
* Classifies a completed harness run. The decision tree, in order:
|
|
461
|
-
*
|
|
462
|
-
* 1. A recognized crash signature wins regardless of exit code (the
|
|
463
|
-
* shutdown re-entry shape exits non-zero on an otherwise green run,
|
|
464
|
-
* and the hang shape can even exit zero with a `Passed: 0` summary).
|
|
465
|
-
* 2. No execution signal with explicit paths requested means no test ran.
|
|
466
|
-
* A mochitest server that failed to start explains that, and is a
|
|
467
|
-
* retriable infrastructure failure (`harness-crash` with
|
|
468
|
-
* `reason=server-startup` on the verdict line). Otherwise it is
|
|
469
|
-
* `no-tests`, even when the exit code is zero. The execution signal is
|
|
470
|
-
* a `TEST-START` line (generic `mach test` / browser-chrome dispatch)
|
|
471
|
-
* or the suite-specific xpcshell result-summary block (the xpcshell
|
|
472
|
-
* dispatch prints no `TEST-START`). Bare `Passed:`/`Failed:` summary
|
|
473
|
-
* lines are still not trusted as evidence of execution.
|
|
474
|
-
* 3. Exit code zero with tests started is a pass. Anything else is a
|
|
475
|
-
* test failure for the regular diagnosis chain, except a non-zero
|
|
476
|
-
* exit whose embedded summary completed green and shows no crash
|
|
477
|
-
* marker and no truncated/never-started requested file, which is a
|
|
478
|
-
* pass with a `greenSummaryOverride` note (harness noise owns the
|
|
479
|
-
* exit code). A green-shaped summary with such evidence is rejected
|
|
480
|
-
* (`greenSummaryRejected`) and fails.
|
|
481
|
-
*/
|
|
482
|
-
export function classifyHarnessRun(exitCode, output, requestedPaths) {
|
|
483
|
-
const counts = extractSummaryCounts(output);
|
|
484
|
-
const profileFailure = classifyProfileArgumentFailure(output);
|
|
485
|
-
if (profileFailure)
|
|
486
|
-
return { ...profileFailure, ...counts };
|
|
487
|
-
const realFailures = realUnexpectedFailureLines(output);
|
|
488
|
-
const firstRealFailure = realFailures[0];
|
|
489
|
-
const failureBlocks = collectUnexpectedFailureBlocks(output);
|
|
490
|
-
const secondaryHarnessSignature = firstRealFailure !== undefined ? detectSecondaryHarnessNoise(output) : undefined;
|
|
491
|
-
// Checked before signature detection: a suite that ran clean and then died
|
|
492
|
-
// in known upstream teardown noise is a pass, not a crash. The teardown
|
|
493
|
-
// traceback matches the startup-traceback cluster, and the green-summary
|
|
494
|
-
// veto over that cluster requires a `SUITE_END` marker, which this very
|
|
495
|
-
// traceback is what prevents from printing. Without this check a
|
|
496
|
-
// substantively green suite (`Ran N checks` / `Unexpected results: 0`, no
|
|
497
|
-
// unexpected lines) reports CRASH, indistinguishable at the summary level
|
|
498
|
-
// from a red run. Every hard-evidence veto still applies: a crash marker,
|
|
499
|
-
// a non-zero unexpected count, any real TEST-UNEXPECTED line, the
|
|
500
|
-
// shutdown-re-entry shape, or a requested file that never started keeps
|
|
501
|
-
// the run failing. Only the missing shutdown marker is forgiven, and only
|
|
502
|
-
// when the recognized teardown traceback explains it.
|
|
503
|
-
const teardownOverride = evaluateGreenTeardownOverride(output, counts, realFailures, requestedPaths);
|
|
504
|
-
if (teardownOverride.accepted) {
|
|
505
|
-
return { kind: 'tests-ran-ok', note: 'harness teardown noise ignored', ...counts };
|
|
506
|
-
}
|
|
507
|
-
// A run that carried the recognized teardown noise and still failed says
|
|
508
|
-
// WHICH condition rejected the override, on the one greppable line.
|
|
509
|
-
const teardownNote = teardownOverride.rejectedBy !== undefined
|
|
510
|
-
? `green-teardown override rejected: ${teardownOverride.rejectedBy}`
|
|
511
|
-
: undefined;
|
|
512
|
-
const withNotes = (verdict, extra) => {
|
|
513
|
-
const notes = [teardownNote, extra].filter((n) => n !== undefined);
|
|
514
|
-
return notes.length > 0 ? { ...verdict, note: notes.join('; ') } : verdict;
|
|
515
|
-
};
|
|
516
|
-
const signature = detectHarnessCrashSignature(output);
|
|
517
|
-
if (signature) {
|
|
518
|
-
return withNotes({ kind: 'harness-crash', signature, ...counts });
|
|
519
|
-
}
|
|
520
|
-
const ranTests = hasExecutionSignal(output);
|
|
521
|
-
if (!ranTests && requestedPaths.length > 0) {
|
|
522
|
-
const serverStartup = detectServerStartupFailure(output);
|
|
523
|
-
return serverStartup === undefined
|
|
524
|
-
? { kind: 'no-tests', ...counts }
|
|
525
|
-
: { kind: 'harness-crash', signature: serverStartup, ...counts };
|
|
526
|
-
}
|
|
527
|
-
if (exitCode === 0) {
|
|
528
|
-
return { kind: 'tests-ran-ok', ...counts };
|
|
529
|
-
}
|
|
530
|
-
// Exit codes follow the corrected verdict: a run whose embedded summary
|
|
531
|
-
// completed green is a pass even when the wrapper exit code went non-zero
|
|
532
|
-
// on harness noise. Real failures always carry a non-zero unexpected count
|
|
533
|
-
// or TEST-UNEXPECTED lines, both of which fail the green-summary check.
|
|
534
|
-
//
|
|
535
|
-
// The override must never win over crash or truncation evidence: a SIGSEGV
|
|
536
|
-
// at the second of eight files produces a "green" `Passed: 2 / Failed: 0`
|
|
537
|
-
// summary and mach exit 1, green only because the crash prevented the
|
|
538
|
-
// other six files from producing any results. A crash marker or an
|
|
539
|
-
// unpaired/never-started requested file rejects the override with the
|
|
540
|
-
// evidence attached, so the caller can say why.
|
|
541
|
-
if (hasGreenShapedSummary(output)) {
|
|
542
|
-
const crashLine = findCrashMarkerLine(output);
|
|
543
|
-
const completeness = analyzeTestCompleteness(output, requestedPaths);
|
|
544
|
-
if (crashLine !== undefined ||
|
|
545
|
-
completeness.neverStarted.length > 0 ||
|
|
546
|
-
completeness.neverEnded.length > 0) {
|
|
547
|
-
return withNotes({
|
|
548
|
-
kind: 'test-failures',
|
|
549
|
-
...counts,
|
|
550
|
-
...(firstRealFailure !== undefined ? { realFailureLine: firstRealFailure } : {}),
|
|
551
|
-
...(failureBlocks.length > 0 ? { realFailureBlocks: failureBlocks } : {}),
|
|
552
|
-
...(secondaryHarnessSignature !== undefined ? { secondaryHarnessSignature } : {}),
|
|
553
|
-
greenSummaryRejected: {
|
|
554
|
-
...(crashLine !== undefined ? { crashLine } : {}),
|
|
555
|
-
neverStarted: completeness.neverStarted,
|
|
556
|
-
neverEnded: completeness.neverEnded,
|
|
557
|
-
},
|
|
558
|
-
});
|
|
559
|
-
}
|
|
560
|
-
return { kind: 'tests-ran-ok', greenSummaryOverride: true, ...counts };
|
|
561
|
-
}
|
|
562
|
-
const wordMatchNote = unmarkedFailureEvidenceNote(counts, realFailures);
|
|
563
|
-
return withNotes({
|
|
564
|
-
kind: 'test-failures',
|
|
565
|
-
...counts,
|
|
566
|
-
...(firstRealFailure !== undefined ? { realFailureLine: firstRealFailure } : {}),
|
|
567
|
-
...(failureBlocks.length > 0 ? { realFailureBlocks: failureBlocks } : {}),
|
|
568
|
-
...(secondaryHarnessSignature !== undefined ? { secondaryHarnessSignature } : {}),
|
|
569
|
-
}, wordMatchNote);
|
|
570
|
-
}
|
|
571
|
-
/**
|
|
572
|
-
* True when the capture shows a substantively GREEN suite whose only
|
|
573
|
-
* unexplained residue is the recognized mozsystemmonitor teardown
|
|
574
|
-
* traceback.
|
|
575
|
-
*
|
|
576
|
-
* Requires, all of them: tests actually executed, the summary printed
|
|
577
|
-
* `Ran N checks` with an explicit `Unexpected results: 0`, no non-zero
|
|
578
|
-
* unexpected count anywhere, no real `TEST-UNEXPECTED-*`/assertion line,
|
|
579
|
-
* no crash marker, every requested test file both started and ended, and
|
|
580
|
-
* the recognized teardown traceback is present. Anything short of that
|
|
581
|
-
* falls through to the normal (failing) chain, with the failing condition
|
|
582
|
-
* named, so the next occurrence is a filed bug rather than another
|
|
583
|
-
* undiagnosable re-run.
|
|
584
|
-
*
|
|
585
|
-
* The conditions are evaluated in a fixed order and the first failing one
|
|
586
|
-
* is reported. A run can violate several, and reporting one deterministic
|
|
587
|
-
* condition beats an unordered list of everything that happened to be true.
|
|
588
|
-
*/
|
|
589
|
-
function evaluateGreenTeardownOverride(output, counts, realFailures, requestedPaths) {
|
|
590
|
-
if (!hasKnownTeardownNoise(output))
|
|
591
|
-
return { accepted: false };
|
|
592
|
-
const reject = (rejectedBy) => ({ accepted: false, rejectedBy });
|
|
593
|
-
if (!hasExecutionSignal(output))
|
|
594
|
-
return reject('no execution signal (no TEST-START/TEST_START)');
|
|
595
|
-
if (counts.checks === undefined)
|
|
596
|
-
return reject('summary printed no "Ran N checks" line');
|
|
597
|
-
// `counts.unexpected === 0` IS the explicit-`Unexpected results: 0` test
|
|
598
|
-
// the previous revision spelled a second time with
|
|
599
|
-
// GREEN_UNEXPECTED_SUMMARY_PATTERN: the count is parsed from the same
|
|
600
|
-
// line and an absent line leaves it undefined. The two are kept apart in
|
|
601
|
-
// the message because "printed no such line" and "printed a non-zero one"
|
|
602
|
-
// are different findings for the reader.
|
|
603
|
-
if (counts.unexpected === undefined) {
|
|
604
|
-
return reject('summary printed no "Unexpected results:" line');
|
|
605
|
-
}
|
|
606
|
-
if (counts.unexpected !== 0) {
|
|
607
|
-
return reject(`summary reported unexpected=${counts.unexpected}`);
|
|
608
|
-
}
|
|
609
|
-
if (NONZERO_UNEXPECTED_SUMMARY_PATTERN.test(output)) {
|
|
610
|
-
return reject('a non-zero "Unexpected results:" line is present somewhere in the output');
|
|
611
|
-
}
|
|
612
|
-
if (realFailures.length > 0) {
|
|
613
|
-
return reject(`${realFailures.length} matched failure line(s), first: ${truncateEvidence(realFailures[0] ?? '')}`);
|
|
614
|
-
}
|
|
615
|
-
const crashLine = findCrashMarkerLine(output);
|
|
616
|
-
if (crashLine !== undefined)
|
|
617
|
-
return reject(`crash marker present: ${truncateEvidence(crashLine)}`);
|
|
618
|
-
// The post-green shutdown re-entry shape is deliberately a crash verdict
|
|
619
|
-
// on an otherwise-green log. It must not be swept up here.
|
|
620
|
-
if (SHUTDOWN_REENTRY_PATTERN.test(output)) {
|
|
621
|
-
return reject('post-green shutdown re-entry shape present');
|
|
622
|
-
}
|
|
623
|
-
const completeness = analyzeTestCompleteness(output, requestedPaths);
|
|
624
|
-
if (completeness.neverStarted.length > 0) {
|
|
625
|
-
return reject(`requested file(s) never started: ${completeness.neverStarted.join(', ')}`);
|
|
626
|
-
}
|
|
627
|
-
if (completeness.neverEnded.length > 0) {
|
|
628
|
-
return reject(`requested file(s) never ended: ${completeness.neverEnded.join(', ')}`);
|
|
629
|
-
}
|
|
630
|
-
return { accepted: true };
|
|
631
|
-
}
|
|
632
|
-
/**
|
|
633
|
-
* Parses the numeric counts from the harness's embedded result summary
|
|
634
|
-
* (`Ran N checks` / `Unexpected results: N`). The last occurrence of each
|
|
635
|
-
* wins: a multi-suite run prints one summary per suite and the final one
|
|
636
|
-
* covers the aggregate the operator sees. Absent counts are omitted (the
|
|
637
|
-
* `FIREFORGE-VERDICT:` contract: an absent key means "summary did not
|
|
638
|
-
* print it", never zero).
|
|
639
|
-
*/
|
|
640
|
-
export function extractSummaryCounts(output) {
|
|
641
|
-
const checks = lastCapturedCount(output, /\bRan (\d+) checks?\b/g);
|
|
642
|
-
const unexpected = lastCapturedCount(output, /\bUnexpected results:\s*(\d+)\b/g);
|
|
643
|
-
return {
|
|
644
|
-
...(checks !== undefined ? { checks } : {}),
|
|
645
|
-
...(unexpected !== undefined ? { unexpected } : {}),
|
|
646
|
-
};
|
|
647
|
-
}
|
|
648
|
-
/** Last captured integer for `pattern` in `output`, if any occurrence matches. */
|
|
649
|
-
function lastCapturedCount(output, pattern) {
|
|
650
|
-
let last;
|
|
651
|
-
for (const match of output.matchAll(pattern)) {
|
|
652
|
-
const captured = match[1];
|
|
653
|
-
if (captured !== undefined) {
|
|
654
|
-
last = Number.parseInt(captured, 10);
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
return last;
|
|
658
|
-
}
|
|
659
|
-
/**
|
|
660
|
-
* Formats the machine-readable `FIREFORGE-VERDICT:` line: the stable,
|
|
661
|
-
* greppable last line every `fireforge test` run prints so harness-verdict
|
|
662
|
-
* consumers stop regexing mach internals. The status follows this
|
|
663
|
-
* classifier, never the raw exit code: a crash-classified run says
|
|
664
|
-
* `FAIL reason=crash` even at exit 0, and a green-summary-override pass
|
|
665
|
-
* says `PASS` despite a non-zero mach exit. Count keys are omitted when
|
|
666
|
-
* the embedded summary did not print them. Sharded aggregate lines carry
|
|
667
|
-
* a trailing `shards=<passed>/<total>` instead of counts (counts belong
|
|
668
|
-
* to a single embedded suite summary).
|
|
669
|
-
*/
|
|
670
|
-
export function formatFireforgeVerdictLine(verdict, shards) {
|
|
671
|
-
const counts = (verdict.checks !== undefined ? ` checks=${verdict.checks}` : '') +
|
|
672
|
-
(verdict.unexpected !== undefined ? ` unexpected=${verdict.unexpected}` : '');
|
|
673
|
-
const tail = `${formatShardsSuffix(shards)}${verdict.note !== undefined ? ` (${verdict.note})` : ''}`;
|
|
674
|
-
if (verdict.kind === 'tests-ran-ok')
|
|
675
|
-
return `FIREFORGE-VERDICT: PASS${counts}${tail}`;
|
|
676
|
-
const reason = verdict.kind === 'harness-crash' ? (verdict.signature?.verdictReason ?? 'crash') : verdict.kind;
|
|
677
|
-
return `FIREFORGE-VERDICT: FAIL reason=${reason}${counts}${formatIncompleteSuffix(verdict.incomplete)}${tail}`;
|
|
678
|
-
}
|
|
679
|
-
/**
|
|
680
|
-
* Builds the operator-facing failure message for a green-looking summary
|
|
681
|
-
* that was rejected on crash or truncation evidence (never trusted as a
|
|
682
|
-
* pass, regardless of how green the embedded counts look).
|
|
683
|
-
*/
|
|
684
|
-
export function buildGreenSummaryRejectedMessage(rejection, exitCode) {
|
|
685
|
-
const evidence = [];
|
|
686
|
-
if (rejection.crashLine !== undefined) {
|
|
687
|
-
evidence.push(` - crash evidence: ${rejection.crashLine}`);
|
|
688
|
-
}
|
|
689
|
-
if (rejection.neverStarted.length > 0) {
|
|
690
|
-
evidence.push(` - requested test file(s) that never started: ${rejection.neverStarted.join(', ')}`);
|
|
691
|
-
}
|
|
692
|
-
if (rejection.neverEnded.length > 0) {
|
|
693
|
-
evidence.push(` - test file(s) that started but never finished: ${rejection.neverEnded.join(', ')}`);
|
|
694
|
-
}
|
|
695
|
-
return (`mach exited ${exitCode} and the embedded suite summary looks green, but FireForge did NOT ` +
|
|
696
|
-
'treat the run as passed:\n\n' +
|
|
697
|
-
`${evidence.join('\n')}\n\n` +
|
|
698
|
-
'A crash- or truncation-shortened run under-reports: the "green" counts only cover the ' +
|
|
699
|
-
'files that ran before the run died, so the summary is not a suite result. Treat this as a ' +
|
|
700
|
-
'FAILED run — check the crash/truncation point in the output above, then re-run the ' +
|
|
701
|
-
'remaining files.');
|
|
702
|
-
}
|
|
703
|
-
/**
|
|
704
|
-
* Exit codes that mean "the child died on SIGSEGV": Node reports a
|
|
705
|
-
* signal-killed child as the negated signal number, while a shell layer
|
|
706
|
-
* in between reports `128 + signal`. Both shapes reach FireForge
|
|
707
|
-
* depending on how mach wrapped the harness.
|
|
708
|
-
*/
|
|
709
|
-
const SIGSEGV_EXIT_CODES = new Set([-11, 139]);
|
|
710
|
-
/**
|
|
711
|
-
* True when a harness run died on SIGSEGV having produced no test evidence
|
|
712
|
-
* whatsoever.
|
|
713
|
-
*
|
|
714
|
-
* `xpcshell return code: -11` with zero output is the signature of an
|
|
715
|
-
* `.sys.mjs` that a packaged module imports but whose `EXTRA_JS_MODULES`
|
|
716
|
-
* registration never landed: the module loader faults before any logging
|
|
717
|
-
* exists, so there is no import error, no stack, no test output, just a
|
|
718
|
-
* dead process. It is indistinguishable from a genuine product crash
|
|
719
|
-
* unless someone names the cause.
|
|
720
|
-
*
|
|
721
|
-
* "Produced no evidence" is semantic rather than a byte
|
|
722
|
-
* budget: no execution signal, no real failure line, and no mozcrash
|
|
723
|
-
* marker. A run that got far enough to start a test, report a failure, or
|
|
724
|
-
* leave a crash dump has evidence of its own, and the regular diagnosis
|
|
725
|
-
* chain reads it. This branch is only for the case where there is
|
|
726
|
-
* nothing else to say.
|
|
727
|
-
*
|
|
728
|
-
* Pure. Exported for direct unit testing.
|
|
729
|
-
*
|
|
730
|
-
* @param exitCode - The harness process exit code
|
|
731
|
-
* @param output - Combined stdout/stderr from the run
|
|
732
|
-
*/
|
|
733
|
-
export function isSilentSegfault(exitCode, output) {
|
|
734
|
-
if (!SIGSEGV_EXIT_CODES.has(exitCode))
|
|
735
|
-
return false;
|
|
736
|
-
if (hasExecutionSignal(output))
|
|
737
|
-
return false;
|
|
738
|
-
if (realUnexpectedFailureLines(output).length > 0)
|
|
739
|
-
return false;
|
|
740
|
-
return findCrashMarkerLine(output) === undefined;
|
|
741
|
-
}
|
|
742
|
-
/**
|
|
743
|
-
* Names the known cause of a silent SIGSEGV so the operator checks
|
|
744
|
-
* moz.build registration FIRST instead of paying a full rebuild cycle to
|
|
745
|
-
* rediscover it.
|
|
746
|
-
*
|
|
747
|
-
* @param exitCode - The harness process exit code
|
|
748
|
-
* @param requestedPaths - Test paths the run requested
|
|
749
|
-
*/
|
|
750
|
-
export function buildSilentSegfaultMessage(exitCode, requestedPaths) {
|
|
751
|
-
return (`The test harness died on SIGSEGV (exit ${exitCode}) having printed NO output at all.\n\n` +
|
|
752
|
-
'Known cause, check this FIRST: a `.sys.mjs` imported from a packaged module whose ' +
|
|
753
|
-
'`EXTRA_JS_MODULES` (or namespaced module list) registration is missing from moz.build. ' +
|
|
754
|
-
'The module loader faults before any logging exists, so an unregistered module produces ' +
|
|
755
|
-
'exactly this shape — a dead process with no import error and no stack.\n\n' +
|
|
756
|
-
'What to do, in order:\n' +
|
|
757
|
-
' 1. Run `fireforge lint --per-patch`: the unregistered-system-module check names a new ' +
|
|
758
|
-
'module imported as a resource URL with no moz.build line.\n' +
|
|
759
|
-
' 2. Run `fireforge verify`: its module-resolution preflight resolves every ' +
|
|
760
|
-
'`resource:///modules/…` specifier the queue-owned modules import, including imports ' +
|
|
761
|
-
'added to an EXISTING module — the shape the new-file lint cannot see, and the one that ' +
|
|
762
|
-
'recurs.\n' +
|
|
763
|
-
' 3. Only then look for a product crash: a real one prints a crash dump or a stack.\n\n' +
|
|
764
|
-
`Requested paths: ${requestedPaths.join(', ')}`);
|
|
765
|
-
}
|
|
766
|
-
/**
|
|
767
|
-
* Builds the message for a run that produced no `TEST-START` despite
|
|
768
|
-
* requesting paths, including exit-code-zero runs whose `Passed: 0`
|
|
769
|
-
* summary would otherwise read as a silent false green.
|
|
770
|
-
*/
|
|
771
|
-
export function buildNoTestsRanMessage(exitCode, requestedPaths) {
|
|
772
|
-
const exitNote = exitCode === 0
|
|
773
|
-
? 'The harness exited 0 and may have printed a summary line, but a summary without a single TEST-START is not a test result.'
|
|
774
|
-
: `The harness exited ${exitCode} before any TEST-START line.`;
|
|
775
|
-
return ('mach test finished without starting any of the requested tests.\n\n' +
|
|
776
|
-
`${exitNote}\n\n` +
|
|
777
|
-
`Requested paths: ${requestedPaths.join(', ')}\n\n` +
|
|
778
|
-
'Check that the paths are registered in their test manifest (browser.toml / xpcshell.toml) ' +
|
|
779
|
-
'and that the manifest is reachable from moz.build, then retry.');
|
|
780
|
-
}
|