Signed-off-by: Mael Nison <nison.mael@gmail.com> PR-URL: https://github.com/nodejs/node/pull/62239 Reviewed-By: Aviv Keller <me@aviv.sh> Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
79 lines
2.3 KiB
JavaScript
79 lines
2.3 KiB
JavaScript
'use strict';
|
|
|
|
require('../common');
|
|
const fixtures = require('../common/fixtures');
|
|
const assert = require('node:assert');
|
|
const { spawnSync } = require('node:child_process');
|
|
const { describe, it } = require('node:test');
|
|
|
|
const onlyIfNodeOptionsSupport = {
|
|
skip: process.config.variables.node_without_node_options,
|
|
};
|
|
|
|
describe('--experimental-package-map CLI behavior', () => {
|
|
|
|
it('works via NODE_OPTIONS', onlyIfNodeOptionsSupport, () => {
|
|
const { status, stdout, stderr } = spawnSync(process.execPath, [
|
|
'--no-warnings',
|
|
'-e',
|
|
`const dep = require('dep-a'); console.log(dep);`,
|
|
], {
|
|
cwd: fixtures.path('package-map/root'),
|
|
encoding: 'utf8',
|
|
env: {
|
|
...process.env,
|
|
NODE_OPTIONS: `--experimental-package-map=${JSON.stringify(fixtures.path('package-map/package-map.json'))}`,
|
|
},
|
|
});
|
|
|
|
assert.strictEqual(stderr, '');
|
|
assert.match(stdout, /dep-a-value/);
|
|
assert.strictEqual(status, 0, stderr);
|
|
});
|
|
|
|
it('emits experimental warning on first use', () => {
|
|
const { status, stderr } = spawnSync(process.execPath, [
|
|
'--experimental-package-map', fixtures.path('package-map/package-map.json'),
|
|
'-e',
|
|
`require('dep-a');`,
|
|
], {
|
|
cwd: fixtures.path('package-map/root'),
|
|
encoding: 'utf8',
|
|
});
|
|
|
|
assert.match(stderr, /ExperimentalWarning/);
|
|
assert.match(stderr, /[Pp]ackage map/);
|
|
assert.strictEqual(status, 0, stderr);
|
|
});
|
|
|
|
it('accepts relative path', () => {
|
|
const { status, stdout, stderr } = spawnSync(process.execPath, [
|
|
'--no-warnings',
|
|
'--experimental-package-map', '../package-map.json',
|
|
'-e',
|
|
`const dep = require('dep-a'); console.log(dep.default);`,
|
|
], {
|
|
cwd: fixtures.path('package-map/root'),
|
|
encoding: 'utf8',
|
|
});
|
|
|
|
assert.strictEqual(stderr, '');
|
|
// Relative path ../package-map.json resolved from cwd (root/)
|
|
assert.match(stdout, /dep-a-value/);
|
|
assert.strictEqual(status, 0, stderr);
|
|
});
|
|
|
|
it('accepts absolute path', () => {
|
|
const { status, stderr } = spawnSync(process.execPath, [
|
|
'--no-warnings',
|
|
'--experimental-package-map', fixtures.path('package-map/package-map.json'),
|
|
'-e',
|
|
`console.log('ok');`,
|
|
], {
|
|
encoding: 'utf8',
|
|
});
|
|
|
|
assert.strictEqual(stderr, '');
|
|
assert.strictEqual(status, 0, stderr);
|
|
});
|
|
});
|