Extract long-running "stress" tests from core test suite (no loss of coverage).

This commit is contained in:
David Anson 2016-10-06 21:44:39 -07:00
parent 76cee28a26
commit 557c5942ea
3 changed files with 59 additions and 51 deletions

View file

@ -12,8 +12,9 @@
}, },
"bugs": "https://github.com/DavidAnson/markdownlint/issues", "bugs": "https://github.com/DavidAnson/markdownlint/issues",
"scripts": { "scripts": {
"test": "nodeunit", "test": "nodeunit test/markdownlint-test.js",
"test-cover": "istanbul cover node_modules/nodeunit/bin/nodeunit", "test-cover": "istanbul cover node_modules/nodeunit/bin/nodeunit test/markdownlint-test.js",
"test-extra": "nodeunit test/markdownlint-test-extra.js",
"debug": "node debug node_modules/nodeunit/bin/nodeunit", "debug": "node debug node_modules/nodeunit/bin/nodeunit",
"lint": "eslint lib test schema && eslint --env browser --global markdownit --global markdownlint --rule \"no-unused-vars: 0, no-extend-native: 0, max-statements: 0, no-console: 0\" demo && eslint --rule \"no-console: 0, no-shadow: 0\" example", "lint": "eslint lib test schema && eslint --env browser --global markdownit --global markdownlint --rule \"no-unused-vars: 0, no-extend-native: 0, max-statements: 0, no-console: 0\" demo && eslint --rule \"no-console: 0, no-shadow: 0\" example",
"build-config-schema": "node schema/build-config-schema.js", "build-config-schema": "node schema/build-config-schema.js",

View file

@ -0,0 +1,56 @@
"use strict";
var fs = require("fs");
var path = require("path");
var glob = require("glob");
var markdownlint = require("../lib/markdownlint");
var shared = require("../lib/shared");
module.exports.typeTestFiles = function typeTestFiles(test) {
// Simulates typing each test file to validate handling of partial input
function validate(file, content) {
var results = markdownlint.sync({
"strings": {
"content": content
}
});
var contentLineCount = content.split(shared.newLineRe).length;
Object.keys(results.content).forEach(function forKey(ruleName) {
results.content[ruleName].forEach(function forLine(line) {
test.ok((line >= 1) && (line <= contentLineCount),
"Line number out of range: " + line +
" (" + file + ", " + content.length + ", " + ruleName + ")");
});
});
}
var files = fs.readdirSync("./test");
files.forEach(function forFile(file) {
if (/\.md$/.test(file)) {
var content = fs.readFileSync(
path.join("./test", file), shared.utf8Encoding);
while (content) {
validate(file, content);
content = content.slice(0, -1);
}
}
});
test.done();
};
module.exports.parseAllFiles = function parseAllFiles(test) {
// Parses all Markdown files in all dependencies
var globOptions = {
// "cwd": "/",
"realpath": true
};
glob("**/*.{md,markdown}", globOptions, function globCallback(err, matches) {
test.ifError(err);
var markdownlintOptions = {
"files": matches
};
markdownlint(markdownlintOptions, function markdownlintCallback(errr) {
test.ifError(errr);
test.done();
});
});
};

View file

@ -4,7 +4,6 @@ var fs = require("fs");
var path = require("path"); var path = require("path");
var md = require("markdown-it")(); var md = require("markdown-it")();
var Q = require("q"); var Q = require("q");
var glob = require("glob");
var tv4 = require("tv4"); var tv4 = require("tv4");
var markdownlint = require("../lib/markdownlint"); var markdownlint = require("../lib/markdownlint");
var shared = require("../lib/shared"); var shared = require("../lib/shared");
@ -933,54 +932,6 @@ module.exports.doc = function doc(test) {
}); });
}; };
module.exports.typeTestFiles = function typeTestFiles(test) {
// Simulates typing each test file to validate handling of partial input
function validate(file, content) {
var results = markdownlint.sync({
"strings": {
"content": content
}
});
var contentLineCount = content.split(shared.newLineRe).length;
Object.keys(results.content).forEach(function forKey(ruleName) {
results.content[ruleName].forEach(function forLine(line) {
test.ok((line >= 1) && (line <= contentLineCount),
"Line number out of range: " + line +
" (" + file + ", " + content.length + ", " + ruleName + ")");
});
});
}
var files = fs.readdirSync("./test");
files.forEach(function forFile(file) {
if (/\.md$/.test(file)) {
var content = fs.readFileSync(
path.join("./test", file), shared.utf8Encoding);
while (content) {
validate(file, content);
content = content.slice(0, -1);
}
}
});
test.done();
};
module.exports.parseAllFiles = function parseAllFiles(test) {
var globOptions = {
// "cwd": "/",
"realpath": true
};
glob("**/*.{md,markdown}", globOptions, function globCallback(err, matches) {
test.ifError(err);
var markdownlintOptions = {
"files": matches
};
markdownlint(markdownlintOptions, function markdownlintCallback(errr) {
test.ifError(errr);
test.done();
});
});
};
module.exports.validateConfigSchema = function validateConfigSchema(test) { module.exports.validateConfigSchema = function validateConfigSchema(test) {
var jsonFileRe = /\.json$/i; var jsonFileRe = /\.json$/i;
var testDirectory = __dirname; var testDirectory = __dirname;