Skip to content

Commit

Permalink
chore: remove dependency on realpath-native (#9952)
Browse files Browse the repository at this point in the history
  • Loading branch information
SimenB committed May 2, 2020
1 parent cab5c39 commit 1cc205c
Show file tree
Hide file tree
Showing 26 changed files with 72 additions and 65 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -15,6 +15,7 @@
- `[*]` [**BREAKING**] TypeScript definitions requires a minimum of TypeScript v3.8 ([#9823](https://github.com/facebook/jest/pull/9823))
- `[*]` [**BREAKING**] Drop support for Node 8 ([#9423](https://github.com/facebook/jest/pull/9423))
- `[*]` Upgrade to chalk@4 ([#9752](https://github.com/facebook/jest/pull/9752))
- `[*]` Remove usage of `realpath-native` ([#9952](https://github.com/facebook/jest/pull/9952))
- `[jest-runtime]` [**BREAKING**] Remove long-deprecated `require.requireActual` and `require.requireMock` methods ([#9854](https://github.com/facebook/jest/pull/9854))
- `[expect, jest-mock, pretty-format]` [**BREAKING**] Remove `build-es5` from package ([#9945](https://github.com/facebook/jest/pull/9945))
- `[jest-haste-map]` [**BREAKING**] removed `providesModuleNodeModules` ([#8535](https://github.com/facebook/jest/pull/8535))
Expand Down
4 changes: 2 additions & 2 deletions e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap
Expand Up @@ -36,7 +36,7 @@ FAIL __tests__/index.js
12 | module.exports = () => 'test';
13 |
at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:542:17)
at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:541:17)
at Object.require (index.js:10:1)
`;

Expand Down Expand Up @@ -65,6 +65,6 @@ FAIL __tests__/index.js
12 | module.exports = () => 'test';
13 |
at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:542:17)
at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:541:17)
at Object.require (index.js:10:1)
`;
Expand Up @@ -37,6 +37,6 @@ FAIL __tests__/test.js
| ^
9 |
at Resolver.resolveModule (../../packages/jest-resolve/build/index.js:297:11)
at Resolver.resolveModule (../../packages/jest-resolve/build/index.js:296:11)
at Object.require (index.js:8:18)
`;
4 changes: 2 additions & 2 deletions e2e/__tests__/hasteMapSize.test.ts
Expand Up @@ -7,11 +7,11 @@

import {tmpdir} from 'os';
import * as path from 'path';
import {realpathSync} from 'graceful-fs';
import HasteMap = require('jest-haste-map');
import {sync as realpath} from 'realpath-native';
import {cleanup, writeFiles} from '../Utils';

const DIR = path.resolve(realpath(tmpdir()), 'haste_map_size');
const DIR = path.resolve(realpathSync.native(tmpdir()), 'haste_map_size');

beforeEach(() => {
cleanup(DIR);
Expand Down
1 change: 0 additions & 1 deletion package.json
Expand Up @@ -65,7 +65,6 @@
"prettier": "^2.0.1",
"progress": "^2.0.0",
"promise": "^8.0.2",
"realpath-native": "^2.0.0",
"resolve": "^1.15.0",
"rimraf": "^3.0.0",
"semver": "^7.3.2",
Expand Down
1 change: 0 additions & 1 deletion packages/jest-cli/package.json
Expand Up @@ -17,7 +17,6 @@
"jest-util": "^26.0.0-alpha.0",
"jest-validate": "^26.0.0-alpha.0",
"prompts": "^2.0.1",
"realpath-native": "^2.0.0",
"yargs": "^15.3.1"
},
"devDependencies": {
Expand Down
5 changes: 2 additions & 3 deletions packages/jest-cli/src/cli/index.ts
Expand Up @@ -8,14 +8,13 @@
import * as path from 'path';
import type {Config} from '@jest/types';
import type {AggregatedResult} from '@jest/test-result';
import {clearLine} from 'jest-util';
import {clearLine, tryRealpath} from 'jest-util';
import {validateCLIOptions} from 'jest-validate';
import {deprecationEntries} from 'jest-config';
import {getVersion, runCLI} from '@jest/core';
import chalk = require('chalk');
import exit = require('exit');
import yargs = require('yargs');
import {sync as realpath} from 'realpath-native';
import init from '../init';
import * as args from './args';

Expand Down Expand Up @@ -97,7 +96,7 @@ const getProjectListFromCLIArgs = (

if (!projects.length && process.platform === 'win32') {
try {
projects.push(realpath(process.cwd()));
projects.push(tryRealpath(process.cwd()));
} catch (err) {
// do nothing, just catch error
// process.binding('fs').realpath can throw, e.g. on mapped drives
Expand Down
4 changes: 2 additions & 2 deletions packages/jest-cli/src/init/index.ts
Expand Up @@ -9,8 +9,8 @@ import * as path from 'path';
import * as fs from 'graceful-fs';
import chalk = require('chalk');
import prompts = require('prompts');
import {sync as realpath} from 'realpath-native';
import {constants} from 'jest-config';
import {tryRealpath} from 'jest-util';
import defaultQuestions, {testScriptQuestion} from './questions';
import {MalformedPackageJsonError, NotFoundPackageJsonError} from './errors';
import generateConfigFile from './generate_config_file';
Expand All @@ -35,7 +35,7 @@ type PromptsResults = {
const getConfigFilename = (ext: string) => JEST_CONFIG_BASE_NAME + ext;

export default async (
rootDir: string = realpath(process.cwd()),
rootDir: string = tryRealpath(process.cwd()),
): Promise<void> => {
// prerequisite checks
const projectPackageJsonPath: string = path.join(rootDir, PACKAGE_JSON);
Expand Down
3 changes: 1 addition & 2 deletions packages/jest-config/package.json
Expand Up @@ -27,8 +27,7 @@
"jest-util": "^26.0.0-alpha.0",
"jest-validate": "^26.0.0-alpha.0",
"micromatch": "^4.0.2",
"pretty-format": "^26.0.0-alpha.0",
"realpath-native": "^2.0.0"
"pretty-format": "^26.0.0-alpha.0"
},
"devDependencies": {
"@types/babel__core": "^7.0.4",
Expand Down
7 changes: 4 additions & 3 deletions packages/jest-config/src/getCacheDirectory.ts
Expand Up @@ -7,11 +7,12 @@

import * as path from 'path';
import {tmpdir} from 'os';
import {sync as realpath} from 'realpath-native';
import type {Config} from '@jest/types';
import {tryRealpath} from 'jest-util';

const getCacheDirectory = () => {
const getCacheDirectory: () => Config.Path = () => {
const {getuid} = process;
const tmpdirPath = path.join(realpath(tmpdir()), 'jest');
const tmpdirPath = path.join(tryRealpath(tmpdir()), 'jest');
if (getuid == null) {
return tmpdirPath;
} else {
Expand Down
4 changes: 2 additions & 2 deletions packages/jest-config/src/index.ts
Expand Up @@ -8,8 +8,8 @@
import * as path from 'path';
import * as fs from 'graceful-fs';
import type {Config} from '@jest/types';
import {tryRealpath} from 'jest-util';
import chalk = require('chalk');
import {sync as realpath} from 'realpath-native';
import {isJSONString, replaceRootDirInPath} from './utils';
import normalize from './normalize';
import resolveConfigPath from './resolveConfigPath';
Expand Down Expand Up @@ -295,7 +295,7 @@ export async function readConfigs(
if (projects.length > 0) {
const projectIsCwd =
process.platform === 'win32'
? projects[0] === realpath(process.cwd())
? projects[0] === tryRealpath(process.cwd())
: projects[0] === process.cwd();

const parsedConfigs = await Promise.all(
Expand Down
7 changes: 3 additions & 4 deletions packages/jest-config/src/normalize.ts
Expand Up @@ -11,10 +11,9 @@ import {statSync} from 'graceful-fs';
import {sync as glob} from 'glob';
import type {Config} from '@jest/types';
import {ValidationError, validate} from 'jest-validate';
import {clearLine, replacePathSepForGlob} from 'jest-util';
import {clearLine, replacePathSepForGlob, tryRealpath} from 'jest-util';
import chalk = require('chalk');
import micromatch = require('micromatch');
import {sync as realpath} from 'realpath-native';
import Resolver = require('jest-resolve');
import {replacePathSepForRegex} from 'jest-regex-util';
import merge = require('deepmerge');
Expand Down Expand Up @@ -391,7 +390,7 @@ const normalizeRootDir = (

try {
// try to resolve windows short paths, ignoring errors (permission errors, mostly)
options.rootDir = realpath(options.rootDir);
options.rootDir = tryRealpath(options.rootDir);
} catch (e) {
// ignored
}
Expand Down Expand Up @@ -955,7 +954,7 @@ export default function normalize(

try {
// try to resolve windows short paths, ignoring errors (permission errors, mostly)
newOptions.cwd = realpath(process.cwd());
newOptions.cwd = tryRealpath(process.cwd());
} catch (e) {
// ignored
}
Expand Down
1 change: 0 additions & 1 deletion packages/jest-core/package.json
Expand Up @@ -29,7 +29,6 @@
"jest-watcher": "^26.0.0-alpha.0",
"micromatch": "^4.0.2",
"p-each-series": "^2.1.0",
"realpath-native": "^2.0.0",
"rimraf": "^3.0.0",
"slash": "^3.0.0",
"strip-ansi": "^6.0.0"
Expand Down
5 changes: 2 additions & 3 deletions packages/jest-core/src/runJest.ts
Expand Up @@ -7,9 +7,8 @@

import * as path from 'path';
import chalk = require('chalk');
import {sync as realpath} from 'realpath-native';
import {CustomConsole} from '@jest/console';
import {interopRequireDefault} from 'jest-util';
import {interopRequireDefault, tryRealpath} from 'jest-util';
import exit = require('exit');
import * as fs from 'graceful-fs';
import {JestHook, JestHookEmitter} from 'jest-watcher';
Expand Down Expand Up @@ -100,7 +99,7 @@ const processResults = (
}
if (isJSON) {
if (outputFile) {
const cwd = realpath(process.cwd());
const cwd = tryRealpath(process.cwd());
const filePath = path.resolve(cwd, outputFile);

fs.writeFileSync(filePath, JSON.stringify(formatTestResults(runResults)));
Expand Down
2 changes: 1 addition & 1 deletion packages/jest-resolve/package.json
Expand Up @@ -11,11 +11,11 @@
"types": "build/index.d.ts",
"dependencies": {
"@jest/types": "^26.0.0-alpha.0",
"jest-util": "^26.0.0-alpha.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.4",
"jest-pnp-resolver": "^1.2.1",
"read-pkg-up": "^7.0.1",
"realpath-native": "^2.0.0",
"resolve": "^1.17.0",
"slash": "^3.0.0"
},
Expand Down
7 changes: 5 additions & 2 deletions packages/jest-resolve/src/__tests__/resolve.test.ts
Expand Up @@ -234,8 +234,11 @@ describe('Resolver.getModulePaths() -> nodeModulesPaths()', () => {
// pathstrings instead of actually trying to access the physical directory.
// This test suite won't work otherwise, since we cannot make assumptions
// about the test environment when it comes to absolute paths.
jest.doMock('realpath-native', () => ({
sync: (dirInput: string) => dirInput,
jest.doMock('graceful-fs', () => ({
...jest.requireActual('graceful-fs'),
realPathSync: {
native: (dirInput: string) => dirInput,
},
}));
});

Expand Down
14 changes: 2 additions & 12 deletions packages/jest-resolve/src/defaultResolver.ts
Expand Up @@ -7,8 +7,8 @@

import * as fs from 'graceful-fs';
import {sync as resolveSync} from 'resolve';
import {sync as realpath} from 'realpath-native';
import pnpResolver from 'jest-pnp-resolver';
import {tryRealpath} from 'jest-util';
import type {Config} from '@jest/types';

type ResolverOptions = {
Expand Down Expand Up @@ -95,17 +95,7 @@ function realpathCached(path: Config.Path): Config.Path {
return result;
}

try {
result = realpath(path);
} catch (error) {
if (error.code !== 'ENOENT') {
throw error;
}
}

if (!result) {
result = path;
}
result = tryRealpath(path);

checkedRealpathPaths.set(path, result);

Expand Down
7 changes: 3 additions & 4 deletions packages/jest-resolve/src/index.ts
Expand Up @@ -8,14 +8,14 @@
import * as path from 'path';
import type {Config} from '@jest/types';
import type {ModuleMap} from 'jest-haste-map';
import {sync as realpath} from 'realpath-native';
import chalk = require('chalk');
import {tryRealpath} from 'jest-util';
import nodeModulesPaths from './nodeModulesPaths';
import isBuiltinModule from './isBuiltinModule';
import defaultResolver, {clearDefaultResolverCache} from './defaultResolver';
import type {ResolverConfig} from './types';
import ModuleNotFoundError from './ModuleNotFoundError';
import shouldLoadAsEsm, {clearCachedLookups} from './shouldLoadAsEsm';
import chalk = require('chalk');

type FindNodeModuleConfig = {
basedir: Config.Path;
Expand All @@ -41,8 +41,7 @@ namespace Resolver {
const NATIVE_PLATFORM = 'native';

// We might be inside a symlink.
const cwd = process.cwd();
const resolvedCwd = realpath(cwd) || cwd;
const resolvedCwd = tryRealpath(process.cwd());
const {NODE_PATH} = process.env;
const nodePaths = NODE_PATH
? NODE_PATH.split(path.delimiter)
Expand Down
4 changes: 2 additions & 2 deletions packages/jest-resolve/src/nodeModulesPaths.ts
Expand Up @@ -9,7 +9,7 @@

import * as path from 'path';
import type {Config} from '@jest/types';
import {sync as realpath} from 'realpath-native';
import {tryRealpath} from 'jest-util';

type NodeModulesPathsOptions = {
moduleDirectory?: Array<string>;
Expand Down Expand Up @@ -40,7 +40,7 @@ export default function nodeModulesPaths(
// traverses parents of the physical path, not the symlinked path
let physicalBasedir;
try {
physicalBasedir = realpath(basedirAbs);
physicalBasedir = tryRealpath(basedirAbs);
} catch (err) {
// realpath can throw, e.g. on mapped drives
physicalBasedir = basedirAbs;
Expand Down
1 change: 0 additions & 1 deletion packages/jest-runtime/package.json
Expand Up @@ -32,7 +32,6 @@
"jest-snapshot": "^26.0.0-alpha.0",
"jest-util": "^26.0.0-alpha.0",
"jest-validate": "^26.0.0-alpha.0",
"realpath-native": "^2.0.0",
"slash": "^3.0.0",
"strip-bom": "^4.0.0",
"yargs": "^15.3.1"
Expand Down
5 changes: 2 additions & 3 deletions packages/jest-runtime/src/cli/index.ts
Expand Up @@ -8,12 +8,11 @@
import {cpus} from 'os';
import * as path from 'path';
import chalk = require('chalk');
import {sync as realpath} from 'realpath-native';
import yargs = require('yargs');
import type {Config} from '@jest/types';
import type {JestEnvironment} from '@jest/environment';
import {CustomConsole} from '@jest/console';
import {setGlobal} from 'jest-util';
import {setGlobal, tryRealpath} from 'jest-util';
import {validateCLIOptions} from 'jest-validate';
import {deprecationEntries, readConfig} from 'jest-config';
import {VERSION} from '../version';
Expand Down Expand Up @@ -53,7 +52,7 @@ export async function run(
return;
}

const root = realpath(process.cwd());
const root = tryRealpath(process.cwd());
const filePath = path.resolve(root, argv._[0]);

if (argv.debug) {
Expand Down
1 change: 0 additions & 1 deletion packages/jest-transform/package.json
Expand Up @@ -22,7 +22,6 @@
"jest-util": "^26.0.0-alpha.0",
"micromatch": "^4.0.2",
"pirates": "^4.0.1",
"realpath-native": "^2.0.0",
"slash": "^3.0.0",
"source-map": "^0.6.1",
"write-file-atomic": "^3.0.0"
Expand Down
18 changes: 7 additions & 11 deletions packages/jest-transform/src/ScriptTransformer.ts
Expand Up @@ -8,7 +8,12 @@
import {createHash} from 'crypto';
import * as path from 'path';
import type {Config} from '@jest/types';
import {createDirectory, interopRequireDefault, isPromise} from 'jest-util';
import {
createDirectory,
interopRequireDefault,
isPromise,
tryRealpath,
} from 'jest-util';
import * as fs from 'graceful-fs';
import {transformSync as babelTransform} from '@babel/core';
// @ts-ignore: should just be `require.resolve`, but the tests mess that up
Expand All @@ -18,7 +23,6 @@ import HasteMap = require('jest-haste-map');
import stableStringify = require('fast-json-stable-stringify');
import slash = require('slash');
import {sync as writeFileAtomic} from 'write-file-atomic';
import {sync as realpath} from 'realpath-native';
import {addHook} from 'pirates';
import type {
Options,
Expand Down Expand Up @@ -247,14 +251,6 @@ export default class ScriptTransformer {
return input;
}

private _getRealPath(filepath: Config.Path): Config.Path {
try {
return realpath(filepath) || filepath;
} catch (err) {
return filepath;
}
}

// We don't want to expose transformers to the outside - this function is just
// to warm up `this._transformCache`
preloadTransformer(filepath: Config.Path): void {
Expand All @@ -269,7 +265,7 @@ export default class ScriptTransformer {
supportsDynamicImport = false,
supportsStaticESM = false,
): TransformResult {
const filename = this._getRealPath(filepath);
const filename = tryRealpath(filepath);
const transform = this._getTransformer(filename);
const cacheFilePath = this._getFileCachePath(
filename,
Expand Down

0 comments on commit 1cc205c

Please sign in to comment.