Skip to content

Commit

Permalink
test: refactor test-esm-type-field-errors
Browse files Browse the repository at this point in the history
Co-Authored-By: Jacob Smith <jacob@frende.me>
PR-URL: #54368
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
2 people authored and targos committed Sep 22, 2024
1 parent 75c1ace commit bccf4a7
Showing 1 changed file with 37 additions and 12 deletions.
49 changes: 37 additions & 12 deletions test/es-module/test-esm-type-field-errors.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
const common = require('../common');
const assert = require('assert');
const exec = require('child_process').execFile;
const { describe, it } = require('node:test');

const mjsFile = require.resolve('../fixtures/es-modules/mjs-file.mjs');
const cjsFile = require.resolve('../fixtures/es-modules/cjs-file.cjs');
Expand All @@ -20,18 +21,42 @@ expect('', packageTypeCommonJsMain, 'package-type-commonjs');
expect('', packageWithoutTypeMain, 'package-without-type');

// Check that --input-type isn't allowed for files
expect('--input-type=module', packageTypeModuleMain,
'ERR_INPUT_TYPE_NOT_ALLOWED', true);

try {
require('../fixtures/es-modules/package-type-module/index.js');
assert.fail('Expected CJS to fail loading from type: module package.');
} catch (e) {
assert.strictEqual(e.name, 'Error');
assert.strictEqual(e.code, 'ERR_REQUIRE_ESM');
assert(e.toString().match(/require\(\) of ES Module/g));
assert(e.message.match(/require\(\) of ES Module/g));
}
describe('ESM type field errors', { concurrency: true }, () => {
it('.cjs file', () => {
expect('', cjsFile, '.cjs file');
});

it('.mjs file', () => {
expect('', mjsFile, '.mjs file');
});

it('package.json with "type": "module"', () => {
expect('', packageTypeModuleMain, 'package-type-module');
});

it('package.json with "type": "commonjs"', () => {
expect('', packageTypeCommonJsMain, 'package-type-commonjs');
});

it('package.json with no "type" field', () => {
expect('', packageWithoutTypeMain, 'package-without-type');
});

it('--input-type=module disallowed for files', () => {
expect(
'--input-type=module',
packageTypeModuleMain,
'ERR_INPUT_TYPE_NOT_ALLOWED',
true,
);
});

it('--input-type=module disallowed for directories', () => {
assert.throws(() => require('../fixtures/es-modules/package-type-module/index.js'), {
code: 'ERR_REQUIRE_ESM'
});
});
});

function expect(opt = '', inputFile, want, wantsError = false) {
const argv = [inputFile];
Expand Down

0 comments on commit bccf4a7

Please sign in to comment.