ya-driver
Version:
The driver support Ya GUI or Ya cli. docker image
79 lines (76 loc) • 2.07 kB
JavaScript
/**
* Run unit test drive by karma
*/
const Project = require('./project');
const opn = require('opn');
const Server = require('karma').Server;
const glob = require('glob');
const fsExtra = require('fs-extra');
// const {
// merge
// } = require('lodash');
const {
log,
warn
// error
} = require('../utils/log');
const {
ipcEnabled,
processSendSilent
} = require('../utils/helper');
const getKarmaConfig = require('../config/karma');
module.exports = function (options) {
const project = new Project(options.projectPath); // 放置project相关信息
const {
coveragePath
} = project;
const karmaConfig = getKarmaConfig(options);
// 判断是否存在test文件
if (karmaConfig.files.every(({ pattern }) => {
const result = glob.sync(pattern, {
cwd: options.projectPath
});
return !result.length;
})) {
warn(`There is no test file exist, exit with 0 code.`);
fsExtra.emptyDirSync(coveragePath); // Empty report directory
processSendSilent({
action: 'complete'
});
return;
}
// console.log('config', karmaConfig);
const server = new Server(karmaConfig, function (exitCode) {
log('Unit test(Karma) run complete return ' + exitCode);
if (!ipcEnabled) {
const uri = `file://${coveragePath}/${karmaConfig.coverageReporter.subdir}/index.html`;
opn(uri);
} else {
processSendSilent({
action: 'complete'
});
process.exit(exitCode);
}
});
log(`Start run test runner...`);
var compileCounts = 0;
server.on('run_complete', function (browser, {
success,
failed,
exitCode
}) {
compileCounts++;
if (exitCode !== 0) {
log(`\nThere are some case not passed,success(${success}), failed(${failed})`);
}
if (ipcEnabled) {
log(`请切换到 Code coverage 面板查看详细`);
if (compileCounts === 1) {
processSendSilent({
action: 'complete'
});
}
}
});
server.start();
};