UNPKG

rc-test

Version:
107 lines (104 loc) 4.41 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = _default; exports.getConfig = getConfig; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _fsExtra = _interopRequireDefault(require("fs-extra")); var _jest = require("jest"); var _path = _interopRequireDefault(require("path")); var _excluded = ["setupFiles", "setupFilesAfterEnv"]; var ALIAS = { t: 'testNamePattern', w: 'maxWorkers', u: 'updateSnapshot' }; function getConfig() { var cwd = process.cwd(); var pkg = require(_path.default.resolve(cwd, 'package.json')); var setupFiles = [require.resolve("./setup.js")]; if (pkg.devDependencies['enzyme']) { if (!pkg.dependencies['enzyme-adapter-react-16'] && !pkg.devDependencies['enzyme-adapter-react-16']) { console.log('[rc-test] Legacy "enzyme-adapter-react-16" is not in the deps. Please install in dev deps!'); } setupFiles.push(require.resolve("./setupEnzyme.js")); } var config = { rootDir: cwd, testEnvironment: 'jsdom', setupFiles: setupFiles, setupFilesAfterEnv: [require.resolve("./setupAfterEnv.js")], transform: { '\\.(t|j)sx?$': require.resolve("./transformers/jsTransformer"), '\\.svg$': require.resolve("./transformers/fileTransformer") }, // transformIgnorePatterns: [ // // 加 [^/]*? 是为了兼容 tnpm 的目录结构 // // 比如:_umi-test@1.5.5@umi-test // `node_modules/(?!([^/]*?umi|[^/]*?umi-test|[^/]*?enzyme-adapter-react-16|${transformInclude.join( // '|', // )})/)`, // ], testMatch: ['**/?*.(spec|test|e2e).(j|t)s?(x)'], moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json'], // moduleNameMapper: { // '\\.(css|less|sass|scss)$': require.resolve('identity-obj-proxy'), // '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': // require.resolve('./fileMock.js'), // ...(moduleNameMapper || {}), // ...(userModuleNameMapper || {}), // }, testPathIgnorePatterns: ['/node_modules/'] // 用于设置 jest worker 启动的个数 }; return config; } function _default() { var originOpts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var opts = (0, _objectSpread2.default)({}, originOpts); var cwd = process.cwd(); var config = getConfig(); // Merge `jest.config.js` var userJestConfigFile = _path.default.resolve(cwd, 'jest.config.js'); if (_fsExtra.default.existsSync(userJestConfigFile)) { var _require = require(userJestConfigFile), _require$setupFiles = _require.setupFiles, setupFiles = _require$setupFiles === void 0 ? [] : _require$setupFiles, _require$setupFilesAf = _require.setupFilesAfterEnv, setupFilesAfterEnv = _require$setupFilesAf === void 0 ? [] : _require$setupFilesAf, restConfig = (0, _objectWithoutProperties2.default)(_require, _excluded); config = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), restConfig), {}, { setupFiles: [].concat((0, _toConsumableArray2.default)(config.setupFiles), (0, _toConsumableArray2.default)(setupFiles)), setupFilesAfterEnv: [].concat((0, _toConsumableArray2.default)(config.setupFilesAfterEnv), (0, _toConsumableArray2.default)(setupFilesAfterEnv)) }); } // Fill jest alias Object.keys(ALIAS).forEach(function (key) { if (opts[key]) { opts[ALIAS[key]] = opts[key]; delete opts[key]; } }); return new Promise(function (resolve, reject) { var originEnv = process.env.NODE_ENV; process.env.NODE_ENV = 'test'; (0, _jest.runCLI)((0, _objectSpread2.default)({ config: JSON.stringify(config) }, opts), [cwd]).then(function (result) { var results = result.results; if (results.success) { resolve(results); } else { reject(new Error('Jest failed')); } }).catch(function (e) { console.log(e); }).then(function () { process.env.NODE_ENV = originEnv; }); }); }