Tests: the Hall of Fame guards read a linked vulnerability name too.

hallOfFameProblemsCoverage and securityRegressionCoverage collected the
names from <td valign="top"><b>Name</b></td>, so a name that was a link to
its page was never seen. Now that every name is one, the match takes the
link; the four it had missed - ImportPlacementBleed, SamlSubjectBleed,
StampBleed and UploadBleed - are listed as guarded by the suites that name
them, and the inventory count goes from 137 to 141.

Thanks to xet7 !
This commit is contained in:
Lauri Ojansivu committed 2026-10-30 00:20:47 +02:00
1 parent 8097935f5d
commit 43c4d41877
2 files changed
+12 -3

No files matched your search

+1 -1
View File
@@ -124,7 +124,7 @@ const keyed = new Set([...catalog.matchAll(/bleed: '(\w+)'/g)].map(m => m[1]));
const hallOfFameNames = () => {
if (!HOF) return null;
const html = fs.readFileSync(HOF, 'utf8');
return [...new Set([...html.matchAll(/<td valign="top"><b>(\w*Bleed)<\/b><\/td>/gi)]
return [...new Set([...html.matchAll(/<td valign="top"><b>(?:<a href="[a-z0-9]+\/">)?(\w*Bleed)(?:<\/a>)?<\/b><\/td>/gi)]
.map(m => m[1]))].sort();
};
+11 -2
View File
@@ -213,6 +213,12 @@ const GUARDED = {
filenamebleed: ['tests/canaryCoverage.test.cjs', 'tests/fileNameBleedRename.test.cjs'],
inputbleed: ['tests/canaryCoverage.test.cjs'],
spacebleed: ['tests/canaryCoverage.test.cjs'],
// Published with their names already linked, which the Hall of Fame match
// did not read until every name was linked (2026-10-30).
importplacementbleed: ['tests/importPlacementBleed.test.cjs', 'tests/playwright/specs/security-import-placement.e2e.js'],
samlsubjectbleed: ['tests/samlIdentityBinding.test.cjs'],
stampbleed: ['tests/stampBleed.test.cjs', 'tests/playwright/specs/upload-stamp-bleed.e2e.js'],
uploadbleed: ['tests/uploadBleed.test.cjs', 'tests/playwright/specs/upload-stamp-bleed.e2e.js'],
};
// ─────────────────────────────────────────────────────────────────────────────
@@ -352,14 +358,17 @@ test('the whole published list is accounted for', () => {
// 123 -> 124: EmailBleed, published since 2021 but missed by a case-sensitive
// match of its "Emailbleed" spelling; guarded.
// 124 -> 137: thirteen newly published 2026-10-02 names, all guarded.
assert.strictEqual(total, 137, 'the Hall of Fame and this list disagree on how many there are');
// 137 -> 141: ImportPlacementBleed, SamlSubjectBleed, StampBleed and
// UploadBleed, published with linked names the match below did not read
// until every Hall of Fame name became a link (2026-10-30); all guarded.
assert.strictEqual(total, 141, 'the Hall of Fame and this list disagree on how many there are');
});
test('the companion Hall of Fame names match the inventory when available', () => {
if (!fs.existsSync(HOF)) return;
const html = fs.readFileSync(HOF, 'utf8');
const published = [...new Set(
[...html.matchAll(/<td valign="top"><b>(\w*Bleed)<\/b><\/td>/gi)]
[...html.matchAll(/<td valign="top"><b>(?:<a href="[a-z0-9]+\/">)?(\w*Bleed)(?:<\/a>)?<\/b><\/td>/gi)]
.map(match => match[1].toLowerCase()),
)].sort();
const inventoried = [...Object.keys(GUARDED), ...Object.keys(RECORDED)].sort();