mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-17 14:30:12 +01:00
Update code for new behavior of ESLint rule n/prefer-promises/fs.
This commit is contained in:
parent
8c8841e7b1
commit
523eeee3bb
3 changed files with 77 additions and 82 deletions
|
|
@ -2807,6 +2807,7 @@ function readConfig(file, parsers, fs, callback) {
|
||||||
}
|
}
|
||||||
// Read file
|
// Read file
|
||||||
file = helpers.expandTildePath(file, __webpack_require__(/*! node:os */ "?e6c4"));
|
file = helpers.expandTildePath(file, __webpack_require__(/*! node:os */ "?e6c4"));
|
||||||
|
// eslint-disable-next-line n/prefer-promises/fs
|
||||||
fs.readFile(file, "utf8", function (err, content) {
|
fs.readFile(file, "utf8", function (err, content) {
|
||||||
if (err) {
|
if (err) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
|
|
||||||
|
|
@ -1176,6 +1176,7 @@ function readConfig(file, parsers, fs, callback) {
|
||||||
}
|
}
|
||||||
// Read file
|
// Read file
|
||||||
file = helpers.expandTildePath(file, require("node:os"));
|
file = helpers.expandTildePath(file, require("node:os"));
|
||||||
|
// eslint-disable-next-line n/prefer-promises/fs
|
||||||
fs.readFile(file, "utf8", (err, content) => {
|
fs.readFile(file, "utf8", (err, content) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
|
|
||||||
|
|
@ -412,19 +412,16 @@ test("enableTagMixedCase", (t) => new Promise((resolve) => {
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
test("styleFiles", (t) => new Promise((resolve) => {
|
test("styleFiles", async(t) => {
|
||||||
t.plan(9);
|
t.plan(8);
|
||||||
fs.readdir("./style", function readdir(err, files) {
|
const files = await fs.promises.readdir("./style");
|
||||||
t.falsy(err);
|
for (const file of files) {
|
||||||
for (const file of files) {
|
t.truthy(require(path.join("../style", file)), "Unable to load/parse.");
|
||||||
t.truthy(require(path.join("../style", file)), "Unable to load/parse.");
|
const exportValue = `./style/${file}`;
|
||||||
const exportValue = `./style/${file}`;
|
const exportKey = exportValue.replace(/\.json$/, "");
|
||||||
const exportKey = exportValue.replace(/\.json$/, "");
|
t.is(packageExports[exportKey], exportValue);
|
||||||
t.is(packageExports[exportKey], exportValue);
|
}
|
||||||
}
|
});
|
||||||
resolve();
|
|
||||||
});
|
|
||||||
}));
|
|
||||||
|
|
||||||
test("styleAll", (t) => new Promise((resolve) => {
|
test("styleAll", (t) => new Promise((resolve) => {
|
||||||
t.plan(2);
|
t.plan(2);
|
||||||
|
|
@ -839,8 +836,8 @@ test("customFileSystemAsync", (t) => new Promise((resolve) => {
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
test("readme", (t) => new Promise((resolve) => {
|
test("readme", async(t) => {
|
||||||
t.plan(125);
|
t.plan(124);
|
||||||
const tagToRules = {};
|
const tagToRules = {};
|
||||||
for (const rule of rules) {
|
for (const rule of rules) {
|
||||||
for (const tag of rule.tags) {
|
for (const tag of rule.tags) {
|
||||||
|
|
@ -849,74 +846,70 @@ test("readme", (t) => new Promise((resolve) => {
|
||||||
tagToRules[tag] = tagRules;
|
tagToRules[tag] = tagRules;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fs.readFile("README.md", "utf8",
|
const contents = await fs.promises.readFile("README.md", "utf8");
|
||||||
function readFile(err, contents) {
|
const rulesLeft = [ ...rules ];
|
||||||
t.falsy(err);
|
let seenRelated = false;
|
||||||
const rulesLeft = [ ...rules ];
|
let seenReferences = false;
|
||||||
let seenRelated = false;
|
let seenRules = false;
|
||||||
let seenReferences = false;
|
let inRules = false;
|
||||||
let seenRules = false;
|
let seenTags = false;
|
||||||
let inRules = false;
|
let inTags = false;
|
||||||
let seenTags = false;
|
// @ts-ignore
|
||||||
let inTags = false;
|
for (const token of md.parse(contents, {})) {
|
||||||
// @ts-ignore
|
if (
|
||||||
for (const token of md.parse(contents, {})) {
|
(token.type === "bullet_list_open") &&
|
||||||
if (
|
(token.level === 0)
|
||||||
(token.type === "bullet_list_open") &&
|
) {
|
||||||
(token.level === 0)
|
if (!seenRelated) {
|
||||||
) {
|
seenRelated = true;
|
||||||
if (!seenRelated) {
|
} else if (!seenReferences) {
|
||||||
seenRelated = true;
|
seenReferences = true;
|
||||||
} else if (!seenReferences) {
|
} else if (!seenRules) {
|
||||||
seenReferences = true;
|
seenRules = true;
|
||||||
} else if (!seenRules) {
|
inRules = true;
|
||||||
seenRules = true;
|
} else if (!seenTags) {
|
||||||
inRules = true;
|
seenTags = true;
|
||||||
} else if (!seenTags) {
|
inTags = true;
|
||||||
seenTags = true;
|
|
||||||
inTags = true;
|
|
||||||
}
|
|
||||||
} else if (
|
|
||||||
(token.type === "bullet_list_close") &&
|
|
||||||
(token.level === 0)
|
|
||||||
) {
|
|
||||||
inRules = false;
|
|
||||||
inTags = false;
|
|
||||||
} else if (token.type === "inline") {
|
|
||||||
if (inRules) {
|
|
||||||
const rule = rulesLeft.shift();
|
|
||||||
t.truthy(rule,
|
|
||||||
"Missing rule implementation for " + token.content + ".");
|
|
||||||
if (rule) {
|
|
||||||
const ruleName = rule.names[0];
|
|
||||||
const ruleAliases = rule.names.slice(1);
|
|
||||||
let expected = "**[" + ruleName + "](doc/" +
|
|
||||||
ruleName.toLowerCase() + ".md)** *" +
|
|
||||||
ruleAliases.join("/") + "* - " + rule.description;
|
|
||||||
if (deprecatedRuleNames.has(ruleName)) {
|
|
||||||
expected = "~~" + expected + "~~";
|
|
||||||
}
|
|
||||||
t.is(token.content, expected, "Rule mismatch.");
|
|
||||||
}
|
|
||||||
} else if (inTags) {
|
|
||||||
const parts =
|
|
||||||
token.content.replace(/[`*]/g, "").split(/ - |, |,\n/);
|
|
||||||
const tag = parts.shift();
|
|
||||||
t.deepEqual(parts, tagToRules[tag] || [],
|
|
||||||
"Rule mismatch for tag " + tag + ".");
|
|
||||||
delete tagToRules[tag];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
const ruleLeft = rulesLeft.shift();
|
} else if (
|
||||||
t.true(!ruleLeft,
|
(token.type === "bullet_list_close") &&
|
||||||
"Missing rule documentation for " +
|
(token.level === 0)
|
||||||
(ruleLeft || "[NO RULE]").toString() + ".");
|
) {
|
||||||
const tagLeft = Object.keys(tagToRules).shift();
|
inRules = false;
|
||||||
t.true(!tagLeft, "Undocumented tag " + tagLeft + ".");
|
inTags = false;
|
||||||
resolve();
|
} else if (token.type === "inline") {
|
||||||
});
|
if (inRules) {
|
||||||
}));
|
const rule = rulesLeft.shift();
|
||||||
|
t.truthy(rule,
|
||||||
|
"Missing rule implementation for " + token.content + ".");
|
||||||
|
if (rule) {
|
||||||
|
const ruleName = rule.names[0];
|
||||||
|
const ruleAliases = rule.names.slice(1);
|
||||||
|
let expected = "**[" + ruleName + "](doc/" +
|
||||||
|
ruleName.toLowerCase() + ".md)** *" +
|
||||||
|
ruleAliases.join("/") + "* - " + rule.description;
|
||||||
|
if (deprecatedRuleNames.has(ruleName)) {
|
||||||
|
expected = "~~" + expected + "~~";
|
||||||
|
}
|
||||||
|
t.is(token.content, expected, "Rule mismatch.");
|
||||||
|
}
|
||||||
|
} else if (inTags) {
|
||||||
|
const parts =
|
||||||
|
token.content.replace(/[`*]/g, "").split(/ - |, |,\n/);
|
||||||
|
const tag = parts.shift();
|
||||||
|
t.deepEqual(parts, tagToRules[tag] || [],
|
||||||
|
"Rule mismatch for tag " + tag + ".");
|
||||||
|
delete tagToRules[tag];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const ruleLeft = rulesLeft.shift();
|
||||||
|
t.true(!ruleLeft,
|
||||||
|
"Missing rule documentation for " +
|
||||||
|
(ruleLeft || "[NO RULE]").toString() + ".");
|
||||||
|
const tagLeft = Object.keys(tagToRules).shift();
|
||||||
|
t.true(!tagLeft, "Undocumented tag " + tagLeft + ".");
|
||||||
|
});
|
||||||
|
|
||||||
test("validateJsonUsingConfigSchemaStrict", (t) => {
|
test("validateJsonUsingConfigSchemaStrict", (t) => {
|
||||||
t.plan(159);
|
t.plan(159);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue