mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-17 14:30:12 +01:00
Add test to verify parameters in docs match code.
This commit is contained in:
parent
d5050beafa
commit
410da18a2c
1 changed files with 34 additions and 9 deletions
|
|
@ -755,13 +755,22 @@ module.exports.readme = function readme(test) {
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.doc = function doc(test) {
|
module.exports.doc = function doc(test) {
|
||||||
test.expect(151);
|
test.expect(199);
|
||||||
fs.readFile("doc/Rules.md", shared.utf8Encoding,
|
fs.readFile("doc/Rules.md", shared.utf8Encoding,
|
||||||
function readFile(err, contents) {
|
function readFile(err, contents) {
|
||||||
test.ifError(err);
|
test.ifError(err);
|
||||||
var rulesLeft = rules.slice();
|
var rulesLeft = rules.slice();
|
||||||
var inHeading = false;
|
var inHeading = false;
|
||||||
var rule = null;
|
var rule = null;
|
||||||
|
var ruleHasTags = true;
|
||||||
|
var ruleUsesParams = null;
|
||||||
|
var tagParameterRe = /, |: | /;
|
||||||
|
function testTagsAndParams() {
|
||||||
|
test.ok(ruleHasTags,
|
||||||
|
"Missing tags for rule " + (rule || {}).name + ".");
|
||||||
|
test.ok(!ruleUsesParams,
|
||||||
|
"Missing parameters for rule " + (rule || {}).name + ".");
|
||||||
|
}
|
||||||
md.parse(contents, {}).forEach(function forToken(token) {
|
md.parse(contents, {}).forEach(function forToken(token) {
|
||||||
if ((token.type === "heading_open") && (token.tag === "h2")) {
|
if ((token.type === "heading_open") && (token.tag === "h2")) {
|
||||||
inHeading = true;
|
inHeading = true;
|
||||||
|
|
@ -769,27 +778,43 @@ module.exports.doc = function doc(test) {
|
||||||
inHeading = false;
|
inHeading = false;
|
||||||
} else if (token.type === "inline") {
|
} else if (token.type === "inline") {
|
||||||
if (inHeading) {
|
if (inHeading) {
|
||||||
test.ok(!rule,
|
testTagsAndParams();
|
||||||
"Missing tags for rule " + (rule || {}).name + ".");
|
|
||||||
rule = rulesLeft.shift();
|
rule = rulesLeft.shift();
|
||||||
|
ruleHasTags = false;
|
||||||
test.ok(rule,
|
test.ok(rule,
|
||||||
"Missing rule implementation for " + token.content + ".");
|
"Missing rule implementation for " + token.content + ".");
|
||||||
if (rule) {
|
test.equal(token.content, rule.name + " - " + rule.desc,
|
||||||
var expected = rule.name + " - " + rule.desc;
|
"Rule mismatch.");
|
||||||
test.equal(token.content, expected, "Rule mismatch.");
|
ruleUsesParams = rule.func.toString()
|
||||||
|
.match(/params\.options\.[_a-z]*/gi);
|
||||||
|
if (ruleUsesParams) {
|
||||||
|
ruleUsesParams = ruleUsesParams.map(function forUse(use) {
|
||||||
|
return use.split(".").pop();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
} else if (/^Tags: /.test(token.content) && rule) {
|
} else if (/^Tags: /.test(token.content) && rule) {
|
||||||
var tags = token.content.split(/, |: | /).slice(1);
|
var tags = token.content.split(tagParameterRe).slice(1);
|
||||||
test.deepEqual(tags, rule.tags,
|
test.deepEqual(tags, rule.tags,
|
||||||
"Tag mismatch for rule " + rule.name + ".");
|
"Tag mismatch for rule " + rule.name + ".");
|
||||||
rule = null;
|
ruleHasTags = true;
|
||||||
|
} else if (/^Parameters: /.test(token.content) && rule) {
|
||||||
|
var inDetails = false;
|
||||||
|
var parameters = token.content.split(tagParameterRe)
|
||||||
|
.slice(1)
|
||||||
|
.filter(function forPart(part) {
|
||||||
|
inDetails = inDetails || (part[0] === "(");
|
||||||
|
return !inDetails;
|
||||||
|
});
|
||||||
|
test.deepEqual(parameters, ruleUsesParams,
|
||||||
|
"Missing parameter for rule " + rule.name);
|
||||||
|
ruleUsesParams = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var ruleLeft = rulesLeft.shift();
|
var ruleLeft = rulesLeft.shift();
|
||||||
test.ok(!ruleLeft,
|
test.ok(!ruleLeft,
|
||||||
"Missing rule documentation for " + (ruleLeft || {}).name + ".");
|
"Missing rule documentation for " + (ruleLeft || {}).name + ".");
|
||||||
test.ok(!rule, "Missing tags for rule " + (rule || {}).name + ".");
|
testTagsAndParams();
|
||||||
test.done();
|
test.done();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue