()
| 163 | } |
| 164 | |
| 165 | function runTests() { |
| 166 | console.log('\n=== Testing platform-audit.js ===\n'); |
| 167 | |
| 168 | let passed = 0; |
| 169 | let failed = 0; |
| 170 | |
| 171 | if (test('parseArgs accepts supported flags and rejects invalid values', () => { |
| 172 | const { parseArgs } = require(SCRIPT); |
| 173 | const rootDir = createTempDir('platform-audit-args-'); |
| 174 | |
| 175 | try { |
| 176 | const parsed = parseArgs([ |
| 177 | 'node', |
| 178 | 'script', |
| 179 | '--format=json', |
| 180 | `--root=${rootDir}`, |
| 181 | '--json', |
| 182 | '--repo', |
| 183 | 'affaan-m/ECC', |
| 184 | '--max-open-prs', |
| 185 | '5', |
| 186 | '--max-open-issues', |
| 187 | '6', |
| 188 | '--allow-untracked', |
| 189 | 'docs/drafts/' |
| 190 | ]); |
| 191 | |
| 192 | assert.strictEqual(parsed.format, 'json'); |
| 193 | assert.strictEqual(parsed.root, path.resolve(rootDir)); |
| 194 | assert.deepStrictEqual(parsed.repos, ['affaan-m/ECC']); |
| 195 | assert.strictEqual(parsed.thresholds.maxOpenPrs, 5); |
| 196 | assert.strictEqual(parsed.thresholds.maxOpenIssues, 6); |
| 197 | assert.deepStrictEqual(parsed.allowUntracked, ['docs/drafts/']); |
| 198 | |
| 199 | assert.throws(() => parseArgs(['node', 'script', '--format', 'xml']), /Invalid format/); |
| 200 | assert.throws(() => parseArgs(['node', 'script', '--write', 'audit.md']), /--write requires/); |
| 201 | assert.throws(() => parseArgs(['node', 'script', '--repo']), /--repo requires a value/); |
| 202 | assert.throws(() => parseArgs(['node', 'script', '--max-open-prs', 'x']), /Invalid --max-open-prs/); |
| 203 | assert.throws(() => parseArgs(['node', 'script', '--unknown']), /Unknown argument/); |
| 204 | } finally { |
| 205 | cleanup(rootDir); |
| 206 | } |
| 207 | })) passed++; else failed++; |
| 208 | |
| 209 | if (test('skip-github report checks local release and security evidence', () => { |
| 210 | const projectRoot = createTempDir('platform-audit-local-'); |
| 211 | |
| 212 | try { |
| 213 | seedRepo(projectRoot); |
| 214 | const parsed = JSON.parse(run(['--format=json', `--root=${projectRoot}`, '--skip-github'], { cwd: projectRoot })); |
| 215 | |
| 216 | assert.strictEqual(parsed.schema_version, 'ecc.platform-audit.v1'); |
| 217 | assert.strictEqual(parsed.ready, true); |
| 218 | assert.strictEqual(parsed.github.skipped, true); |
| 219 | assert.ok(parsed.checks.some(check => check.id === 'roadmap-linear-mirror' && check.status === 'pass')); |
| 220 | assert.ok(parsed.checks.some(check => check.id === 'supply-chain-runbook' && check.status === 'pass')); |
| 221 | assert.ok(parsed.checks.some(check => check.id === 'operator-dashboard-command' && check.status === 'pass')); |
| 222 | assert.ok(parsed.checks.some(check => check.id === 'operator-readiness-dashboard' && check.status === 'pass')); |
no test coverage detected