markdownlint/test/markdownlint-test.js

46 lines
1.3 KiB
JavaScript
Raw Normal View History

"use strict";
var fs = require("fs");
var path = require("path");
var markdownlint = require("../lib/markdownlint");
function createTestForFile(file) {
return function testForFile(test) {
test.expect(3);
fs.readFile(
file,
{ "encoding": "utf8" },
function readFileCallback(err, contents) {
test.ifError(err);
var lines = contents.split(/\r\n|\r|\n/g);
var results = {};
lines.forEach(function forLine(line, lineNum) {
var match = line.match(/\{(MD\d+)(?::(\d+))?\}/);
if (match) {
var rule = match[1];
var errors = results[rule] || [];
errors.push(lineNum + 1);
results[rule] = errors;
}
});
markdownlint({
"files": [ file ]
}, function markdownlintCallback(errr, actual) {
test.ifError(errr);
var expected = {};
expected[file] = results;
test.deepEqual(actual, expected, "Line numbers are not correct.");
test.done();
});
});
};
}
/* eslint-disable no-sync, for synchronous test method creation */
fs.readdirSync(__dirname).forEach(function forFile(file) {
/* eslint-enable no-sync */
if (file.match(/\.md$/)) {
module.exports[file] = createTestForFile(path.join(__dirname, file));
}
});