Improve output of processing script

This commit is contained in:
2026-05-21 08:36:38 -05:00
parent cbea768c6e
commit 625583828b
2 changed files with 222 additions and 60 deletions
+82 -1
View File
@@ -1,6 +1,7 @@
import assert from 'node:assert/strict';
import test from 'node:test';
import { readFileSync, readdirSync } from 'node:fs';
import { mkdtempSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from 'node:fs';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { fileURLToPath } from 'node:url';
import { JSDOM } from 'jsdom';
@@ -10,6 +11,7 @@ globalThis.DOMParser = window.DOMParser;
const { parseIssuesFromHtmlTable } = await import('../web/js/process.js');
const { buildIssueMarkdownDocument } = await import('../web/js/markdown.js');
const { formatFileStatusLine, processIssues } = await import('../reference/process_issues.mjs');
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const fixturesDir = join(__dirname, 'fixtures');
@@ -69,3 +71,82 @@ fixtures.forEach(fixtureId => {
assert.equal(markdown.trim(), expectedMarkdown.trim());
});
});
test('processIssues reports unchanged, modified, and new files distinctly', () => {
const tempRoot = mkdtempSync(join(tmpdir(), 'firewallissues-process-'));
const referenceRoot = join(tempRoot, 'reference');
const outputRoot = join(tempRoot, 'web', 'data', 'issues');
const fixtureRoot = join(fixturesDir, 'PAN-OS-10.2.1-addressed');
const modifiedFixtureRoot = join(fixturesDir, 'PAN-OS-10.1.11-known');
const newFixtureRoot = join(fixturesDir, 'PAN-OS-12.1.2-addressed');
const stdoutChunks = [];
const logs = [];
try {
mkdirSync(join(referenceRoot, 'PAN-OS', 'addressed'), { recursive: true });
mkdirSync(join(referenceRoot, 'PAN-OS', 'known'), { recursive: true });
writeFileSync(
join(referenceRoot, 'PAN-OS', 'addressed', '10.2.1.html'),
readFileSync(join(fixtureRoot, 'input.html'), 'utf-8')
);
writeFileSync(
join(referenceRoot, 'PAN-OS', 'known', '10.1.11.html'),
readFileSync(join(modifiedFixtureRoot, 'input.html'), 'utf-8')
);
writeFileSync(
join(referenceRoot, 'PAN-OS', 'addressed', '12.1.2.html'),
readFileSync(join(newFixtureRoot, 'input.html'), 'utf-8')
);
mkdirSync(join(outputRoot, 'PAN-OS', 'addressed'), { recursive: true });
mkdirSync(join(outputRoot, 'PAN-OS', 'known'), { recursive: true });
writeFileSync(
join(outputRoot, 'PAN-OS', 'addressed', '10.2.1.md'),
readFileSync(join(fixtureRoot, 'expected.md'), 'utf-8')
);
writeFileSync(join(outputRoot, 'PAN-OS', 'known', '10.1.11.md'), 'old content');
const summary = processIssues({
referenceRoot,
outputRoot,
stdout: {
write(chunk) {
stdoutChunks.push(chunk);
}
},
logger: {
log(message) {
logs.push(message);
},
warn(message) {
logs.push(message);
},
error(message) {
logs.push(message);
}
}
});
assert.deepEqual(summary, {
processedProducts: 1,
newCount: 1,
modifiedCount: 1,
noChangeCount: 1,
skippedNoIssues: 0,
});
assert.equal(stdoutChunks.join(''), '\rNo changes for: 1 file\n');
assert.ok(logs.includes(formatFileStatusLine('modified', 'PAN-OS-10.1.11')));
assert.ok(logs.includes(formatFileStatusLine('new', 'PAN-OS-12.1.2')));
assert.equal(
readFileSync(join(outputRoot, 'PAN-OS', 'known', '10.1.11.md'), 'utf-8').trim(),
readFileSync(join(modifiedFixtureRoot, 'expected.md'), 'utf-8').trim()
);
assert.equal(
readFileSync(join(outputRoot, 'PAN-OS', 'addressed', '12.1.2.md'), 'utf-8').trim(),
readFileSync(join(newFixtureRoot, 'expected.md'), 'utf-8').trim()
);
} finally {
rmSync(tempRoot, { recursive: true, force: true });
}
});