Remove Q dependency, replace with native Promise/promisify.

This commit is contained in:
David Anson 2018-04-27 22:29:52 -07:00
parent 213aef4564
commit f77b7ae4ec
3 changed files with 21 additions and 10 deletions

View file

@ -4,7 +4,8 @@
"ecmaVersion": 6 "ecmaVersion": 6
}, },
"env": { "env": {
"node": true "node": true,
"es6": true
}, },
"rules": { "rules": {
"accessor-pairs": "error", "accessor-pairs": "error",

View file

@ -36,7 +36,6 @@
"glob": "~7.1.2", "glob": "~7.1.2",
"istanbul": "~0.4.5", "istanbul": "~0.4.5",
"nodeunit": "~0.11.2", "nodeunit": "~0.11.2",
"q": "~1.5.1",
"rimraf": "~2.6.2", "rimraf": "~2.6.2",
"tv4": "~1.3.0", "tv4": "~1.3.0",
"typescript": "~2.8.3", "typescript": "~2.8.3",

View file

@ -3,7 +3,6 @@
const fs = require("fs"); const fs = require("fs");
const path = require("path"); const path = require("path");
const md = require("markdown-it")(); const md = require("markdown-it")();
const Q = require("q");
const tv4 = require("tv4"); const tv4 = require("tv4");
const markdownlint = require("../lib/markdownlint"); const markdownlint = require("../lib/markdownlint");
const shared = require("../lib/shared"); const shared = require("../lib/shared");
@ -12,16 +11,27 @@ const customRules = require("./rules");
const defaultConfig = require("./markdownlint-test-default-config.json"); const defaultConfig = require("./markdownlint-test-default-config.json");
const configSchema = require("../schema/markdownlint-config-schema.json"); const configSchema = require("../schema/markdownlint-config-schema.json");
function promisify(func, ...args) {
return new Promise((resolve, reject) => {
func(...args, (error, result) => {
if (error) {
return reject(error);
}
resolve(result);
});
});
}
function createTestForFile(file) { function createTestForFile(file) {
return function testForFile(test) { return function testForFile(test) {
test.expect(1); test.expect(1);
const detailedResults = /[/\\]detailed-results-/.test(file); const detailedResults = /[/\\]detailed-results-/.test(file);
const resultsFile = file.replace(/\.md$/, ".results.json"); const resultsFile = file.replace(/\.md$/, ".results.json");
const configFile = file.replace(/\.md$/, ".json"); const configFile = file.replace(/\.md$/, ".json");
const actualPromise = Q.nfcall(fs.stat, configFile) const actualPromise = promisify(fs.stat, configFile)
.then( .then(
function configFileExists() { function configFileExists() {
return Q.nfcall(fs.readFile, configFile, shared.utf8Encoding) return promisify(fs.readFile, configFile, shared.utf8Encoding)
.then(JSON.parse); .then(JSON.parse);
}, },
function noConfigFile() { function noConfigFile() {
@ -31,16 +41,16 @@ function createTestForFile(file) {
function lintWithConfig(config) { function lintWithConfig(config) {
const mergedConfig = const mergedConfig =
shared.assign(shared.clone(defaultConfig), config); shared.assign(shared.clone(defaultConfig), config);
return Q.nfcall(markdownlint, { return promisify(markdownlint, {
"files": [ file ], "files": [ file ],
"config": mergedConfig, "config": mergedConfig,
"resultVersion": detailedResults ? 2 : 0 "resultVersion": detailedResults ? 2 : 0
}); });
}); });
const expectedPromise = detailedResults ? const expectedPromise = detailedResults ?
Q.nfcall(fs.readFile, resultsFile, shared.utf8Encoding) promisify(fs.readFile, resultsFile, shared.utf8Encoding)
.then(JSON.parse) : .then(JSON.parse) :
Q.nfcall(fs.readFile, file, shared.utf8Encoding) promisify(fs.readFile, file, shared.utf8Encoding)
.then( .then(
function fileContents(contents) { function fileContents(contents) {
const lines = contents.split(shared.newLineRe); const lines = contents.split(shared.newLineRe);
@ -61,7 +71,7 @@ function createTestForFile(file) {
}); });
return sortedResults; return sortedResults;
}); });
Q.all([ actualPromise, expectedPromise ]) Promise.all([ actualPromise, expectedPromise ])
.then( .then(
function compareResults(fulfillments) { function compareResults(fulfillments) {
const actual = fulfillments[0]; const actual = fulfillments[0];
@ -70,7 +80,8 @@ function createTestForFile(file) {
expected[file] = results; expected[file] = results;
test.deepEqual(actual, expected, "Line numbers are not correct."); test.deepEqual(actual, expected, "Line numbers are not correct.");
}) })
.done(test.done, test.done); .catch()
.then(test.done);
}; };
} }