node/test/parallel/test-require-resolve-opts-p...

45 lines
1.6 KiB
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const fixtures = require('../common/fixtures');
const { isMainThread } = require('worker_threads');
if (!isMainThread)
common.skip('process.chdir is not available in Workers');
const subdir = fixtures.path('module-require', 'relative', 'subdir');
process.chdir(subdir);
// Parent directory paths (`..`) work as intended
{
assert(require.resolve('.', { paths: ['../'] }).endsWith('index.js'));
assert(require.resolve('./index.js', { paths: ['../'] }).endsWith('index.js'));
// paths: [".."] should resolve like paths: ["../"]
assert(require.resolve('.', { paths: ['..'] }).endsWith('index.js'));
assert(require.resolve('./index.js', { paths: ['..'] }).endsWith('index.js'));
}
process.chdir('..');
// Current directory paths (`.`) work as intended
{
assert(require.resolve('.', { paths: ['.'] }).endsWith('index.js'));
assert(require.resolve('./index.js', { paths: ['./'] }).endsWith('index.js'));
// paths: ["."] should resolve like paths: ["../"]
assert(require.resolve('.', { paths: ['.'] }).endsWith('index.js'));
assert(require.resolve('./index.js', { paths: ['.'] }).endsWith('index.js'));
}
// Sub directory paths work as intended
{
// assert.deepStrictEqual(fs.readdirSync('./subdir'), [5]);
assert(require.resolve('./relative-subdir.js', { paths: ['./subdir'] }).endsWith('relative-subdir.js'));
// paths: ["subdir"] should resolve like paths: ["./subdir"]
assert(require.resolve('./relative-subdir.js', { paths: ['subdir'] }).endsWith('relative-subdir.js'));
}