diff --git a/lib/test-worker.js b/lib/test-worker.js index 84fba364e..952d55bb9 100644 --- a/lib/test-worker.js +++ b/lib/test-worker.js @@ -27,7 +27,13 @@ globals.options = opts; const serializeError = require('./serialize-error'); -(opts.require || []).forEach(x => require(x)); +(opts.require || []).forEach(x => { + if (/[/\\]@std[/\\]esm[/\\]index\.js$/.test(x)) { + require = require(x)(module); // eslint-disable-line no-global-assign + } else { + require(x); + } +}); adapter.installSourceMapSupport(); adapter.installPrecompilerHook(); diff --git a/package-lock.json b/package-lock.json index 8430164b4..7466d6eb5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -130,6 +130,12 @@ } } }, + "@std/esm": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@std/esm/-/esm-0.19.1.tgz", + "integrity": "sha512-4Ph4hdaDIkt5sChK565oU16Wa9jcBwLbiNAMEB6fyQZlBw5uz3UpxTo/ZohjeILgJfNtb/l1HzVql1ys5s74Ww==", + "dev": true + }, "abbrev": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", diff --git a/package.json b/package.json index 76e5aa31e..8ca028aeb 100644 --- a/package.json +++ b/package.json @@ -146,6 +146,7 @@ "update-notifier": "^2.3.0" }, "devDependencies": { + "@std/esm": "^0.19.1", "cli-table2": "^0.2.0", "codecov": "^3.0.0", "del": "^3.0.0", diff --git a/test/fixture/std-esm/.esmrc b/test/fixture/std-esm/.esmrc new file mode 100644 index 000000000..807ee2da6 --- /dev/null +++ b/test/fixture/std-esm/.esmrc @@ -0,0 +1,3 @@ +{ + "esm": "cjs" +} diff --git a/test/fixture/std-esm/index.js b/test/fixture/std-esm/index.js new file mode 100644 index 000000000..d02ba545b --- /dev/null +++ b/test/fixture/std-esm/index.js @@ -0,0 +1 @@ +export default 'foo'; diff --git a/test/fixture/std-esm/test.js b/test/fixture/std-esm/test.js new file mode 100644 index 000000000..4213c80a0 --- /dev/null +++ b/test/fixture/std-esm/test.js @@ -0,0 +1,6 @@ +import test from '../../../'; +import m from '.'; + +test('works', t => { + t.is(m, 'foo'); +}); diff --git a/test/fork.js b/test/fork.js index c31e9ebf8..86cf966b7 100644 --- a/test/fork.js +++ b/test/fork.js @@ -135,6 +135,17 @@ test('babelrc is ignored', t => { }); }); +test('@std/esm support', t => { + return fork(fixture('std-esm/test.js'), { + require: [require.resolve('@std/esm')] + }) + .run({}) + .then(info => { + t.is(info.stats.passCount, 1); + t.end(); + }); +}); + // TODO: Skipped until we can do this properly in #1455 test('color support is initialized correctly', t => { t.plan(1);