@northbrook/mocha
Version:
Mocha Configuration for Northbrook
60 lines (45 loc) • 1.59 kB
text/typescript
import { EOL } from 'os';
import { Command, EachHandlerOptions, each, Stdio, NorthbrookConfig } from 'northbrook';
import { runTests } from './runTests';
const defaultPatterns: Array<RegExp | string> =
[
/.*\.(spec|test)\.(js|ts)$/,
/-(spec|test)\.(js|ts)$/,
/(Spec|Test)\.(js|ts)$/,
'test/**/*.js',
'test/**/*.ts',
'tests/**/*.js',
'tests/**/*.ts',
'!lib/**/*.*',
'!lib.es2015/**/*.*',
'!node_modules/**/*.*',
];
export function addHandler (plugin: Command) {
each(plugin, (input: EachHandlerOptions, io: Stdio) => {
const { options, config, pkg } = input;
const { mocha = {} } = config;
if (mocha.exclude && mocha.exclude.indexOf(pkg.name) > -1)
return Promise.resolve();
require('buba/register');
requireHooks(options, config);
io.stdout.write(EOL + `Running mocha tests in ${pkg.name}...` + EOL);
return runTests(pkg, mocha.patterns || defaultPatterns)
.then(() => {
io.stdout.write(EOL + `Completed mocha tests in ${pkg.name}` + EOL);
})
.catch((e: any) => {
io.stderr.write(EOL + e.message + EOL);
e.diagnostics.forEach((diagnostic: any) => {
io.stderr.write(EOL + diagnostic.message + EOL);
});
process.exit(1);
});
});
}
function requireHooks(options: any, config: NorthbrookConfig) {
if (options.require)
options.require.split(',').map((str: string) => str.trim()).forEach(require);
const mocha = (config as any).mocha || {};
if (Array.isArray(mocha.require))
mocha.require.forEach(require);
}