node/test/parallel/test-package-map-cli.js
Maël Nison 2f2b81095b
loader: implement package maps
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>
2026-06-12 16:02:01 +00:00

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);
});
});