summaryrefslogtreecommitdiff
path: root/test/es-module/test-esm-type-flag-errors.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/es-module/test-esm-type-flag-errors.js')
-rw-r--r--test/es-module/test-esm-type-flag-errors.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/test/es-module/test-esm-type-flag-errors.js b/test/es-module/test-esm-type-flag-errors.js
new file mode 100644
index 0000000000..612ada584d
--- /dev/null
+++ b/test/es-module/test-esm-type-flag-errors.js
@@ -0,0 +1,53 @@
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const exec = require('child_process').execFile;
+
+const mjsFile = require.resolve('../fixtures/es-modules/mjs-file.mjs');
+const cjsFile = require.resolve('../fixtures/es-modules/cjs-file.cjs');
+const packageWithoutTypeMain =
+ require.resolve('../fixtures/es-modules/package-without-type/index.js');
+const packageTypeCommonJsMain =
+ require.resolve('../fixtures/es-modules/package-type-commonjs/index.js');
+const packageTypeModuleMain =
+ require.resolve('../fixtures/es-modules/package-type-module/index.js');
+
+// Check that running `node` without options works
+expect('', mjsFile, '.mjs file');
+expect('', cjsFile, '.cjs file');
+expect('', packageTypeModuleMain, 'package-type-module');
+expect('', packageTypeCommonJsMain, 'package-type-commonjs');
+expect('', packageWithoutTypeMain, 'package-without-type');
+
+// Check that running with --entry-type and no package.json "type" works
+expect('--entry-type=commonjs', packageWithoutTypeMain, 'package-without-type');
+expect('--entry-type=module', packageWithoutTypeMain, 'package-without-type');
+
+// Check that running with conflicting --entry-type flags throws errors
+expect('--entry-type=commonjs', mjsFile, 'ERR_ENTRY_TYPE_MISMATCH', true);
+expect('--entry-type=module', cjsFile, 'ERR_ENTRY_TYPE_MISMATCH', true);
+expect('--entry-type=commonjs', packageTypeModuleMain,
+ 'ERR_ENTRY_TYPE_MISMATCH', true);
+expect('--entry-type=module', packageTypeCommonJsMain,
+ 'ERR_ENTRY_TYPE_MISMATCH', true);
+
+function expect(opt = '', inputFile, want, wantsError = false) {
+ // TODO: Remove when --experimental-modules is unflagged
+ opt = `--experimental-modules ${opt}`;
+ const argv = [inputFile];
+ const opts = {
+ env: Object.assign({}, process.env, { NODE_OPTIONS: opt }),
+ maxBuffer: 1e6,
+ };
+ exec(process.execPath, argv, opts, common.mustCall((err, stdout, stderr) => {
+ if (wantsError) {
+ stdout = stderr;
+ } else {
+ assert.ifError(err);
+ }
+ if (stdout.includes(want)) return;
+
+ const o = JSON.stringify(opt);
+ assert.fail(`For ${o}, failed to find ${want} in: <\n${stdout}\n>`);
+ }));
+}