UNPKG

atool-test

Version:

Unit testing tool based on dora & mocha & webpack

96 lines (70 loc) 3.03 kB
'use strict'; var _path = require('path'); var _glob = require('glob'); var _glob2 = _interopRequireDefault(_glob); var _objectAssign = require('object-assign'); var _objectAssign2 = _interopRequireDefault(_objectAssign); var _getWebpackCommonConfig = require('atool-build/lib/getWebpackCommonConfig'); var _getWebpackCommonConfig2 = _interopRequireDefault(_getWebpackCommonConfig); var _mergeCustomConfig = require('atool-build/lib/mergeCustomConfig'); var _mergeCustomConfig2 = _interopRequireDefault(_mergeCustomConfig); var _htmlWebpackPlugin = require('html-webpack-plugin'); var _htmlWebpackPlugin2 = _interopRequireDefault(_htmlWebpackPlugin); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var cwd = process.cwd(); var commonConfig = (0, _getWebpackCommonConfig2.default)({ cwd: cwd }); module.exports = function getTestWebpackCfg(chai, coverage, config) { var customConfigPath = (0, _path.join)(cwd, config); var webpackConfig = (0, _objectAssign2.default)({}, (0, _mergeCustomConfig2.default)(commonConfig, customConfigPath), { devtool: '#inline-source-map' }); delete webpackConfig.babel.cacheDirectory; webpackConfig.module.noParse = [/\/sinon\.js/]; for (var i = 0; i < webpackConfig.plugins.length; i++) { if (webpackConfig.plugins[i].chunkNames === 'common') { webpackConfig.plugins.splice(i, 1); break; } } var htmlPluginFiles = webpackConfig.htmlWebpackPlugin && webpackConfig.htmlWebpackPlugin.files || {}; webpackConfig.plugins.push(new _htmlWebpackPlugin2.default({ template: (0, _path.join)(__dirname, './runner.ejs'), inject: false, filename: 'runner.html', files: { css: htmlPluginFiles.css || [], js: htmlPluginFiles.js || [] } })); webpackConfig.resolve.modulesDirectories.push((0, _path.join)(__dirname, '../node_modules')); webpackConfig.resolveLoader.modulesDirectories.push((0, _path.join)(__dirname, '../node_modules')); webpackConfig.output.libraryTarget = 'var'; if (coverage) { var preLoaders = [{ test: /\.jsx?$/, exclude: /(__tests__|tests|test|node_modules|bower_components)/, loader: 'isparta' }]; if (webpackConfig.module.preLoaders) { webpackConfig.module.preLoaders.concat(preLoaders); } else { webpackConfig.module.preLoaders = preLoaders; } } var testFiles = [(0, _path.join)(__dirname, chai ? './setup_chai.js' : './setup.js')]; // test some test-files var entryFiles = webpackConfig.atoolTestSpec; if (entryFiles && entryFiles.length) { entryFiles.forEach(function (f) { var files = _glob2.default.sync((0, _path.join)(cwd, f)); testFiles.push.apply(testFiles, files); }); } else { var globFiles = _glob2.default.sync((0, _path.join)(cwd, '!(node_modules)/**/*-+(test|spec).+(ts|js|tsx|jsx)')); testFiles = testFiles.concat(globFiles); } webpackConfig.entry = { test: Array.from(new Set(testFiles)) }; return webpackConfig; };