Skip to content

Commit

Permalink
add workaround for broken nested webpack detection in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
developit committed May 23, 2022
1 parent 4346b0b commit dead01f
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 8 deletions.
5 changes: 3 additions & 2 deletions e2e-test/default/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
"description": "Test default config in karmatic.",
"private": true,
"scripts": {
"test:debug": "cross-env NODE_PRESERVE_SYMLINKS_MAIN=1 NODE_PRESERVE_SYMLINKS=1 node ./node_modules/karmatic/dist/cli.js debug"
"test:debug": "cross-env NODE_PRESERVE_SYMLINKS_MAIN=1 NODE_PRESERVE_SYMLINKS=1 node ./node_modules/karmatic/dist/cli.js debug --no-webpack",
"test": "node ./node_modules/karmatic/dist/cli.js --no-webpack"
},
"dependencies": {
"karmatic": "file:../.."
},
"devDependencies": {
"cross-env": "^7.0.2"
"cross-env": "^7.0.3"
}
}
3 changes: 2 additions & 1 deletion e2e-test/rollup-custom/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"description": "Test custom rollup config in karmatic",
"private": true,
"scripts": {
"test:debug": "cross-env NODE_PRESERVE_SYMLINKS_MAIN=1 NODE_PRESERVE_SYMLINKS=1 node ./node_modules/karmatic/dist/cli.js debug"
"test:debug": "cross-env NODE_PRESERVE_SYMLINKS_MAIN=1 NODE_PRESERVE_SYMLINKS=1 node ./node_modules/karmatic/dist/cli.js debug --no-webpack",
"test": "node ./node_modules/karmatic/dist/cli.js --no-webpack"
},
"dependencies": {
"@babel/core": "^7.10.3",
Expand Down
3 changes: 2 additions & 1 deletion e2e-test/rollup-default/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"description": "Test default rollup config in karmatic. Mildly complex src implementation to verify coverage works",
"private": true,
"scripts": {
"test:debug": "cross-env NODE_PRESERVE_SYMLINKS_MAIN=1 NODE_PRESERVE_SYMLINKS=1 node ./node_modules/karmatic/dist/cli.js debug"
"test:debug": "cross-env NODE_PRESERVE_SYMLINKS_MAIN=1 NODE_PRESERVE_SYMLINKS=1 node ./node_modules/karmatic/dist/cli.js debug --no-webpack",
"test": "node ./node_modules/karmatic/dist/cli.js --no-webpack"
},
"dependencies": {
"rollup": "^2.3.0",
Expand Down
2 changes: 2 additions & 0 deletions src/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ prog
.option('--headless', 'Run using Chrome Headless', true)
.option('--coverage', 'Report code coverage of tests', true)
.option('--downlevel', 'Downlevel syntax to ES5')
.option('--webpack', 'Force Webpack usage (--no-webpack disables detection)')
.option('--chromeDataDir', 'Save Chrome preferences');

prog
Expand Down Expand Up @@ -52,6 +53,7 @@ function run(str, opts, isWatch) {
opts.files = toArray(str || opts.files).concat(opts._);
const b = opts.browsers || opts.browser;
opts.browsers = b ? toArray(b) : null;

karmatic(opts)
.then((output) => {
if (output != null) process.stdout.write(output + '\n');
Expand Down
6 changes: 5 additions & 1 deletion src/configure.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { addRollupConfig } from './rollup';
* @property {Boolean} [headless=false] - Run in Headless Chrome?
* @property {Boolean} [watch=false] - Start a continuous test server and retest when files change
* @property {Boolean} [coverage=false] - Instrument and collect code coverage statistics
* @property {Boolean} [webpack] - Override webpack detection (true to force, false to disable)
* @property {Object} [webpackConfig] - Custom webpack configuration
* @property {Object} [rollupConfig] - Custom rollup configuration
* @property {string} [pragma] - JSX pragma to compile JSX with
Expand Down Expand Up @@ -218,7 +219,10 @@ export default async function configure(options) {
},
};

if (shouldUseWebpack(options)) {
if (
options.webpack === true ||
(options.webpack !== false && shouldUseWebpack(options))
) {
addWebpackConfig(generatedConfig, pkg, options);
} else {
await addRollupConfig(generatedConfig, pkg, options);
Expand Down
10 changes: 7 additions & 3 deletions src/rollup.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
import { babelConfig } from './lib/babel';
import { res, fileExists } from './lib/util';

/** @type {<T>(t: T)=>T extends { default: any } ? T['default'] : T} */
const getDefault = (mod) => mod.default || mod;

/**
* @param {import('./configure').Options} options
* @returns {import('rollup').RollupOptions}
*/
function getDefaultConfig(options) {
let babel = require('@rollup/plugin-babel').default;
let commonjs = require('@rollup/plugin-commonjs');
let nodeResolve = require('@rollup/plugin-node-resolve').default;
let babel = getDefault(require('@rollup/plugin-babel'));
let commonjs = getDefault(require('@rollup/plugin-commonjs'));
let nodeResolve = getDefault(require('@rollup/plugin-node-resolve'));

return {
output: {
Expand Down

0 comments on commit dead01f

Please sign in to comment.