Update customRulesParamsAreFrozen test to cover all parser variations.

This commit is contained in:
David Anson 2024-10-11 20:33:29 -07:00
parent d22c1f19ef
commit a63972a666

View file

@ -1788,33 +1788,47 @@ test("customRulesAsyncThrowsInSyncContext", (t) => {
}); });
test("customRulesParamsAreFrozen", (t) => { test("customRulesParamsAreFrozen", (t) => {
const assertParamsFrozen = (params) => {
const pending = [ params ];
let current = null;
while ((current = pending.shift())) {
t.true(Object.isFrozen(current) || (current === params));
for (const name of Object.getOwnPropertyNames(current)) {
const value = current[name];
if (
value &&
(typeof value === "object") &&
(name !== "parent")
) {
pending.push(value);
}
}
}
};
// eslint-disable-next-line jsdoc/valid-types // eslint-disable-next-line jsdoc/valid-types
/** @type import("../lib/markdownlint").Options */ /** @type import("../lib/markdownlint").Options */
const options = { const options = {
"customRules": [ "customRules": [
{ {
"names": [ "name" ], "names": [ "none" ],
"description": "description", "description": "description",
"tags": [ "tag" ], "tags": [ "tag" ],
"parser": "none", "parser": "none",
"function": "function": assertParamsFrozen
(params) => { },
const pending = [ params ]; {
let current = null; "names": [ "markdownit" ],
while ((current = pending.shift())) { "description": "description",
t.true(Object.isFrozen(current) || (current === params)); "tags": [ "tag" ],
for (const name of Object.getOwnPropertyNames(current)) { "parser": "markdownit",
const value = current[name]; "function": assertParamsFrozen
if ( },
value && {
(typeof value === "object") && "names": [ "micromark" ],
(name !== "parent") "description": "description",
) { "tags": [ "tag" ],
pending.push(value); "parser": "micromark",
} "function": assertParamsFrozen
}
}
}
} }
], ],
"files": [ "README.md" ] "files": [ "README.md" ]