browser tests support reporter-options

This commit is contained in:
Johannes Rieken 2020-02-05 11:53:30 +01:00
parent c47f30e7c0
commit e584763f2a

View file

@ -29,26 +29,31 @@ const optimist = require('optimist')
// logic // logic
const argv = optimist.argv; const argv = optimist.argv;
const Reporter = (function () { const withReporter = (function () {
const reporterPath = path.join(path.dirname(require.resolve('mocha')), 'lib', 'reporters', argv.reporter); const reporterPath = path.join(path.dirname(require.resolve('mocha')), 'lib', 'reporters', argv.reporter);
let Reporter; let ctor;
try { try {
Reporter = require(reporterPath); ctor = require(reporterPath);
} catch (err) { } catch (err) {
try { try {
Reporter = require(argv.reporter); ctor = require(argv.reporter);
} catch (err) { } catch (err) {
Reporter = process.platform === 'win32' ? mocha.reporters.List : mocha.reporters.Spec; ctor = process.platform === 'win32' ? mocha.reporters.List : mocha.reporters.Spec;
console.warn(`could not load reporter: ${argv.reporter}, using ${Reporter.name}`); console.warn(`could not load reporter: ${argv.reporter}, using ${ctor.name}`);
} }
} }
// let reporterOptions = argv['reporter-options']; function parseReporterOption(value) {
// reporterOptions = typeof reporterOptions === 'string' ? [reporterOptions] : reporterOptions; let r = /^([^=]+)=(.*)$/.exec(value);
// reporterOptions = reporterOptions.reduce((r, o) => Object.assign(r, parseReporterOption(o)), {}); return r ? { [r[1]]: r[2] } : {};
}
return Reporter let reporterOptions = argv['reporter-options'];
reporterOptions = typeof reporterOptions === 'string' ? [reporterOptions] : reporterOptions;
reporterOptions = reporterOptions.reduce((r, o) => Object.assign(r, parseReporterOption(o)), {});
return (runner) => new ctor(runner, { reporterOptions })
})() })()
const outdir = argv.build ? 'out-build' : 'out'; const outdir = argv.build ? 'out-build' : 'out';
@ -104,7 +109,7 @@ async function runTestsInBrowser(testModules, browserType) {
console[msg.type()](msg.text(), await Promise.all(msg.args().map(async arg => await arg.jsonValue()))); console[msg.type()](msg.text(), await Promise.all(msg.args().map(async arg => await arg.jsonValue())));
}); });
new Reporter(new EchoRunner(emitter, browserType.toUpperCase())); withReporter(new EchoRunner(emitter, browserType.toUpperCase()));
try { try {
// @ts-ignore // @ts-ignore