text: 'use strict';
  require('../common');
  const assert = require('assert');
  const path = require('path');
  const nodeModules = path.join(__dirname, 'node_modules');
  const nestedNodeModules = path.join(__dirname, 'node_modules', 'node_modules');
  const nestedIndex = path.join(__dirname, 'nested-index');
  
  // Test the default behavior.
  assert.strictEqual(
    require.resolve('bar'),
    path.join(nodeModules, 'bar.js')
  );
  
  // Verify that existing paths are removed.
  assert.throws(() => {
    require.resolve('bar', { paths: [] })
  }, /^Error: Cannot find module 'bar'$/);
  
  // Verify that resolution path can be overwritten.
  {
    // three.js cannot be loaded from this file by default.
    assert.throws(() => {
      require.resolve('three')
    }, /^Error: Cannot find module 'three'$/);
  
    // If the nested-index directory is provided as a resolve path, 'three'
    // cannot be found because nested-index is used as a starting point and not
    // a searched directory.
    assert.throws(() => {
      require.resolve('three', { paths: [nestedIndex] })
    }, /^Error: Cannot find module 'three'$/);
  
    // Resolution from nested index directory also checks node_modules.
    assert.strictEqual(
      require.resolve('bar', { paths: [nestedIndex] }),
      path.join(nodeModules, 'bar.js')
    );
  }
  
  // Verify that the default paths can be used and modified.
  {
    const paths = require.resolve.paths('bar');
  
    assert.strictEqual(paths[0], nodeModules);
    assert.strictEqual(
      require.resolve('bar', { paths }),
      path.join(nodeModules, 'bar.js')
    );
  
    paths.unshift(nestedNodeModules);
    assert.strictEqual(
      require.resolve('bar', { paths }),
      path.join(nodeModules, 'bar.js')
    );
  }
  