diff options
author | Giorgos Ntemiris <ntemirisgiorgos3@gmail.com> | 2019-07-27 20:23:25 +0200 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2019-08-13 11:19:48 -0700 |
commit | 427e5348a267b7c88879b47f8d942fc3e84b30e9 (patch) | |
tree | 1f0cd8630b7754cb15a343854bdb9ae0fd0cc444 /test/es-module | |
parent | a49b20d3245dd2a4d890e28582f3c013c07c3136 (diff) | |
download | android-node-v8-427e5348a267b7c88879b47f8d942fc3e84b30e9.tar.gz android-node-v8-427e5348a267b7c88879b47f8d942fc3e84b30e9.tar.bz2 android-node-v8-427e5348a267b7c88879b47f8d942fc3e84b30e9.zip |
module: add warning when import,export is detected in CJS context
This will allow users to know how to change their project to support
ES modules.
PR-URL: https://github.com/nodejs/node/pull/28950
Reviewed-By: Bradley Farias <bradley.meck@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Diffstat (limited to 'test/es-module')
-rw-r--r-- | test/es-module/test-esm-cjs-load-error-note.mjs | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/test/es-module/test-esm-cjs-load-error-note.mjs b/test/es-module/test-esm-cjs-load-error-note.mjs new file mode 100644 index 0000000000..ce0d1d7969 --- /dev/null +++ b/test/es-module/test-esm-cjs-load-error-note.mjs @@ -0,0 +1,136 @@ +// Flags: --experimental-modules + +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, ['--experimental-modules', 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, ['--experimental-modules', 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}`); +})); +// The flag --experimental-modules is not used here +// the note must not be included in the output +const pExport3 = spawn(process.execPath, [Export1]); +let pExport3Stderr = ''; +pExport3.stderr.setEncoding('utf8'); +pExport3.stderr.on('data', (data) => { + pExport3Stderr += data; +}); +pExport3.on('close', mustCall((code) => { + assert.strictEqual(code, expectedCode); + assert.ok(!pExport3Stderr.includes(expectedNote), + `${expectedNote} must not be included in ${pExport3Stderr}`); +})); + +const pImport1 = spawn(process.execPath, ['--experimental-modules', 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, ['--experimental-modules', 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, ['--experimental-modules', 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, ['--experimental-modules', 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, ['--experimental-modules', 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}`); +})); + +// Must exit with zero and not show note +const pImport6 = spawn(process.execPath, [Import1]); +let pImport6Stderr = ''; +pImport6.stderr.setEncoding('utf8'); +pImport6.stderr.on('data', (data) => { + pImport6Stderr += data; +}); +pImport6.on('close', mustCall((code) => { + assert.strictEqual(code, expectedCode); + assert.ok(!pImport6Stderr.includes(expectedNote), + `${expectedNote} must not be included in ${pImport6Stderr}`); +})); |