diff --git a/.eslintrc.js b/.eslintrc.js index d04c2f900797..3594b3b18ec6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -142,6 +142,13 @@ module.exports = { // https://github.com/benmosher/eslint-plugin-import/issues/645 'import/order': 0, 'no-console': 0, + 'no-restricted-imports': [ + 2, + { + message: 'Please use graceful-fs instead.', + name: 'fs', + }, + ], 'no-unused-vars': 2, 'prettier/prettier': 2, 'sort-imports': [2, {ignoreDeclarationSort: true}], diff --git a/CHANGELOG.md b/CHANGELOG.md index d620b35ffb24..f204c42602c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ ### Fixes +- `[*]` Use `graceful-fs` directly in every package instead of relying on `fs` being monkey patched ([#9443](https://github.com/facebook/jest/pull/9443)) - `[expect]` Prints the Symbol name into the error message with a custom asymmetric matcher ([#9888](https://github.com/facebook/jest/pull/9888)) - `[jest-circus, jest-jasmine2]` Support older version of `jest-runtime` ([#9903](https://github.com/facebook/jest/pull/9903) & [#9842](https://github.com/facebook/jest/pull/9842)) - `[@jest/environment]` Make sure not to reference Jest types ([#9875](https://github.com/facebook/jest/pull/9875)) @@ -45,8 +46,6 @@ - `[*]` Do not generate TypeScript declaration source maps ([#9822](https://github.com/facebook/jest/pull/9822)) - `[*]` Transpile code for Node 8.3, not 8.0 ([#9827](https://github.com/facebook/jest/pull/9827)) -### Performance - ## 25.3.0 ### Features @@ -276,8 +275,6 @@ - `[jest-types]` Mark `InitialOptions` as `Partial` ([#8848](https://github.com/facebook/jest/pull/8848)) - `[jest-config]` Refactor `normalize` to be more type safe ([#8848](https://github.com/facebook/jest/pull/8848)) -### Performance - ## 24.9.0 ### Features diff --git a/e2e/Utils.ts b/e2e/Utils.ts index f377c53e5916..e4a93c0c07c0 100644 --- a/e2e/Utils.ts +++ b/e2e/Utils.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import type {Config} from '@jest/types'; // eslint-disable-next-line import/named diff --git a/e2e/__tests__/clearCache.test.ts b/e2e/__tests__/clearCache.test.ts index 859800c939d4..3f7897c0b9a4 100644 --- a/e2e/__tests__/clearCache.test.ts +++ b/e2e/__tests__/clearCache.test.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import {tmpdir} from 'os'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import runJest from '../runJest'; const CACHE = path.resolve(tmpdir(), 'clear-cache-directory'); diff --git a/e2e/__tests__/coverageHandlebars.test.ts b/e2e/__tests__/coverageHandlebars.test.ts index 28337a9e5b9f..3e16071fceb5 100644 --- a/e2e/__tests__/coverageHandlebars.test.ts +++ b/e2e/__tests__/coverageHandlebars.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {readFileSync} from 'fs'; import * as path from 'path'; +import {readFileSync} from 'graceful-fs'; import wrap from 'jest-snapshot-serializer-raw'; import {cleanup, run} from '../Utils'; import runJest from '../runJest'; diff --git a/e2e/__tests__/coverageRemapping.test.ts b/e2e/__tests__/coverageRemapping.test.ts index 07172e613b77..9883f2053778 100644 --- a/e2e/__tests__/coverageRemapping.test.ts +++ b/e2e/__tests__/coverageRemapping.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {readFileSync} from 'fs'; import * as path from 'path'; +import {readFileSync} from 'graceful-fs'; import {cleanup, run} from '../Utils'; import runJest from '../runJest'; diff --git a/e2e/__tests__/coverageReport.test.ts b/e2e/__tests__/coverageReport.test.ts index 13765ec0dade..d59e16cb82f2 100644 --- a/e2e/__tests__/coverageReport.test.ts +++ b/e2e/__tests__/coverageReport.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import {wrap} from 'jest-snapshot-serializer-raw'; import {extractSummary, run} from '../Utils'; import runJest from '../runJest'; diff --git a/e2e/__tests__/coverageTransformInstrumented.test.ts b/e2e/__tests__/coverageTransformInstrumented.test.ts index c16b07fab5ce..7e0ff66eafb2 100644 --- a/e2e/__tests__/coverageTransformInstrumented.test.ts +++ b/e2e/__tests__/coverageTransformInstrumented.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import {readFileSync} from 'fs'; import * as path from 'path'; +import {readFileSync} from 'graceful-fs'; import {cleanup, run} from '../Utils'; import runJest from '../runJest'; diff --git a/e2e/__tests__/globalSetup.test.ts b/e2e/__tests__/globalSetup.test.ts index 8e9a582f2ea7..106c89a17d23 100644 --- a/e2e/__tests__/globalSetup.test.ts +++ b/e2e/__tests__/globalSetup.test.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import {tmpdir} from 'os'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import runJest, {json as runWithJson} from '../runJest'; import {cleanup, run} from '../Utils'; diff --git a/e2e/__tests__/globalTeardown.test.ts b/e2e/__tests__/globalTeardown.test.ts index b05d94cfabcd..7964048bbc70 100644 --- a/e2e/__tests__/globalTeardown.test.ts +++ b/e2e/__tests__/globalTeardown.test.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import {tmpdir} from 'os'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import {createDirectory} from 'jest-util'; import runJest, {json as runWithJson} from '../runJest'; import {cleanup, run} from '../Utils'; diff --git a/e2e/__tests__/jsonReporter.test.ts b/e2e/__tests__/jsonReporter.test.ts index 92fb4d6cd97c..c695c0ef6882 100644 --- a/e2e/__tests__/jsonReporter.test.ts +++ b/e2e/__tests__/jsonReporter.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import type {FormattedTestResults} from '@jest/test-result'; import runJest from '../runJest'; diff --git a/e2e/__tests__/setupFilesAfterEnvConfig.test.ts b/e2e/__tests__/setupFilesAfterEnvConfig.test.ts index a5955368e2a1..a9c0b791b82b 100644 --- a/e2e/__tests__/setupFilesAfterEnvConfig.test.ts +++ b/e2e/__tests__/setupFilesAfterEnvConfig.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import {json as runWithJson} from '../runJest'; import {writeFiles} from '../Utils'; diff --git a/e2e/__tests__/snapshot.test.ts b/e2e/__tests__/snapshot.test.ts index 7cda913f7c44..5396a73b7f95 100644 --- a/e2e/__tests__/snapshot.test.ts +++ b/e2e/__tests__/snapshot.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import {wrap} from 'jest-snapshot-serializer-raw'; import {extractSummary} from '../Utils'; import runJest, {json as runWithJson} from '../runJest'; diff --git a/e2e/__tests__/snapshotResolver.test.ts b/e2e/__tests__/snapshotResolver.test.ts index f5c3a08a4b25..f94e0690ed39 100644 --- a/e2e/__tests__/snapshotResolver.test.ts +++ b/e2e/__tests__/snapshotResolver.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import runJest from '../runJest'; const snapshotDir = path.resolve( diff --git a/e2e/__tests__/testEnvironmentAsync.test.ts b/e2e/__tests__/testEnvironmentAsync.test.ts index fd0d7804ed46..114af7aae14f 100644 --- a/e2e/__tests__/testEnvironmentAsync.test.ts +++ b/e2e/__tests__/testEnvironmentAsync.test.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; import {tmpdir} from 'os'; +import * as fs from 'graceful-fs'; import runJest from '../runJest'; import {cleanup} from '../Utils'; diff --git a/e2e/__tests__/testRetries.test.ts b/e2e/__tests__/testRetries.test.ts index cedf680ea0a2..c7a3587a448d 100644 --- a/e2e/__tests__/testRetries.test.ts +++ b/e2e/__tests__/testRetries.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import {skipSuiteOnJasmine} from '@jest/test-utils'; import runJest from '../runJest'; diff --git a/e2e/__tests__/toMatchInlineSnapshot.test.ts b/e2e/__tests__/toMatchInlineSnapshot.test.ts index f17ccae6f51a..228662fe6e57 100644 --- a/e2e/__tests__/toMatchInlineSnapshot.test.ts +++ b/e2e/__tests__/toMatchInlineSnapshot.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import {wrap} from 'jest-snapshot-serializer-raw'; import {cleanup, makeTemplate, writeFiles} from '../Utils'; import runJest from '../runJest'; @@ -256,6 +256,7 @@ test('handles mocking native modules prettier relies on', () => { const test = ` jest.mock('path', () => ({})); jest.mock('fs', () => ({})); + jest.mock('graceful-fs', () => ({})); test('inline snapshots', () => { expect({}).toMatchInlineSnapshot(); }); diff --git a/e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts b/e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts index 1296b4961a69..eafcccb6527a 100644 --- a/e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts +++ b/e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import {cleanup, makeTemplate, writeFiles} from '../Utils'; import runJest from '../runJest'; diff --git a/e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts b/e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts index 0dfb598115fd..da2f419b46c6 100644 --- a/e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts +++ b/e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts @@ -6,7 +6,7 @@ */ import * as path from 'path'; -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import {wrap} from 'jest-snapshot-serializer-raw'; import {cleanup, makeTemplate, writeFiles} from '../Utils'; import runJest from '../runJest'; diff --git a/e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts b/e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts index ed579226a02f..de3a3010ccf7 100644 --- a/e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts +++ b/e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts @@ -6,7 +6,7 @@ */ import * as path from 'path'; -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import {wrap} from 'jest-snapshot-serializer-raw'; import {cleanup, makeTemplate, writeFiles} from '../Utils'; import runJest from '../runJest'; diff --git a/e2e/native-esm/__tests__/native-esm.test.js b/e2e/native-esm/__tests__/native-esm.test.js index 0603e5d67e1d..737d422d9c1c 100644 --- a/e2e/native-esm/__tests__/native-esm.test.js +++ b/e2e/native-esm/__tests__/native-esm.test.js @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +// the point here is that it's the node core module +// eslint-disable-next-line no-restricted-imports import {readFileSync} from 'fs'; import {createRequire} from 'module'; import {dirname, resolve} from 'path'; diff --git a/e2e/runJest.ts b/e2e/runJest.ts index 98d1a6db4128..28eda5785672 100644 --- a/e2e/runJest.ts +++ b/e2e/runJest.ts @@ -7,8 +7,8 @@ */ import * as path from 'path'; -import * as fs from 'fs'; import {Writable} from 'stream'; +import * as fs from 'graceful-fs'; import execa = require('execa'); import type {Config} from '@jest/types'; import type {FormattedTestResults} from '@jest/test-result'; diff --git a/package.json b/package.json index 8658d7699537..338d2679d898 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "find-process": "^1.4.1", "glob": "^7.1.1", "globby": "^10.0.2", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.4", "isbinaryfile": "^4.0.0", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-report": "^3.0.0", diff --git a/packages/babel-jest/package.json b/packages/babel-jest/package.json index a6eca647bef5..c3369ac4510d 100644 --- a/packages/babel-jest/package.json +++ b/packages/babel-jest/package.json @@ -24,10 +24,12 @@ "babel-plugin-istanbul": "^6.0.0", "babel-preset-jest": "^25.4.0", "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", "slash": "^3.0.0" }, "devDependencies": { - "@babel/core": "^7.1.0" + "@babel/core": "^7.1.0", + "@types/graceful-fs": "^4.1.3" }, "peerDependencies": { "@babel/core": "^7.0.0" diff --git a/packages/babel-jest/src/index.ts b/packages/babel-jest/src/index.ts index 12d2ee07a3f6..50259e0ec2cb 100644 --- a/packages/babel-jest/src/index.ts +++ b/packages/babel-jest/src/index.ts @@ -6,8 +6,8 @@ */ import {createHash} from 'crypto'; -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import type { TransformOptions as JestTransformOptions, Transformer, diff --git a/packages/jest-circus/package.json b/packages/jest-circus/package.json index da9d3547d944..3b365c63e79c 100644 --- a/packages/jest-circus/package.json +++ b/packages/jest-circus/package.json @@ -41,8 +41,10 @@ "@jest/test-utils": "^25.3.0", "@types/babel__traverse": "^7.0.4", "@types/co": "^4.6.0", + "@types/graceful-fs": "^4.1.3", "@types/stack-utils": "^1.0.1", - "execa": "^3.2.0" + "execa": "^3.2.0", + "graceful-fs": "^4.2.4" }, "engines": { "node": ">= 8.3" diff --git a/packages/jest-circus/src/__mocks__/testUtils.ts b/packages/jest-circus/src/__mocks__/testUtils.ts index 4a26fc4a2907..eb2c1d007466 100644 --- a/packages/jest-circus/src/__mocks__/testUtils.ts +++ b/packages/jest-circus/src/__mocks__/testUtils.ts @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import {tmpdir} from 'os'; import * as path from 'path'; import {createHash} from 'crypto'; +import * as fs from 'graceful-fs'; // eslint-disable-next-line import/named import {ExecaSyncReturnValue, sync as spawnSync} from 'execa'; import {skipSuiteOnWindows} from '@jest/test-utils'; diff --git a/packages/jest-cli/package.json b/packages/jest-cli/package.json index f556af3d0144..084c2bb7ab89 100644 --- a/packages/jest-cli/package.json +++ b/packages/jest-cli/package.json @@ -17,6 +17,7 @@ "@jest/types": "^25.4.0", "chalk": "^3.0.0", "exit": "^0.1.2", + "graceful-fs": "^4.2.4", "import-local": "^3.0.2", "is-ci": "^2.0.0", "jest-config": "^25.4.0", @@ -30,6 +31,7 @@ "@jest/test-utils": "^25.3.0", "@types/exit": "^0.1.30", "@types/is-ci": "^2.0.0", + "@types/graceful-fs": "^4.1.3", "@types/prompts": "^2.0.1", "@types/yargs": "^15.0.0" }, diff --git a/packages/jest-cli/src/init/__tests__/init.test.js b/packages/jest-cli/src/init/__tests__/init.test.js index 874a6d958c75..579ab04f24fc 100644 --- a/packages/jest-cli/src/init/__tests__/init.test.js +++ b/packages/jest-cli/src/init/__tests__/init.test.js @@ -6,8 +6,8 @@ */ /* eslint-disable no-eval */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import prompts from 'prompts'; import {constants} from 'jest-config'; import init from '../'; @@ -19,7 +19,7 @@ jest.mock('../../../../jest-config/build/getCacheDirectory', () => () => '/tmp/jest', ); jest.mock('path', () => ({...jest.requireActual('path'), sep: '/'})); -jest.mock('fs', () => ({ +jest.mock('graceful-fs', () => ({ ...jest.requireActual('fs'), writeFileSync: jest.fn(), })); diff --git a/packages/jest-cli/src/init/index.ts b/packages/jest-cli/src/init/index.ts index 5f732534af27..b2503fc901f3 100644 --- a/packages/jest-cli/src/init/index.ts +++ b/packages/jest-cli/src/init/index.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; 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'; diff --git a/packages/jest-config/package.json b/packages/jest-config/package.json index 7cf920caf17f..50a2fd5a8e1d 100644 --- a/packages/jest-config/package.json +++ b/packages/jest-config/package.json @@ -24,6 +24,7 @@ "chalk": "^3.0.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", + "graceful-fs": "^4.2.4", "jest-environment-jsdom": "^25.4.0", "jest-environment-node": "^25.4.0", "jest-get-type": "^25.2.6", @@ -39,6 +40,7 @@ "devDependencies": { "@types/babel__core": "^7.0.4", "@types/glob": "^7.1.1", + "@types/graceful-fs": "^4.1.3", "@types/micromatch": "^4.0.0" }, "engines": { diff --git a/packages/jest-config/src/__tests__/normalize.test.js b/packages/jest-config/src/__tests__/normalize.test.js index ee4a6658f112..4022b2baec66 100644 --- a/packages/jest-config/src/__tests__/normalize.test.js +++ b/packages/jest-config/src/__tests__/normalize.test.js @@ -19,7 +19,7 @@ const DEFAULT_CSS_PATTERN = '^.+\\.(css)$'; jest .mock('jest-resolve') .mock('path', () => jest.requireActual('path').posix) - .mock('fs', () => { + .mock('graceful-fs', () => { const realFs = jest.requireActual('fs'); return { diff --git a/packages/jest-config/src/index.ts b/packages/jest-config/src/index.ts index 85b6e34546d8..0331c2d23379 100644 --- a/packages/jest-config/src/index.ts +++ b/packages/jest-config/src/index.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import type {Config} from '@jest/types'; import chalk = require('chalk'); import {sync as realpath} from 'realpath-native'; diff --git a/packages/jest-config/src/normalize.ts b/packages/jest-config/src/normalize.ts index fb56b9864e26..4cff07d83bc8 100644 --- a/packages/jest-config/src/normalize.ts +++ b/packages/jest-config/src/normalize.ts @@ -6,8 +6,8 @@ */ import {createHash} from 'crypto'; -import {statSync} from 'fs'; import * as path from 'path'; +import {statSync} from 'graceful-fs'; import {sync as glob} from 'glob'; import type {Config} from '@jest/types'; import {ValidationError, validate} from 'jest-validate'; diff --git a/packages/jest-config/src/readConfigFileAndSetRootDir.ts b/packages/jest-config/src/readConfigFileAndSetRootDir.ts index 867c553b3019..c1d0242efcbc 100644 --- a/packages/jest-config/src/readConfigFileAndSetRootDir.ts +++ b/packages/jest-config/src/readConfigFileAndSetRootDir.ts @@ -6,7 +6,7 @@ */ import * as path from 'path'; -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import type {Config} from '@jest/types'; // @ts-ignore: vendored import jsonlint from './vendor/jsonlint'; diff --git a/packages/jest-config/src/resolveConfigPath.ts b/packages/jest-config/src/resolveConfigPath.ts index 52eed9a07e5c..dc8655513858 100644 --- a/packages/jest-config/src/resolveConfigPath.ts +++ b/packages/jest-config/src/resolveConfigPath.ts @@ -6,7 +6,7 @@ */ import * as path from 'path'; -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import type {Config} from '@jest/types'; import { JEST_CONFIG_BASE_NAME, diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 19a6c5d804b8..90cf157dac3b 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -20,7 +20,7 @@ "ansi-escapes": "^4.2.1", "chalk": "^3.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.4", "jest-changed-files": "^25.4.0", "jest-config": "^25.4.0", "jest-haste-map": "^25.4.0", diff --git a/packages/jest-core/src/__tests__/SearchSource.test.ts b/packages/jest-core/src/__tests__/SearchSource.test.ts index 0a6815062c85..5a92a31d8bc8 100644 --- a/packages/jest-core/src/__tests__/SearchSource.test.ts +++ b/packages/jest-core/src/__tests__/SearchSource.test.ts @@ -15,7 +15,7 @@ import SearchSource, {SearchResult} from '../SearchSource'; jest.setTimeout(15000); -jest.mock('fs', () => { +jest.mock('graceful-fs', () => { const realFs = jest.requireActual('fs'); return { diff --git a/packages/jest-core/src/__tests__/watch-file-changes.test.ts b/packages/jest-core/src/__tests__/watch-file-changes.test.ts index be0f3c97760c..17ed2fc5c370 100644 --- a/packages/jest-core/src/__tests__/watch-file-changes.test.ts +++ b/packages/jest-core/src/__tests__/watch-file-changes.test.ts @@ -7,8 +7,8 @@ */ import * as path from 'path'; -import * as fs from 'fs'; import {tmpdir} from 'os'; +import * as fs from 'graceful-fs'; import {JestHook} from 'jest-watcher'; import Runtime = require('jest-runtime'); import {normalize} from 'jest-config'; diff --git a/packages/jest-core/src/cli/index.ts b/packages/jest-core/src/cli/index.ts index 9faffd0dcc15..dd8b469e7624 100644 --- a/packages/jest-core/src/cli/index.ts +++ b/packages/jest-core/src/cli/index.ts @@ -38,10 +38,6 @@ export async function runCLI( results: AggregatedResult; globalConfig: Config.GlobalConfig; }> { - const realFs = require('fs'); - const fs = require('graceful-fs'); - fs.gracefulify(realFs); - let results: AggregatedResult | undefined; // If we output a JSON object, we can't write anything to stdout, since diff --git a/packages/jest-haste-map/package.json b/packages/jest-haste-map/package.json index 8d8db4832b20..7546dd48cb71 100644 --- a/packages/jest-haste-map/package.json +++ b/packages/jest-haste-map/package.json @@ -20,7 +20,7 @@ "@jest/types": "^25.4.0", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.4", "jest-serializer": "^25.2.6", "jest-util": "^25.4.0", "jest-worker": "^25.4.0", diff --git a/packages/jest-haste-map/src/__tests__/index.test.js b/packages/jest-haste-map/src/__tests__/index.test.js index fee7fce17ff9..ebd189b385ac 100644 --- a/packages/jest-haste-map/src/__tests__/index.test.js +++ b/packages/jest-haste-map/src/__tests__/index.test.js @@ -105,7 +105,6 @@ jest.mock('graceful-fs', () => ({ mockFs[path] = data; }), })); -jest.mock('fs', () => require('graceful-fs')); const cacheFilePath = '/cache-file'; const object = data => Object.assign(Object.create(null), data); diff --git a/packages/jest-haste-map/src/crawlers/__tests__/node.test.js b/packages/jest-haste-map/src/crawlers/__tests__/node.test.js index 863ecb8c4ad2..c972f0da6dd1 100644 --- a/packages/jest-haste-map/src/crawlers/__tests__/node.test.js +++ b/packages/jest-haste-map/src/crawlers/__tests__/node.test.js @@ -33,7 +33,7 @@ jest.mock('child_process', () => ({ let mockHasReaddirWithFileTypesSupport = false; -jest.mock('fs', () => { +jest.mock('graceful-fs', () => { let mtime = 32; const size = 42; const stat = (path, callback) => { @@ -384,7 +384,7 @@ describe('node crawler', () => { describe('readdir withFileTypes support', () => { it('calls lstat for directories and symlinks if readdir withFileTypes is not supported', () => { nodeCrawl = require('../node'); - const fs = require('fs'); + const fs = require('graceful-fs'); const files = new Map(); return nodeCrawl({ @@ -416,7 +416,7 @@ describe('node crawler', () => { it('avoids calling lstat for directories and symlinks if readdir withFileTypes is supported', () => { mockHasReaddirWithFileTypesSupport = true; nodeCrawl = require('../node'); - const fs = require('fs'); + const fs = require('graceful-fs'); const files = new Map(); return nodeCrawl({ diff --git a/packages/jest-haste-map/src/crawlers/node.ts b/packages/jest-haste-map/src/crawlers/node.ts index c8254bd36361..0266816d91fb 100644 --- a/packages/jest-haste-map/src/crawlers/node.ts +++ b/packages/jest-haste-map/src/crawlers/node.ts @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; import {spawn} from 'child_process'; +import * as fs from 'graceful-fs'; import which = require('which'); import H from '../constants'; import * as fastPath from '../lib/fast_path'; diff --git a/packages/jest-haste-map/src/index.ts b/packages/jest-haste-map/src/index.ts index 5a0fbe7b96f8..866a06a1b140 100644 --- a/packages/jest-haste-map/src/index.ts +++ b/packages/jest-haste-map/src/index.ts @@ -8,9 +8,9 @@ import {execSync} from 'child_process'; import {createHash} from 'crypto'; import {EventEmitter} from 'events'; -import type {Stats} from 'fs'; import {tmpdir} from 'os'; import * as path from 'path'; +import type {Stats} from 'graceful-fs'; import {NodeWatcher, Watcher as SaneWatcher} from 'sane'; import type {Config} from '@jest/types'; import serializer from 'jest-serializer'; diff --git a/packages/jest-haste-map/src/lib/FSEventsWatcher.ts b/packages/jest-haste-map/src/lib/FSEventsWatcher.ts index f41305b1cd31..5cac36f02133 100644 --- a/packages/jest-haste-map/src/lib/FSEventsWatcher.ts +++ b/packages/jest-haste-map/src/lib/FSEventsWatcher.ts @@ -6,9 +6,9 @@ * */ -import * as fs from 'fs'; import * as path from 'path'; import {EventEmitter} from 'events'; +import * as fs from 'graceful-fs'; import anymatch, {Matcher} from 'anymatch'; import micromatch = require('micromatch'); // @ts-ignore no types diff --git a/packages/jest-haste-map/src/lib/WatchmanWatcher.js b/packages/jest-haste-map/src/lib/WatchmanWatcher.js index adce679cdf08..5f10a750684f 100644 --- a/packages/jest-haste-map/src/lib/WatchmanWatcher.js +++ b/packages/jest-haste-map/src/lib/WatchmanWatcher.js @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import fs from 'fs'; import path from 'path'; import assert from 'assert'; import {EventEmitter} from 'events'; +import * as fs from 'graceful-fs'; import watchman from 'fb-watchman'; import common from 'sane/src/common'; import RecrawlWarning from 'sane/src/utils/recrawl-warning-dedupe'; diff --git a/packages/jest-haste-map/src/types.ts b/packages/jest-haste-map/src/types.ts index 953b2ecc9858..6d09b1fdc182 100644 --- a/packages/jest-haste-map/src/types.ts +++ b/packages/jest-haste-map/src/types.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import type {Stats} from 'fs'; +import type {Stats} from 'graceful-fs'; import type {Config} from '@jest/types'; import type ModuleMap from './ModuleMap'; import type HasteFS from './HasteFS'; diff --git a/packages/jest-message-util/package.json b/packages/jest-message-util/package.json index 4f579e9d82da..b175037ba21c 100644 --- a/packages/jest-message-util/package.json +++ b/packages/jest-message-util/package.json @@ -24,12 +24,14 @@ "@jest/types": "^25.4.0", "@types/stack-utils": "^1.0.1", "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", "micromatch": "^4.0.2", "slash": "^3.0.0", "stack-utils": "^1.0.1" }, "devDependencies": { "@types/babel__code-frame": "^7.0.0", + "@types/graceful-fs": "^4.1.3", "@types/micromatch": "^4.0.0" }, "publishConfig": { diff --git a/packages/jest-message-util/src/__tests__/messages.test.ts b/packages/jest-message-util/src/__tests__/messages.test.ts index e4b3d3bf8dad..55c24797cb58 100644 --- a/packages/jest-message-util/src/__tests__/messages.test.ts +++ b/packages/jest-message-util/src/__tests__/messages.test.ts @@ -6,14 +6,14 @@ * */ -import {readFileSync} from 'fs'; +import {readFileSync} from 'graceful-fs'; import slash = require('slash'); import tempy = require('tempy'); import {formatExecError, formatResultsErrors, formatStackTrace} from '..'; const rootDir = tempy.directory(); -jest.mock('fs', () => ({ +jest.mock('graceful-fs', () => ({ ...jest.requireActual('fs'), readFileSync: jest.fn(), })); diff --git a/packages/jest-message-util/src/index.ts b/packages/jest-message-util/src/index.ts index e205c823d648..4b49f66dab5d 100644 --- a/packages/jest-message-util/src/index.ts +++ b/packages/jest-message-util/src/index.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import type {Config, TestResult} from '@jest/types'; import chalk = require('chalk'); import micromatch = require('micromatch'); diff --git a/packages/jest-reporters/package.json b/packages/jest-reporters/package.json index d9ca29b2bbb8..8e7e2ad053f6 100644 --- a/packages/jest-reporters/package.json +++ b/packages/jest-reporters/package.json @@ -20,6 +20,7 @@ "chalk": "^3.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", + "graceful-fs": "^4.2.4", "glob": "^7.1.2", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^4.0.0", @@ -39,6 +40,7 @@ "devDependencies": { "@types/exit": "^0.1.30", "@types/glob": "^7.1.1", + "@types/graceful-fs": "^4.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-lib-instrument": "^1.7.2", "@types/istanbul-lib-report": "^3.0.0", diff --git a/packages/jest-reporters/src/__tests__/coverage_worker.test.js b/packages/jest-reporters/src/__tests__/coverage_worker.test.js index 86cfeecb1ab3..913cf4753c9a 100644 --- a/packages/jest-reporters/src/__tests__/coverage_worker.test.js +++ b/packages/jest-reporters/src/__tests__/coverage_worker.test.js @@ -7,7 +7,7 @@ 'use strict'; -jest.mock('fs').mock('../generateEmptyCoverage'); +jest.mock('graceful-fs').mock('../generateEmptyCoverage'); const globalConfig = {collectCoverage: true}; const config = {}; @@ -20,7 +20,7 @@ let worker; beforeEach(() => { jest.resetModules(); - fs = require('fs'); + fs = require('graceful-fs'); generateEmptyCoverage = require('../generateEmptyCoverage').default; worker = require('../coverage_worker').worker; }); diff --git a/packages/jest-reporters/src/coverage_reporter.ts b/packages/jest-reporters/src/coverage_reporter.ts index 1e87c21bdbd8..5966bdde9600 100644 --- a/packages/jest-reporters/src/coverage_reporter.ts +++ b/packages/jest-reporters/src/coverage_reporter.ts @@ -6,7 +6,7 @@ */ import * as path from 'path'; -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import type {Config} from '@jest/types'; import type { AggregatedResult, diff --git a/packages/jest-reporters/src/coverage_worker.ts b/packages/jest-reporters/src/coverage_worker.ts index d1894b97574c..f40c1aadc3d4 100644 --- a/packages/jest-reporters/src/coverage_worker.ts +++ b/packages/jest-reporters/src/coverage_worker.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import type {Config} from '@jest/types'; import exit = require('exit'); import type {CoverageReporterSerializedOptions} from './types'; diff --git a/packages/jest-reporters/src/generateEmptyCoverage.ts b/packages/jest-reporters/src/generateEmptyCoverage.ts index 38f184d61558..e4f35e7c02cf 100644 --- a/packages/jest-reporters/src/generateEmptyCoverage.ts +++ b/packages/jest-reporters/src/generateEmptyCoverage.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import type {Config} from '@jest/types'; import {readInitialCoverage} from 'istanbul-lib-instrument'; import {FileCoverage, createFileCoverage} from 'istanbul-lib-coverage'; diff --git a/packages/jest-resolve/package.json b/packages/jest-resolve/package.json index 7dc336af75c3..6cf9500d1bd8 100644 --- a/packages/jest-resolve/package.json +++ b/packages/jest-resolve/package.json @@ -20,6 +20,7 @@ "@jest/types": "^25.4.0", "browser-resolve": "^1.11.3", "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", "jest-pnp-resolver": "^1.2.1", "read-pkg-up": "^7.0.1", "realpath-native": "^2.0.0", @@ -28,6 +29,7 @@ }, "devDependencies": { "@types/browser-resolve": "^1.11.0", + "@types/graceful-fs": "^4.1.3", "@types/resolve": "^1.14.0", "jest-haste-map": "^25.4.0" }, diff --git a/packages/jest-resolve/src/__tests__/resolve.test.ts b/packages/jest-resolve/src/__tests__/resolve.test.ts index 9e5499c5832f..a1f7f49a865b 100644 --- a/packages/jest-resolve/src/__tests__/resolve.test.ts +++ b/packages/jest-resolve/src/__tests__/resolve.test.ts @@ -6,8 +6,8 @@ * */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import {ModuleMap} from 'jest-haste-map'; import Resolver = require('../'); // @ts-ignore: js file diff --git a/packages/jest-resolve/src/defaultResolver.ts b/packages/jest-resolve/src/defaultResolver.ts index 0e20699364ba..e66a74036a3f 100644 --- a/packages/jest-resolve/src/defaultResolver.ts +++ b/packages/jest-resolve/src/defaultResolver.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import {sync as resolveSync} from 'resolve'; import {sync as browserResolve} from 'browser-resolve'; import {sync as realpath} from 'realpath-native'; diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index 87c46de216ca..fcd5c6cb1b26 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -23,7 +23,7 @@ "@jest/types": "^25.4.0", "chalk": "^3.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.4", "jest-config": "^25.4.0", "jest-docblock": "^25.3.0", "jest-haste-map": "^25.4.0", diff --git a/packages/jest-runtime/package.json b/packages/jest-runtime/package.json index 856194f2d8fc..af984cb9770b 100644 --- a/packages/jest-runtime/package.json +++ b/packages/jest-runtime/package.json @@ -29,7 +29,7 @@ "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.4", "jest-config": "^25.4.0", "jest-haste-map": "^25.4.0", "jest-message-util": "^25.4.0", diff --git a/packages/jest-runtime/src/cli/index.ts b/packages/jest-runtime/src/cli/index.ts index 1214fdebea5b..099373e2f67c 100644 --- a/packages/jest-runtime/src/cli/index.ts +++ b/packages/jest-runtime/src/cli/index.ts @@ -24,10 +24,6 @@ export async function run( cliArgv?: Config.Argv, cliInfo?: Array, ): Promise { - const realFs = require('fs'); - const fs = require('graceful-fs'); - fs.gracefulify(realFs); - let argv; if (cliArgv) { argv = cliArgv; diff --git a/packages/jest-serializer/package.json b/packages/jest-serializer/package.json index ae4bd8ec7703..33d59529d280 100644 --- a/packages/jest-serializer/package.json +++ b/packages/jest-serializer/package.json @@ -7,8 +7,12 @@ "directory": "packages/jest-serializer" }, "devDependencies": { + "@types/graceful-fs": "^4.1.3", "@types/node": "*" }, + "dependencies": { + "graceful-fs": "^4.2.4" + }, "engines": { "node": ">= 8.3" }, diff --git a/packages/jest-serializer/src/__tests__/index.test.ts b/packages/jest-serializer/src/__tests__/index.test.ts index f27a68911932..45a6951315a8 100644 --- a/packages/jest-serializer/src/__tests__/index.test.ts +++ b/packages/jest-serializer/src/__tests__/index.test.ts @@ -5,11 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -'use strict'; - -import * as fs from 'fs'; import {tmpdir} from 'os'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import prettyFormat = require('pretty-format'); import serializer from '..'; diff --git a/packages/jest-serializer/src/index.ts b/packages/jest-serializer/src/index.ts index 4483f5b45f7d..8f6bd7a9913d 100644 --- a/packages/jest-serializer/src/index.ts +++ b/packages/jest-serializer/src/index.ts @@ -7,8 +7,8 @@ // TODO: Remove this /// -import * as fs from 'fs'; import {deserialize as v8Deserialize, serialize as v8Serialize} from 'v8'; +import * as fs from 'graceful-fs'; type Path = string; diff --git a/packages/jest-snapshot/package.json b/packages/jest-snapshot/package.json index 7082f7ee0e96..0bba3bb1cd09 100644 --- a/packages/jest-snapshot/package.json +++ b/packages/jest-snapshot/package.json @@ -22,6 +22,7 @@ "@types/prettier": "^1.19.0", "chalk": "^3.0.0", "expect": "^25.4.0", + "graceful-fs": "^4.2.4", "jest-diff": "^25.4.0", "jest-get-type": "^25.2.6", "jest-matcher-utils": "^25.4.0", @@ -34,6 +35,7 @@ }, "devDependencies": { "@babel/traverse": "^7.3.4", + "@types/graceful-fs": "^4.1.3", "@types/natural-compare": "^1.4.0", "@types/semver": "^6.0.1", "ansi-regex": "^5.0.0", diff --git a/packages/jest-snapshot/src/State.ts b/packages/jest-snapshot/src/State.ts index 8e7824bc15c4..8cdfd52b817b 100644 --- a/packages/jest-snapshot/src/State.ts +++ b/packages/jest-snapshot/src/State.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import type {Config} from '@jest/types'; import {getStackTraceLines, getTopFrame} from 'jest-message-util'; diff --git a/packages/jest-snapshot/src/__tests__/inline_snapshots.test.ts b/packages/jest-snapshot/src/__tests__/inline_snapshots.test.ts index ceb3ac422d8b..cf7cba34c07e 100644 --- a/packages/jest-snapshot/src/__tests__/inline_snapshots.test.ts +++ b/packages/jest-snapshot/src/__tests__/inline_snapshots.test.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -jest.mock('fs', () => ({ - ...jest.genMockFromModule('fs'), +jest.mock('graceful-fs', () => ({ + ...jest.genMockFromModule('fs'), existsSync: jest.fn().mockReturnValue(true), readdirSync: jest.fn().mockReturnValue([]), statSync: jest.fn(filePath => ({ @@ -15,8 +15,8 @@ jest.mock('fs', () => ({ })); jest.mock('prettier'); -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import prettier from 'prettier'; import babelTraverse from '@babel/traverse'; import {Frame} from 'jest-message-util'; diff --git a/packages/jest-snapshot/src/__tests__/utils.test.ts b/packages/jest-snapshot/src/__tests__/utils.test.ts index df0845440f49..6f00aed6c0c4 100644 --- a/packages/jest-snapshot/src/__tests__/utils.test.ts +++ b/packages/jest-snapshot/src/__tests__/utils.test.ts @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -jest.mock('fs', () => ({ - ...jest.genMockFromModule('fs'), +jest.mock('graceful-fs', () => ({ + ...jest.genMockFromModule('fs'), existsSync: jest.fn().mockReturnValue(true), })); -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import assert = require('assert'); import chalk = require('chalk'); diff --git a/packages/jest-snapshot/src/index.ts b/packages/jest-snapshot/src/index.ts index a1edaaa8da49..2fed614d7d53 100644 --- a/packages/jest-snapshot/src/index.ts +++ b/packages/jest-snapshot/src/index.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import type {Config} from '@jest/types'; import type {FS as HasteFS} from 'jest-haste-map'; diff --git a/packages/jest-snapshot/src/inline_snapshots.ts b/packages/jest-snapshot/src/inline_snapshots.ts index 83691b63ed08..9ed55f8ae0c0 100644 --- a/packages/jest-snapshot/src/inline_snapshots.ts +++ b/packages/jest-snapshot/src/inline_snapshots.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import semver = require('semver'); import { CallExpression, diff --git a/packages/jest-snapshot/src/utils.ts b/packages/jest-snapshot/src/utils.ts index 0b75df741b8e..d1ef478e7fbf 100644 --- a/packages/jest-snapshot/src/utils.ts +++ b/packages/jest-snapshot/src/utils.ts @@ -5,8 +5,8 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import makeDir = require('make-dir'); import naturalCompare = require('natural-compare'); import chalk = require('chalk'); diff --git a/packages/jest-source-map/package.json b/packages/jest-source-map/package.json index 35dd3a4b03c5..b3ef5b168916 100644 --- a/packages/jest-source-map/package.json +++ b/packages/jest-source-map/package.json @@ -18,7 +18,7 @@ }, "dependencies": { "callsites": "^3.0.0", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.4", "source-map": "^0.6.0" }, "devDependencies": { diff --git a/packages/jest-source-map/src/__tests__/getCallsite.test.ts b/packages/jest-source-map/src/__tests__/getCallsite.test.ts index 0de9b483bc64..c8bdf09eb76c 100644 --- a/packages/jest-source-map/src/__tests__/getCallsite.test.ts +++ b/packages/jest-source-map/src/__tests__/getCallsite.test.ts @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import SourceMap from 'source-map'; import getCallsite from '../getCallsite'; // Node 10.5.x compatibility -jest.mock('fs', () => ({ - ...jest.genMockFromModule('fs'), +jest.mock('graceful-fs', () => ({ + ...jest.genMockFromModule('fs'), ReadStream: jest.requireActual('fs').ReadStream, WriteStream: jest.requireActual('fs').WriteStream, })); diff --git a/packages/jest-test-sequencer/package.json b/packages/jest-test-sequencer/package.json index 167fe0758485..118532b461f6 100644 --- a/packages/jest-test-sequencer/package.json +++ b/packages/jest-test-sequencer/package.json @@ -18,10 +18,14 @@ }, "dependencies": { "@jest/test-result": "^25.4.0", + "graceful-fs": "^4.2.4", "jest-haste-map": "^25.4.0", "jest-runner": "^25.4.0", "jest-runtime": "^25.4.0" }, + "devDependencies": { + "@types/graceful-fs": "^4.1.3" + }, "engines": { "node": ">= 8.3" }, diff --git a/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js b/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js index 005338de0063..4239f37bd8da 100644 --- a/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js +++ b/packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js @@ -4,13 +4,12 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -'use strict'; -import * as fs from 'fs'; import * as path from 'path'; +import * as fs from 'graceful-fs'; import TestSequencer from '../index'; -jest.mock('fs', () => ({ +jest.mock('graceful-fs', () => ({ ...jest.genMockFromModule('fs'), existsSync: jest.fn(() => true), readFileSync: jest.fn(() => '{}'), diff --git a/packages/jest-test-sequencer/src/index.ts b/packages/jest-test-sequencer/src/index.ts index 286188126d30..26b45976311e 100644 --- a/packages/jest-test-sequencer/src/index.ts +++ b/packages/jest-test-sequencer/src/index.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import type {AggregatedResult} from '@jest/test-result'; import {getCacheFilePath} from 'jest-haste-map'; import type {Context} from 'jest-runtime'; diff --git a/packages/jest-transform/package.json b/packages/jest-transform/package.json index d3e250138097..034b2e09d5ae 100644 --- a/packages/jest-transform/package.json +++ b/packages/jest-transform/package.json @@ -23,7 +23,7 @@ "chalk": "^3.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.4", "jest-haste-map": "^25.4.0", "jest-regex-util": "^25.2.6", "jest-util": "^25.4.0", diff --git a/packages/jest-transform/src/__tests__/script_transformer.test.js b/packages/jest-transform/src/__tests__/script_transformer.test.js index b6570ee1c404..6479bc62e1ce 100644 --- a/packages/jest-transform/src/__tests__/script_transformer.test.js +++ b/packages/jest-transform/src/__tests__/script_transformer.test.js @@ -10,7 +10,7 @@ import {wrap} from 'jest-snapshot-serializer-raw'; import {makeGlobalConfig, makeProjectConfig} from '../../../../TestUtils'; jest - .mock('fs', () => + .mock('graceful-fs', () => // Node 10.5.x compatibility ({ ...jest.genMockFromModule('fs'), diff --git a/packages/jest-util/package.json b/packages/jest-util/package.json index 0123d0e4d56d..2348fcb9be09 100644 --- a/packages/jest-util/package.json +++ b/packages/jest-util/package.json @@ -19,6 +19,7 @@ "dependencies": { "@jest/types": "^25.4.0", "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", "is-ci": "^2.0.0", "make-dir": "^3.0.0" }, diff --git a/packages/jest-util/src/installCommonGlobals.ts b/packages/jest-util/src/installCommonGlobals.ts index bd8d3bce4077..e711df3ae2c4 100644 --- a/packages/jest-util/src/installCommonGlobals.ts +++ b/packages/jest-util/src/installCommonGlobals.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import * as fs from 'fs'; +import * as fs from 'graceful-fs'; import type {Config} from '@jest/types'; import createProcessObject from './createProcessObject'; import deepCyclicCopy from './deepCyclicCopy'; diff --git a/scripts/browserBuild.js b/scripts/browserBuild.js index 4c3257380c71..6e35147a9dd6 100644 --- a/scripts/browserBuild.js +++ b/scripts/browserBuild.js @@ -64,6 +64,7 @@ function browserBuild(pkgName, entryPath, destination) { __dirname, '../packages/expect/build/fakeChalk.js', ), + 'graceful-fs': 'fs', }, extensions: ['.js', '.json', '.ts'], }, diff --git a/yarn.lock b/yarn.lock index 9ca11d8bef55..253db2b1ef97 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2332,7 +2332,7 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/graceful-fs@^4.1.2": +"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": version "4.1.3" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== @@ -7479,10 +7479,10 @@ got@^8.3.1: url-parse-lax "^3.0.0" url-to-options "^1.0.1" -graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== "graceful-readlink@>= 1.0.0": version "1.0.1"