From eed806bf4a9d62acb46174a078937b0c5205979a Mon Sep 17 00:00:00 2001 From: haelyra <49814733+haelyra@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:32:47 -0400 Subject: [PATCH] fix: restore unskipped installer refactor validation Follow up PR #3187 at 38b8c07f while preserving the original contribution history and all current-main helper bodies. Remove both CI safety-suite exclusions, clean stale imports and the warning glyph, retain shipped test/coverage entrypoints, and keep unknown test totals honest. The tree matches the fully tested 6246-pass/325-file tree; disposable Claude/OpenCode lifecycle passes. --- .github/workflows/ci.yml | 3 --- package.json | 4 ++-- scripts/lib/install-lifecycle.js | 2 -- tests/ci/run-all.test.js | 6 ++++++ tests/run-all.js | 4 +--- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09c546eeb..84c854920 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,7 +97,6 @@ jobs: run: node tests/run-all.js env: CLAUDE_CODE_PACKAGE_MANAGER: ${{ matrix.pm }} - ECC_TEST_SKIP: 'ownership-guard,install-state-projection,install-state-selective-reinstall,codex-hooks,install-apply,hooks.test,observe-subdirectory-detection,claude-scope-migration,state-store,control-pane.test,setup.test' # Upload test artifacts on failure - name: Upload test artifacts @@ -361,8 +360,6 @@ jobs: - name: Run coverage run: npm run coverage - env: - ECC_TEST_SKIP: 'ownership-guard,install-state-projection,install-state-selective-reinstall,codex-hooks,install-apply,hooks.test,observe-subdirectory-detection,claude-scope-migration,state-store,control-pane.test,setup.test' - name: Upload coverage report if: always() diff --git a/package.json b/package.json index 28ea5e6a8..11902d363 100644 --- a/package.json +++ b/package.json @@ -501,10 +501,10 @@ "test:validators": "node scripts/ci/check-unicode-safety.js && node scripts/ci/validate-agents.js && node scripts/ci/validate-commands.js && node scripts/ci/validate-rules.js && node scripts/ci/validate-skills.js && node scripts/ci/validate-hooks.js && node scripts/ci/check-hooks-schema-keys.js && node scripts/ci/validate-install-manifests.js && node scripts/ci/validate-context-profiles.js && node scripts/ci/validate-no-personal-paths.js && npm run catalog:check && npm run command-registry:check", "test:js": "node tests/run-all.js", "test:python": "python3 -m pytest tests/ -q", - "test": "npm run test:validators && npm run test:js", + "test": "node scripts/ci/check-unicode-safety.js && node scripts/ci/validate-agents.js && node scripts/ci/validate-commands.js && node scripts/ci/validate-rules.js && node scripts/ci/validate-skills.js && node scripts/ci/validate-hooks.js && node scripts/ci/check-hooks-schema-keys.js && node scripts/ci/validate-install-manifests.js && node scripts/ci/validate-context-profiles.js && node scripts/ci/validate-no-personal-paths.js && npm run catalog:check && npm run command-registry:check && node tests/run-all.js", "coverage:js": "c8 --all --include=\"scripts/**/*.js\" --include=\"scripts/**/*.mjs\" --check-coverage --lines 80 --functions 80 --branches 79 --statements 80 --reporter=text --reporter=lcov node tests/run-all.js", "coverage:python": "python3 -m pytest tests/ -q --cov=src --cov-report=term --cov-fail-under=80", - "coverage": "npm run coverage:js", + "coverage": "c8 --all --include=\"scripts/**/*.js\" --include=\"scripts/**/*.mjs\" --check-coverage --lines 80 --functions 80 --branches 79 --statements 80 --reporter=text --reporter=lcov node tests/run-all.js", "build:opencode": "node scripts/build-opencode.js", "prepack": "npm run build:opencode", "dashboard": "python3 ./ecc_dashboard.py", diff --git a/scripts/lib/install-lifecycle.js b/scripts/lib/install-lifecycle.js index 57b9ce2e9..cbd687913 100644 --- a/scripts/lib/install-lifecycle.js +++ b/scripts/lib/install-lifecycle.js @@ -10,7 +10,6 @@ const { readInstallState, validateInstallState } = require('./install-state'); const { assertWithinTrustedRoot } = require('./path-safety'); const { createInstallPlanFromRequest } = require('./install/runtime'); const { assertNoNewUserOwnedFile, prepareUserOwnedFileGuard } = require('./install/ownership-guard'); -const { writeFileNoFollow: guardedWriteFile } = require('./install/guarded-write'); const { withOpenCodeInstallLocks } = require('./install/opencode-install-lock'); const { isCodexUserConfig } = require('./install/codex-user-config'); const { @@ -57,7 +56,6 @@ const { readJsonNoFollow, removeContainedPath, writeContainedFile, - writeFileNoFollow, } = require('./install/contained-fs'); const { JSON_REMOVE_SENTINEL, diff --git a/tests/ci/run-all.test.js b/tests/ci/run-all.test.js index 94a7274ef..39f06541a 100644 --- a/tests/ci/run-all.test.js +++ b/tests/ci/run-all.test.js @@ -91,6 +91,12 @@ const tests = [ assert.match(result.annotations[0], /AssertionError: mismatch/); assert.ok(!result.annotations[0].includes('PASS handles')); }], + ['successful files without counts do not invent test totals', () => { + const result = run({ status: 0, stdout: 'suite complete' }); + assert.strictEqual(result.status, 0); + assert.ok(result.logs.some(line => /Passed:\s+0\s/.test(line))); + assert.ok(result.logs.some(line => /Files: 1 passed, 0 failed/.test(line))); + }], ['healthy suites preserve successful totals and emit no annotation', () => { const result = run({ status: 0, stdout: 'Passed: 3, Failed: 0' }); assert.strictEqual(result.status, 0); diff --git a/tests/run-all.js b/tests/run-all.js index 86363835c..679834083 100644 --- a/tests/run-all.js +++ b/tests/run-all.js @@ -104,7 +104,7 @@ console.log('╚' + '═'.repeat(BOX_W) + '╝'); console.log(); if (skipPatterns.length > 0) { - console.log(`⚠ Skipped patterns: ${skipPatterns.join(', ')}`); + console.log(`Skipped patterns: ${skipPatterns.join(', ')}`); console.log(); } @@ -174,8 +174,6 @@ for (const testFile of testFiles) { if (counts.definite) { totalPassed += counts.passed; totalFailed += counts.failed; - } else { - totalPassed += 1; } } }