@typed/test
Version:
Testing made simple.
65 lines • 2.92 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const typeCheckInAnotherProcess_1 = require("../typescript/typeCheckInAnotherProcess");
const Results_1 = require("./Results");
const runBrowserTests_1 = require("./runBrowserTests");
const runNodeTests_1 = require("./runNodeTests");
const defaultOptions = {
mode: 'node',
files: [],
timeout: 2000,
browser: 'chrome-headless',
keepAlive: false,
typeCheck: false,
watch: false,
webpackConfiguration: x => x,
};
const defaultLogger = {
log: (x) => Promise.resolve(console.log(x)),
error: (x) => Promise.resolve(console.error(x)),
clear: () => Promise.resolve(console.clear()),
};
class TestRunner {
constructor(userOptions, previousResults, cwd = process.cwd(), logger) {
this.runTests = (metadata) => __awaiter(this, void 0, void 0, function* () {
const { run, options, cwd, logger } = this;
const { typeCheck } = options;
const sourcePaths = Array.from(new Set(metadata.map(x => x.filePath)));
const [testResults, processResults = { exitCode: 0 }] = yield Promise.all([
run(options, cwd, logger, metadata),
typeCheck
? logger
.log('Typechecking...')
.then(() => typeCheckInAnotherProcess_1.typecheckInAnotherProcess(cwd, sourcePaths))
.then(results => logger.log('Typechecking complete.').then(() => results))
: Promise.resolve(void 0),
]);
return [testResults, processResults];
});
this.setLogger = (logger) => {
this.logger = logger;
};
const options = Object.assign(Object.assign({}, defaultOptions), userOptions);
this.logger = logger || defaultLogger;
this.cwd = cwd;
this.options = options;
this.results = previousResults || new Results_1.Results();
if (options.mode === 'node') {
this.run = runNodeTests_1.runNodeTests;
}
else {
this.run = runBrowserTests_1.runBrowserTests;
}
}
}
exports.TestRunner = TestRunner;
//# sourceMappingURL=TestRunner.js.map