From d98bab30b3a00be8e33f285568e292972f1c29b7 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 14 Jun 2017 09:53:34 +0100 Subject: [PATCH 1/3] jest-haste-map: only file IO errors should be silently ignored --- packages/jest-haste-map/src/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/jest-haste-map/src/index.js b/packages/jest-haste-map/src/index.js index b24004a94c7e..f1d189c4a2b4 100644 --- a/packages/jest-haste-map/src/index.js +++ b/packages/jest-haste-map/src/index.js @@ -407,6 +407,9 @@ class HasteMap extends EventEmitter { fileMetadata[H.DEPENDENCIES] = metadata.dependencies || []; }, error => { + if (['ENOENT', 'EACCES'].indexOf(error.code) < 0) { + throw error; + } // If a file cannot be read we remove it from the file list and // ignore the failure silently. delete hasteMap.files[filePath]; From 3d5c0fc0f6e7035928919896bd086b7c8bba3c2b Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 14 Jun 2017 10:31:41 +0100 Subject: [PATCH 2/3] fix tests --- packages/jest-cli/src/TestWorker.js | 1 + packages/jest-cli/src/reporters/CoverageWorker.js | 1 + packages/jest-haste-map/src/__tests__/index-test.js | 5 ++++- packages/jest-haste-map/src/worker.js | 1 + types/TestResult.js | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/jest-cli/src/TestWorker.js b/packages/jest-cli/src/TestWorker.js index b59c460d4709..ff89dd1575f3 100644 --- a/packages/jest-cli/src/TestWorker.js +++ b/packages/jest-cli/src/TestWorker.js @@ -44,6 +44,7 @@ const formatError = (error: string | Error): SerializableError => { } return { + code: error.code || undefined, message: error.message, stack: error.stack, type: 'Error', diff --git a/packages/jest-cli/src/reporters/CoverageWorker.js b/packages/jest-cli/src/reporters/CoverageWorker.js index 0f92532a887b..75e413f9b134 100644 --- a/packages/jest-cli/src/reporters/CoverageWorker.js +++ b/packages/jest-cli/src/reporters/CoverageWorker.js @@ -30,6 +30,7 @@ function formatCoverageError(error, filename: Path): SerializableError { `; return { + code: error.code || undefined, message, stack: error.stack, type: 'ERROR', diff --git a/packages/jest-haste-map/src/__tests__/index-test.js b/packages/jest-haste-map/src/__tests__/index-test.js index f275426c74d1..c7b84d6e7d9e 100644 --- a/packages/jest-haste-map/src/__tests__/index-test.js +++ b/packages/jest-haste-map/src/__tests__/index-test.js @@ -136,7 +136,10 @@ describe('HasteMap', () => { return mockFs[path]; } - throw new Error(`Cannot read path '${path}'.`); + + const error = new Error(`Cannot read path '${path}'.`); + error.code = 'ENOENT'; + throw error; }); fs.writeFileSync = jest.fn((path, data, options) => { expect(options).toBe('utf8'); diff --git a/packages/jest-haste-map/src/worker.js b/packages/jest-haste-map/src/worker.js index 2edda75ce216..9cc6c55e8bc6 100644 --- a/packages/jest-haste-map/src/worker.js +++ b/packages/jest-haste-map/src/worker.js @@ -33,6 +33,7 @@ const formatError = (error: string | Error): SerializableError => { } return { + code: error.code || undefined, message: error.message, stack: error.stack, type: 'Error', diff --git a/types/TestResult.js b/types/TestResult.js index 2b5ee9b34578..cf319ce55454 100644 --- a/types/TestResult.js +++ b/types/TestResult.js @@ -62,6 +62,7 @@ export type CoverageMap = {| |}; export type SerializableError = {| + code?: mixed, message: string, stack: ?string, type?: string, From 2d905cb30684916302cc520bd735b939cc82126d Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Wed, 14 Jun 2017 10:32:38 +0100 Subject: [PATCH 3/3] remove extra line --- packages/jest-haste-map/src/__tests__/index-test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/jest-haste-map/src/__tests__/index-test.js b/packages/jest-haste-map/src/__tests__/index-test.js index c7b84d6e7d9e..1ad15236f1b5 100644 --- a/packages/jest-haste-map/src/__tests__/index-test.js +++ b/packages/jest-haste-map/src/__tests__/index-test.js @@ -136,7 +136,6 @@ describe('HasteMap', () => { return mockFs[path]; } - const error = new Error(`Cannot read path '${path}'.`); error.code = 'ENOENT'; throw error;