109 lines
3.7 KiB
JavaScript
109 lines
3.7 KiB
JavaScript
import { mustCall } from '../common/index.mjs';
|
|
import assert from 'assert';
|
|
import fixtures from '../common/fixtures.js';
|
|
import { spawn } from 'child_process';
|
|
|
|
const Export1 = fixtures.path('/es-modules/es-note-unexpected-export-1.cjs');
|
|
const Export2 = fixtures.path('/es-modules/es-note-unexpected-export-2.cjs');
|
|
const Import1 = fixtures.path('/es-modules/es-note-unexpected-import-1.cjs');
|
|
const Import2 = fixtures.path('/es-modules/es-note-promiserej-import-2.cjs');
|
|
const Import3 = fixtures.path('/es-modules/es-note-unexpected-import-3.cjs');
|
|
const Import4 = fixtures.path('/es-modules/es-note-unexpected-import-4.cjs');
|
|
const Import5 = fixtures.path('/es-modules/es-note-unexpected-import-5.cjs');
|
|
|
|
// Expect note to be included in the error output
|
|
const expectedNote = 'To load an ES module, ' +
|
|
'set "type": "module" in the package.json ' +
|
|
'or use the .mjs extension.';
|
|
|
|
const expectedCode = 1;
|
|
|
|
const pExport1 = spawn(process.execPath, [Export1]);
|
|
let pExport1Stderr = '';
|
|
pExport1.stderr.setEncoding('utf8');
|
|
pExport1.stderr.on('data', (data) => {
|
|
pExport1Stderr += data;
|
|
});
|
|
pExport1.on('close', mustCall((code) => {
|
|
assert.strictEqual(code, expectedCode);
|
|
assert.ok(pExport1Stderr.includes(expectedNote),
|
|
`${expectedNote} not found in ${pExport1Stderr}`);
|
|
}));
|
|
|
|
|
|
const pExport2 = spawn(process.execPath, [Export2]);
|
|
let pExport2Stderr = '';
|
|
pExport2.stderr.setEncoding('utf8');
|
|
pExport2.stderr.on('data', (data) => {
|
|
pExport2Stderr += data;
|
|
});
|
|
pExport2.on('close', mustCall((code) => {
|
|
assert.strictEqual(code, expectedCode);
|
|
assert.ok(pExport2Stderr.includes(expectedNote),
|
|
`${expectedNote} not found in ${pExport2Stderr}`);
|
|
}));
|
|
|
|
const pImport1 = spawn(process.execPath, [Import1]);
|
|
let pImport1Stderr = '';
|
|
pImport1.stderr.setEncoding('utf8');
|
|
pImport1.stderr.on('data', (data) => {
|
|
pImport1Stderr += data;
|
|
});
|
|
pImport1.on('close', mustCall((code) => {
|
|
assert.strictEqual(code, expectedCode);
|
|
assert.ok(pImport1Stderr.includes(expectedNote),
|
|
`${expectedNote} not found in ${pExport1Stderr}`);
|
|
}));
|
|
|
|
// Note this test shouldn't include the note
|
|
const pImport2 = spawn(process.execPath, [Import2]);
|
|
let pImport2Stderr = '';
|
|
pImport2.stderr.setEncoding('utf8');
|
|
pImport2.stderr.on('data', (data) => {
|
|
pImport2Stderr += data;
|
|
});
|
|
pImport2.on('close', mustCall((code) => {
|
|
// As this exits normally we expect 0
|
|
assert.strictEqual(code, 0);
|
|
assert.ok(!pImport2Stderr.includes(expectedNote),
|
|
`${expectedNote} must not be included in ${pImport2Stderr}`);
|
|
}));
|
|
|
|
const pImport3 = spawn(process.execPath, [Import3]);
|
|
let pImport3Stderr = '';
|
|
pImport3.stderr.setEncoding('utf8');
|
|
pImport3.stderr.on('data', (data) => {
|
|
pImport3Stderr += data;
|
|
});
|
|
pImport3.on('close', mustCall((code) => {
|
|
assert.strictEqual(code, expectedCode);
|
|
assert.ok(pImport3Stderr.includes(expectedNote),
|
|
`${expectedNote} not found in ${pImport3Stderr}`);
|
|
}));
|
|
|
|
|
|
const pImport4 = spawn(process.execPath, [Import4]);
|
|
let pImport4Stderr = '';
|
|
pImport4.stderr.setEncoding('utf8');
|
|
pImport4.stderr.on('data', (data) => {
|
|
pImport4Stderr += data;
|
|
});
|
|
pImport4.on('close', mustCall((code) => {
|
|
assert.strictEqual(code, expectedCode);
|
|
assert.ok(pImport4Stderr.includes(expectedNote),
|
|
`${expectedNote} not found in ${pImport4Stderr}`);
|
|
}));
|
|
|
|
// Must exit with zero and show note
|
|
const pImport5 = spawn(process.execPath, [Import5]);
|
|
let pImport5Stderr = '';
|
|
pImport5.stderr.setEncoding('utf8');
|
|
pImport5.stderr.on('data', (data) => {
|
|
pImport5Stderr += data;
|
|
});
|
|
pImport5.on('close', mustCall((code) => {
|
|
assert.strictEqual(code, 0);
|
|
assert.ok(!pImport5Stderr.includes(expectedNote),
|
|
`${expectedNote} must not be included in ${pImport5Stderr}`);
|
|
}));
|