-
-
Notifications
You must be signed in to change notification settings - Fork 35k
Expand file tree
/
Copy pathtest-module-subpath-import-long-path.js
More file actions
40 lines (32 loc) · 1.24 KB
/
test-module-subpath-import-long-path.js
File metadata and controls
40 lines (32 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Regression test for https://github.com/nodejs/node/issues/62043
'use strict';
const common = require('../common');
if (!common.isWindows) {
common.skip('this test is Windows-specific.');
}
const fs = require('fs');
const { createRequire } = require('module');
const path = require('path');
const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
const TARGET = 260; // Shortest length that used to trigger the bug
const fixedLen = tmpdir.path.length + 2 + 'package.json'.length;
const dirNameLen = Math.max(TARGET - fixedLen, 1);
const dir = path.join(tmpdir.path, 'a'.repeat(dirNameLen));
const depDir = path.join(dir, 'node_modules', 'dep');
const packageJsonPath = path.join(dir, 'package.json');
fs.mkdirSync(depDir, { recursive: true });
fs.writeFileSync(
packageJsonPath,
JSON.stringify({ imports: { '#foo': './foo.mjs' } }),
);
fs.writeFileSync(path.join(dir, 'foo.mjs'), 'export default 1;\n');
fs.writeFileSync(
path.join(depDir, 'package.json'),
JSON.stringify({ name: 'dep', exports: { '.': './index.mjs' } }),
);
fs.writeFileSync(path.join(depDir, 'index.mjs'), 'export default 1;\n');
const req = createRequire(path.join(dir, '_.mjs'));
// Both resolves should succeed without throwing
req.resolve('dep');
req.resolve('#foo');