text: /**
   * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   *
   */
  
  'use strict';
  
  const path = require('path');
  
  const cwd = process.cwd();
  
  let createLocalRuntime;
  
  describe('Runtime', () => {
    beforeEach(() => {
      jest.resetModules();
  
      createLocalRuntime = (nodePath, config) => {
        process.env.NODE_PATH = nodePath;
        const createRuntime = require('createRuntime');
        return createRuntime(__filename, config);
      };
    });
  
    it('uses NODE_PATH to find modules', async () => {
      const nodePath = __dirname + '/NODE_PATH_dir';
      const runtime = await createLocalRuntime(nodePath);
      const exports = runtime.requireModuleOrMock(
        runtime.__mockRootPath,
        'regular_module_in_node_path',
      );
      expect(exports).toBeDefined();
    });
  
    it('uses modulePaths to find modules', async () => {
      const nodePath = __dirname + '/NODE_PATH_dir';
      const runtime = await createLocalRuntime(null, {modulePaths: [nodePath]});
      const exports = runtime.requireModuleOrMock(
        runtime.__mockRootPath,
        'regular_module_in_node_path',
      );
      expect(exports).toBeDefined();
    });
  
    it('finds modules in NODE_PATH containing multiple paths', async () => {
      const nodePath =
        cwd + '/some/other/path' + path.delimiter + __dirname + '/NODE_PATH_dir';
      const runtime = await createLocalRuntime(nodePath);
      const exports = runtime.requireModuleOrMock(
        runtime.__mockRootPath,
        'regular_module_in_node_path',
      );
      expect(exports).toBeDefined();
    });
  
    it('does not find modules if NODE_PATH is relative', async () => {
      const nodePath =
        cwd.substr(path.sep.length) + 'src/Runtime/__tests__/NODE_PATH_dir';
      const runtime = await createLocalRuntime(nodePath);
      expect(() => {
        runtime.requireModuleOrMock(
          runtime.__mockRootPath,
          'regular_module_in_node_path',
        );
      }).toThrow(
        new Error(
          `Cannot find module 'regular_module_in_node_path' from 'root.js'`,
        ),
      );
    });
  });
  