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