2015-02-23 23:39:20 -08:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
var fs = require("fs");
|
|
|
|
var path = require("path");
|
|
|
|
var markdownlint = require("../lib/markdownlint");
|
|
|
|
|
|
|
|
function createTestForFile(file) {
|
2015-02-24 18:40:37 -08:00
|
|
|
return function testForFile(test) {
|
|
|
|
test.expect(3);
|
|
|
|
fs.readFile(
|
|
|
|
file,
|
|
|
|
{ "encoding": "utf8" },
|
|
|
|
function readFileCallback(err, contents) {
|
|
|
|
test.ifError(err);
|
2015-02-25 18:00:08 -08:00
|
|
|
var lines = contents.split(/\r\n|\r|\n/g);
|
2015-02-24 18:40:37 -08:00
|
|
|
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();
|
|
|
|
});
|
|
|
|
});
|
2015-02-23 23:39:20 -08:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2015-02-24 18:40:37 -08:00
|
|
|
/* eslint-disable no-sync, for synchronous test method creation */
|
|
|
|
fs.readdirSync(__dirname).forEach(function forFile(file) {
|
|
|
|
/* eslint-enable no-sync */
|
2015-02-23 23:39:20 -08:00
|
|
|
if (file.match(/\.md$/)) {
|
|
|
|
module.exports[file] = createTestForFile(path.join(__dirname, file));
|
|
|
|
}
|
|
|
|
});
|