diff --git a/__tests__/__outputs__/karma-junit-eslint.md b/__tests__/__outputs__/karma-junit-eslint.md
new file mode 100644
index 0000000..aab8d20
--- /dev/null
+++ b/__tests__/__outputs__/karma-junit-eslint.md
@@ -0,0 +1,17 @@
+
+Expand for details
+
+|Report|Passed|Failed|Skipped|Time|
+|:---|---:|---:|---:|---:|
+|[fixtures/karma-junit-eslint.xml](#user-content-r0)|1 ✅|||0ms|
+## ✅ fixtures/karma-junit-eslint.xml
+**1** tests were completed in **0ms** with **1** passed, **0** failed and **0** skipped.
+|Test suite|Passed|Failed|Skipped|Time|
+|:---|---:|---:|---:|---:|
+|[test.jsx](#user-content-r0s0)|1 ✅|||0ms|
+### ✅ test.jsx
+```
+test
+ ✅ test.jsx
+```
+
\ No newline at end of file
diff --git a/__tests__/__outputs__/karma-junit.md b/__tests__/__outputs__/karma-junit.md
new file mode 100644
index 0000000..82511b7
--- /dev/null
+++ b/__tests__/__outputs__/karma-junit.md
@@ -0,0 +1,22 @@
+
+|Report|Passed|Failed|Skipped|Time|
+|:---|---:|---:|---:|---:|
+|[fixtures/karma-junit.xml](#user-content-r0)|1 ✅|3 ❌||486ms|
+## ❌ fixtures/karma-junit.xml
+**4** tests were completed in **486ms** with **1** passed, **3** failed and **0** skipped.
+|Test suite|Passed|Failed|Skipped|Time|
+|:---|---:|---:|---:|---:|
+|[__tests__\main.test.js](#user-content-r0s0)|1 ✅|3 ❌||486ms|
+### ❌ __tests__\main.test.js
+```
+Test 1
+ ✅ Passing test
+Test 1 › Test 1.1
+ ❌ Failing test
+ Error: expect(received).toBeTruthy()
+ ❌ Exception in target unit
+ Error: Some error
+Test 2
+ ❌ Exception in test
+ Error: Some error
+```
\ No newline at end of file
diff --git a/__tests__/__outputs__/karma-react-component-test-results.md b/__tests__/__outputs__/karma-react-component-test-results.md
new file mode 100644
index 0000000..b2a5536
--- /dev/null
+++ b/__tests__/__outputs__/karma-react-component-test-results.md
@@ -0,0 +1,9 @@
+
+Expand for details
+
+|Report|Passed|Failed|Skipped|Time|
+|:---|---:|---:|---:|---:|
+
+## ✅ fixtures/external/karma/karma-react-component-test-results.xml
+No tests found
+
\ No newline at end of file
diff --git a/__tests__/__outputs__/karma-test-results.md b/__tests__/__outputs__/karma-test-results.md
new file mode 100644
index 0000000..2acbea1
--- /dev/null
+++ b/__tests__/__outputs__/karma-test-results.md
@@ -0,0 +1,9 @@
+
+Expand for details
+
+|Report|Passed|Failed|Skipped|Time|
+|:---|---:|---:|---:|---:|
+
+## ✅ fixtures/external/karma/karma-test-results.xml
+No tests found
+
\ No newline at end of file
diff --git a/__tests__/__snapshots__/karma-junit.test.ts.snap b/__tests__/__snapshots__/karma-junit.test.ts.snap
new file mode 100644
index 0000000..d1a8fdc
--- /dev/null
+++ b/__tests__/__snapshots__/karma-junit.test.ts.snap
@@ -0,0 +1,141 @@
+// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
+
+exports[`karma-junit tests parsing ESLint report without timing information works - PR #134 1`] = `
+TestRunResult {
+ "path": "fixtures/karma-junit-eslint.xml",
+ "suites": [
+ TestSuiteResult {
+ "groups": [
+ TestGroupResult {
+ "name": "test",
+ "tests": [
+ TestCaseResult {
+ "error": undefined,
+ "name": "test.jsx",
+ "result": "success",
+ "time": 0,
+ },
+ ],
+ },
+ ],
+ "name": "test.jsx",
+ "totalTime": 0,
+ },
+ ],
+ "totalTime": 0,
+}
+`;
+
+exports[`karma-junit tests parsing junit report with message succeeds 1`] = `
+TestRunResult {
+ "path": "fixtures/junit-with-message.xml",
+ "suites": [],
+ "totalTime": undefined,
+}
+`;
+
+exports[`karma-junit tests report from #235 testing react components named 1`] = `
+TestRunResult {
+ "path": "fixtures/external/karma/karma-react-component-test-results.xml",
+ "suites": [],
+ "totalTime": undefined,
+}
+`;
+
+exports[`karma-junit tests report from ./reports/karma test results matches snapshot 1`] = `
+TestRunResult {
+ "path": "fixtures/karma-junit.xml",
+ "suites": [
+ TestSuiteResult {
+ "groups": [
+ TestGroupResult {
+ "name": "Test 1",
+ "tests": [
+ TestCaseResult {
+ "error": undefined,
+ "name": "Passing test",
+ "result": "success",
+ "time": 1,
+ },
+ ],
+ },
+ TestGroupResult {
+ "name": "Test 1 › Test 1.1",
+ "tests": [
+ TestCaseResult {
+ "error": {
+ "details": "Error: expect(received).toBeTruthy()
+
+Received: false
+ at Object. (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\__tests__\\main.test.js:10:21)
+ at Object.asyncJestTest (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmineAsyncInstall.js:106:37)
+ at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:45:12
+ at new Promise ()
+ at mapper (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:28:19)
+ at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:75:41
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)",
+ "line": 10,
+ "path": "__tests__/main.test.js",
+ },
+ "name": "Failing test",
+ "result": "failed",
+ "time": 2,
+ },
+ TestCaseResult {
+ "error": {
+ "details": "Error: Some error
+ at Object.throwError (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\lib\\main.js:2:9)
+ at Object. (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\__tests__\\main.test.js:14:11)
+ at Object.asyncJestTest (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmineAsyncInstall.js:106:37)
+ at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:45:12
+ at new Promise ()
+ at mapper (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:28:19)
+ at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:75:41
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)",
+ "line": 2,
+ "path": "lib/main.js",
+ },
+ "name": "Exception in target unit",
+ "result": "failed",
+ "time": 0,
+ },
+ ],
+ },
+ TestGroupResult {
+ "name": "Test 2",
+ "tests": [
+ TestCaseResult {
+ "error": {
+ "details": "Error: Some error
+ at Object. (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\__tests__\\main.test.js:21:11)
+ at Object.asyncJestTest (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmineAsyncInstall.js:106:37)
+ at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:45:12
+ at new Promise ()
+ at mapper (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:28:19)
+ at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:75:41
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)",
+ "line": 21,
+ "path": "__tests__/main.test.js",
+ },
+ "name": "Exception in test",
+ "result": "failed",
+ "time": 0,
+ },
+ ],
+ },
+ ],
+ "name": "__tests__\\main.test.js",
+ "totalTime": 486,
+ },
+ ],
+ "totalTime": 486,
+}
+`;
+
+exports[`karma-junit tests report from facebook/karma test results matches snapshot 1`] = `
+TestRunResult {
+ "path": "fixtures/external/karma/karma-test-results.xml",
+ "suites": [],
+ "totalTime": undefined,
+}
+`;
diff --git a/__tests__/fixtures/empty/karma-junit-empty-testsuite.xml b/__tests__/fixtures/empty/karma-junit-empty-testsuite.xml
new file mode 100644
index 0000000..7698e3e
--- /dev/null
+++ b/__tests__/fixtures/empty/karma-junit-empty-testsuite.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/__tests__/fixtures/empty/karma-junit.xml b/__tests__/fixtures/empty/karma-junit.xml
new file mode 100644
index 0000000..d71f85e
--- /dev/null
+++ b/__tests__/fixtures/empty/karma-junit.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/__tests__/fixtures/external/karma/files.txt b/__tests__/fixtures/external/karma/files.txt
new file mode 100644
index 0000000..d40a82e
--- /dev/null
+++ b/__tests__/fixtures/external/karma/files.txt
@@ -0,0 +1,2317 @@
+.azure-pipelines-steps.yml
+.azure-pipelines.yml
+.circleci/config.yml
+.circleci/website.sh
+.editorconfig
+.eslintignore
+.eslintplugin/index.js
+.eslintrc.js
+.github/CODEOWNERS
+.github/FUNDING.yml
+.github/ISSUE_TEMPLATE.md
+.github/ISSUE_TEMPLATE/bug.md
+.github/ISSUE_TEMPLATE/config.yml
+.github/ISSUE_TEMPLATE/feature.md
+.github/ISSUE_TEMPLATE/question.md
+.github/ISSUE_TEMPLATE/regression.md
+.github/PULL_REQUEST_TEMPLATE.md
+.github/SUPPORT.md
+.github/dependabot.yml
+.github/workflows/nodejs.yml
+.gitignore
+.npmignore
+.prettierignore
+.vscode/extensions.json
+.vscode/launch.json
+.vscode/settings.json
+.vscode/tasks.json
+.watchmanconfig
+.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
+.yarn/releases/yarn-2.4.0.cjs
+.yarnrc
+.yarnrc.yml
+CHANGELOG.md
+CODE_OF_CONDUCT.md
+CONTRIBUTING.md
+LICENSE
+README.md
+babel.config.js
+crowdin.yaml
+docs/Architecture.md
+docs/BypassingModuleMocks.md
+docs/CLI.md
+docs/CodeTransformation.md
+docs/Configuration.md
+docs/DynamoDB.md
+docs/ECMAScriptModules.md
+docs/EnvironmentVariables.md
+docs/Es6ClassMocks.md
+docs/ExpectAPI.md
+docs/GettingStarted.md
+docs/GlobalAPI.md
+docs/JestCommunity.md
+docs/JestObjectAPI.md
+docs/JestPlatform.md
+docs/ManualMocks.md
+docs/MigrationGuide.md
+docs/MockFunctionAPI.md
+docs/MockFunctions.md
+docs/MongoDB.md
+docs/MoreResources.md
+docs/Puppeteer.md
+docs/SetupAndTeardown.md
+docs/SnapshotTesting.md
+docs/TestingAsyncCode.md
+docs/TestingFrameworks.md
+docs/TimerMocks.md
+docs/Troubleshooting.md
+docs/TutorialAsync.md
+docs/TutorialReact.md
+docs/TutorialReactNative.md
+docs/TutorialjQuery.md
+docs/UsingMatchers.md
+docs/WatchPlugins.md
+docs/Webpack.md
+e2e/MockStdinWatchPlugin.js
+e2e/Utils.ts
+e2e/__tests__/__snapshots__/asyncAndCallback.test.ts.snap
+e2e/__tests__/__snapshots__/beforeAllFiltered.ts.snap
+e2e/__tests__/__snapshots__/beforeEachQueue.ts.snap
+e2e/__tests__/__snapshots__/callDoneTwice.test.ts.snap
+e2e/__tests__/__snapshots__/chaiAssertionLibrary.ts.snap
+e2e/__tests__/__snapshots__/circularInequality.test.ts.snap
+e2e/__tests__/__snapshots__/circusDeclarationErrors.test.ts.snap
+e2e/__tests__/__snapshots__/cliHandlesExactFilenames.test.ts.snap
+e2e/__tests__/__snapshots__/console.test.ts.snap
+e2e/__tests__/__snapshots__/consoleAfterTeardown.test.ts.snap
+e2e/__tests__/__snapshots__/consoleLogOutputWhenRunInBand.test.ts.snap
+e2e/__tests__/__snapshots__/coverageHandlebars.test.ts.snap
+e2e/__tests__/__snapshots__/coverageRemapping.test.ts.snap
+e2e/__tests__/__snapshots__/coverageReport.test.ts.snap
+e2e/__tests__/__snapshots__/coverageThreshold.test.ts.snap
+e2e/__tests__/__snapshots__/coverageTransformInstrumented.test.ts.snap
+e2e/__tests__/__snapshots__/coverageWithoutTransform.test.ts.snap
+e2e/__tests__/__snapshots__/customInlineSnapshotMatchers.test.ts.snap
+e2e/__tests__/__snapshots__/customMatcherStackTrace.test.ts.snap
+e2e/__tests__/__snapshots__/customReporters.test.ts.snap
+e2e/__tests__/__snapshots__/declarationErrors.test.ts.snap
+e2e/__tests__/__snapshots__/detectOpenHandles.ts.snap
+e2e/__tests__/__snapshots__/domDiffing.test.ts.snap
+e2e/__tests__/__snapshots__/each.test.ts.snap
+e2e/__tests__/__snapshots__/emptyDescribeWithHooks.test.ts.snap
+e2e/__tests__/__snapshots__/environmentAfterTeardown.test.ts.snap
+e2e/__tests__/__snapshots__/errorOnDeprecated.test.ts.snap
+e2e/__tests__/__snapshots__/executeTestsOnceInMpr.ts.snap
+e2e/__tests__/__snapshots__/expectAsyncMatcher.test.ts.snap
+e2e/__tests__/__snapshots__/failures.test.ts.snap
+e2e/__tests__/__snapshots__/findRelatedFiles.test.ts.snap
+e2e/__tests__/__snapshots__/globals.test.ts.snap
+e2e/__tests__/__snapshots__/injectGlobals.test.ts.snap
+e2e/__tests__/__snapshots__/jest.config.js.test.ts.snap
+e2e/__tests__/__snapshots__/jest.config.ts.test.ts.snap
+e2e/__tests__/__snapshots__/jestChangedFiles.test.ts.snap
+e2e/__tests__/__snapshots__/listTests.test.ts.snap
+e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap
+e2e/__tests__/__snapshots__/multiProjectRunner.test.ts.snap
+e2e/__tests__/__snapshots__/nativeEsm.test.ts.snap
+e2e/__tests__/__snapshots__/nestedTestDefinitions.test.ts.snap
+e2e/__tests__/__snapshots__/processExit.test.ts.snap
+e2e/__tests__/__snapshots__/requireAfterTeardown.test.ts.snap
+e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap
+e2e/__tests__/__snapshots__/showConfig.test.ts.snap
+e2e/__tests__/__snapshots__/snapshot.test.ts.snap
+e2e/__tests__/__snapshots__/snapshotMockFs.test.ts.snap
+e2e/__tests__/__snapshots__/snapshotSerializers.test.ts.snap
+e2e/__tests__/__snapshots__/stackTrace.test.ts.snap
+e2e/__tests__/__snapshots__/stackTraceSourceMapsWithCoverage.test.ts.snap
+e2e/__tests__/__snapshots__/testNamePattern.test.ts.snap
+e2e/__tests__/__snapshots__/testNamePatternSkipped.test.ts.snap
+e2e/__tests__/__snapshots__/testTodo.test.ts.snap
+e2e/__tests__/__snapshots__/timeouts.test.ts.snap
+e2e/__tests__/__snapshots__/timeoutsLegacy.test.ts.snap
+e2e/__tests__/__snapshots__/toMatchInlineSnapshot.test.ts.snap
+e2e/__tests__/__snapshots__/toThrowErrorMatchingInlineSnapshot.test.ts.snap
+e2e/__tests__/__snapshots__/toThrowErrorMatchingSnapshot.test.ts.snap
+e2e/__tests__/__snapshots__/transform.test.ts.snap
+e2e/__tests__/__snapshots__/typescriptCoverage.test.ts.snap
+e2e/__tests__/__snapshots__/v8Coverage.test.ts.snap
+e2e/__tests__/__snapshots__/watchModeOnlyFailed.test.ts.snap
+e2e/__tests__/__snapshots__/watchModePatterns.test.ts.snap
+e2e/__tests__/__snapshots__/watchModeUpdateSnapshot.test.ts.snap
+e2e/__tests__/__snapshots__/wrongEnv.test.ts.snap
+e2e/__tests__/asyncAndCallback.test.ts
+e2e/__tests__/asyncRegenerator.test.ts
+e2e/__tests__/autoClearMocks.test.ts
+e2e/__tests__/autoResetMocks.test.ts
+e2e/__tests__/autoRestoreMocks.test.ts
+e2e/__tests__/babelPluginJestHoist.test.ts
+e2e/__tests__/badSourceMap.test.ts
+e2e/__tests__/beforeAllFiltered.ts
+e2e/__tests__/beforeEachQueue.ts
+e2e/__tests__/callDoneTwice.test.ts
+e2e/__tests__/chaiAssertionLibrary.ts
+e2e/__tests__/circularInequality.test.ts
+e2e/__tests__/circusConcurrentEach.test.ts
+e2e/__tests__/circusDeclarationErrors.test.ts
+e2e/__tests__/clearCache.test.ts
+e2e/__tests__/cliHandlesExactFilenames.test.ts
+e2e/__tests__/compareDomNodes.test.ts
+e2e/__tests__/config.test.ts
+e2e/__tests__/console.test.ts
+e2e/__tests__/consoleAfterTeardown.test.ts
+e2e/__tests__/consoleLogOutputWhenRunInBand.test.ts
+e2e/__tests__/coverageHandlebars.test.ts
+e2e/__tests__/coverageRemapping.test.ts
+e2e/__tests__/coverageReport.test.ts
+e2e/__tests__/coverageThreshold.test.ts
+e2e/__tests__/coverageTransformInstrumented.test.ts
+e2e/__tests__/coverageWithoutTransform.test.ts
+e2e/__tests__/createProcessObject.test.ts
+e2e/__tests__/customInlineSnapshotMatchers.test.ts
+e2e/__tests__/customMatcherStackTrace.test.ts
+e2e/__tests__/customReporters.test.ts
+e2e/__tests__/customResolver.test.ts
+e2e/__tests__/customTestSequencers.test.ts
+e2e/__tests__/debug.test.ts
+e2e/__tests__/declarationErrors.test.ts
+e2e/__tests__/dependencyClash.test.ts
+e2e/__tests__/detectOpenHandles.ts
+e2e/__tests__/domDiffing.test.ts
+e2e/__tests__/doneInHooks.test.ts
+e2e/__tests__/dynamicRequireDependencies.ts
+e2e/__tests__/each.test.ts
+e2e/__tests__/emptyDescribeWithHooks.test.ts
+e2e/__tests__/emptySuiteError.test.ts
+e2e/__tests__/env.test.ts
+e2e/__tests__/environmentAfterTeardown.test.ts
+e2e/__tests__/errorOnDeprecated.test.ts
+e2e/__tests__/esmConfigFile.test.ts
+e2e/__tests__/executeTestsOnceInMpr.ts
+e2e/__tests__/existentRoots.test.ts
+e2e/__tests__/expectAsyncMatcher.test.ts
+e2e/__tests__/expectInVm.test.ts
+e2e/__tests__/extraGlobals.test.ts
+e2e/__tests__/failureDetailsProperty.test.ts
+e2e/__tests__/failures.test.ts
+e2e/__tests__/fakePromises.test.ts
+e2e/__tests__/fatalWorkerError.test.ts
+e2e/__tests__/filter.test.ts
+e2e/__tests__/findRelatedFiles.test.ts
+e2e/__tests__/focusedTests.test.ts
+e2e/__tests__/forceExit.test.ts
+e2e/__tests__/generatorMock.test.ts
+e2e/__tests__/global-mutation.test.ts
+e2e/__tests__/global.test.ts
+e2e/__tests__/globalSetup.test.ts
+e2e/__tests__/globalTeardown.test.ts
+e2e/__tests__/globals.test.ts
+e2e/__tests__/hasteMapMockChanged.test.ts
+e2e/__tests__/hasteMapSha1.test.ts
+e2e/__tests__/hasteMapSize.test.ts
+e2e/__tests__/importedGlobals.test.ts
+e2e/__tests__/injectGlobals.test.ts
+e2e/__tests__/iterator-to-null-test.ts
+e2e/__tests__/jasmineAsync.test.ts
+e2e/__tests__/jasmineAsyncWithPendingDuringTest.ts
+e2e/__tests__/jest.config.js.test.ts
+e2e/__tests__/jest.config.ts.test.ts
+e2e/__tests__/jestChangedFiles.test.ts
+e2e/__tests__/jestEnvironmentJsdom.test.ts
+e2e/__tests__/jestRequireActual.test.ts
+e2e/__tests__/jestRequireMock.test.ts
+e2e/__tests__/json.test.ts
+e2e/__tests__/jsonReporter.test.ts
+e2e/__tests__/lifecycles.ts
+e2e/__tests__/listTests.test.ts
+e2e/__tests__/locationInResults.test.ts
+e2e/__tests__/logHeapUsage.test.ts
+e2e/__tests__/mockNames.test.ts
+e2e/__tests__/modernFakeTimers.test.ts
+e2e/__tests__/moduleNameMapper.test.ts
+e2e/__tests__/moduleParentNullInTest.ts
+e2e/__tests__/multiProjectRunner.test.ts
+e2e/__tests__/nativeAsyncMock.test.ts
+e2e/__tests__/nativeEsm.test.ts
+e2e/__tests__/nativeEsmTypescript.test.ts
+e2e/__tests__/nestedEventLoop.test.ts
+e2e/__tests__/nestedTestDefinitions.test.ts
+e2e/__tests__/noTestFound.test.ts
+e2e/__tests__/noTestsFound.test.ts
+e2e/__tests__/nodePath.test.ts
+e2e/__tests__/onlyChanged.test.ts
+e2e/__tests__/onlyFailuresNonWatch.test.ts
+e2e/__tests__/overrideGlobals.test.ts
+e2e/__tests__/pnp.test.ts
+e2e/__tests__/presets.test.ts
+e2e/__tests__/processExit.test.ts
+e2e/__tests__/promiseReject.test.ts
+e2e/__tests__/regexCharInPath.test.ts
+e2e/__tests__/requireAfterTeardown.test.ts
+e2e/__tests__/requireMain.test.ts
+e2e/__tests__/requireMainAfterCreateRequire.test.ts
+e2e/__tests__/requireMainIsolateModules.test.ts
+e2e/__tests__/requireMainResetModules.test.ts
+e2e/__tests__/requireV8Module.test.ts
+e2e/__tests__/resetModules.test.ts
+e2e/__tests__/resolve.test.ts
+e2e/__tests__/resolveGetPaths.test.ts
+e2e/__tests__/resolveNoFileExtensions.test.ts
+e2e/__tests__/resolveNodeModule.test.ts
+e2e/__tests__/resolveWithPaths.test.ts
+e2e/__tests__/runProgrammatically.test.ts
+e2e/__tests__/runTestsByPath.test.ts
+e2e/__tests__/runtimeInternalModuleRegistry.test.ts
+e2e/__tests__/selectProjects.test.ts
+e2e/__tests__/setImmediate.test.ts
+e2e/__tests__/setupFilesAfterEnvConfig.test.ts
+e2e/__tests__/showConfig.test.ts
+e2e/__tests__/skipBeforeAfterAll.test.ts
+e2e/__tests__/snapshot-unknown.test.ts
+e2e/__tests__/snapshot.test.ts
+e2e/__tests__/snapshotMockFs.test.ts
+e2e/__tests__/snapshotResolver.test.ts
+e2e/__tests__/snapshotSerializers.test.ts
+e2e/__tests__/stackTrace.test.ts
+e2e/__tests__/stackTraceNoCaptureStackTrace.test.ts
+e2e/__tests__/stackTraceSourceMaps.test.ts
+e2e/__tests__/stackTraceSourceMapsWithCoverage.test.ts
+e2e/__tests__/supportsDashedArgs.ts
+e2e/__tests__/symbol.test.ts
+e2e/__tests__/testEnvironment.test.ts
+e2e/__tests__/testEnvironmentAsync.test.ts
+e2e/__tests__/testEnvironmentCircus.test.ts
+e2e/__tests__/testEnvironmentCircusAsync.test.ts
+e2e/__tests__/testFailureExitCode.test.ts
+e2e/__tests__/testInRoot.test.ts
+e2e/__tests__/testNamePattern.test.ts
+e2e/__tests__/testNamePatternSkipped.test.ts
+e2e/__tests__/testPathPatternReporterMessage.test.ts
+e2e/__tests__/testResultsProcessor.test.ts
+e2e/__tests__/testRetries.test.ts
+e2e/__tests__/testTodo.test.ts
+e2e/__tests__/timeouts.test.ts
+e2e/__tests__/timeoutsLegacy.test.ts
+e2e/__tests__/timerResetMocks.test.ts
+e2e/__tests__/timerUseRealTimers.test.ts
+e2e/__tests__/toMatchInlineSnapshot.test.ts
+e2e/__tests__/toMatchInlineSnapshotWithRetries.test.ts
+e2e/__tests__/toMatchSnapshot.test.ts
+e2e/__tests__/toMatchSnapshotWithRetries.test.ts
+e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts
+e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts
+e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts
+e2e/__tests__/transform.test.ts
+e2e/__tests__/transformLinkedModules.test.ts
+e2e/__tests__/typescriptCoverage.test.ts
+e2e/__tests__/unexpectedToken.test.ts
+e2e/__tests__/useStderr.test.ts
+e2e/__tests__/v8Coverage.test.ts
+e2e/__tests__/verbose.test.ts
+e2e/__tests__/version.test.ts
+e2e/__tests__/watchModeNoAccess.test.ts
+e2e/__tests__/watchModeOnlyFailed.test.ts
+e2e/__tests__/watchModePatterns.test.ts
+e2e/__tests__/watchModeUpdateSnapshot.test.ts
+e2e/__tests__/workerForceExit.test.ts
+e2e/__tests__/wrongEnv.test.ts
+e2e/async-regenerator/__tests__/test.js
+e2e/async-regenerator/babel.config.js
+e2e/async-regenerator/package.json
+e2e/async-regenerator/yarn.lock
+e2e/auto-clear-mocks/with-auto-clear/__tests__/index.js
+e2e/auto-clear-mocks/with-auto-clear/index.js
+e2e/auto-clear-mocks/with-auto-clear/package.json
+e2e/auto-clear-mocks/without-auto-clear/__tests__/index.js
+e2e/auto-clear-mocks/without-auto-clear/index.js
+e2e/auto-clear-mocks/without-auto-clear/package.json
+e2e/auto-reset-mocks/with-auto-reset/__tests__/index.js
+e2e/auto-reset-mocks/with-auto-reset/index.js
+e2e/auto-reset-mocks/with-auto-reset/package.json
+e2e/auto-reset-mocks/without-auto-reset/__tests__/index.js
+e2e/auto-reset-mocks/without-auto-reset/index.js
+e2e/auto-reset-mocks/without-auto-reset/package.json
+e2e/auto-restore-mocks/with-auto-restore/__tests__/index.js
+e2e/auto-restore-mocks/with-auto-restore/index.js
+e2e/auto-restore-mocks/with-auto-restore/package.json
+e2e/auto-restore-mocks/without-auto-restore/__tests__/index.js
+e2e/auto-restore-mocks/without-auto-restore/index.js
+e2e/auto-restore-mocks/without-auto-restore/package.json
+e2e/babel-plugin-jest-hoist/__test_modules__/Mocked.js
+e2e/babel-plugin-jest-hoist/__test_modules__/Unmocked.js
+e2e/babel-plugin-jest-hoist/__test_modules__/__mocks__/jestBackticks.js
+e2e/babel-plugin-jest-hoist/__test_modules__/a.js
+e2e/babel-plugin-jest-hoist/__test_modules__/b.js
+e2e/babel-plugin-jest-hoist/__test_modules__/c.js
+e2e/babel-plugin-jest-hoist/__test_modules__/d.js
+e2e/babel-plugin-jest-hoist/__test_modules__/e.js
+e2e/babel-plugin-jest-hoist/__test_modules__/f.js
+e2e/babel-plugin-jest-hoist/__test_modules__/g.js
+e2e/babel-plugin-jest-hoist/__test_modules__/jestBackticks.js
+e2e/babel-plugin-jest-hoist/__tests__/importJest.test.js
+e2e/babel-plugin-jest-hoist/__tests__/integration.test.js
+e2e/babel-plugin-jest-hoist/__tests__/integrationAutomockOff.test.js
+e2e/babel-plugin-jest-hoist/__tests__/typescript.test.ts
+e2e/babel-plugin-jest-hoist/babel.config.js
+e2e/babel-plugin-jest-hoist/banana.js
+e2e/babel-plugin-jest-hoist/entry.ts
+e2e/babel-plugin-jest-hoist/mockFile.js
+e2e/babel-plugin-jest-hoist/package.json
+e2e/babel-plugin-jest-hoist/types.ts
+e2e/babel-plugin-jest-hoist/yarn.lock
+e2e/bad-source-map/__tests__/badSourceMap.js
+e2e/bad-source-map/__tests__/badSourceMap.js.map
+e2e/bad-source-map/package.json
+e2e/before-all-filtered/__tests__/beforeAllFiltered.test.js
+e2e/before-all-filtered/package.json
+e2e/before-all-skipped/__tests__/beforeAllFiltered.test.js
+e2e/before-all-skipped/package.json
+e2e/before-each-queue/__tests__/beforeEachQueue.test.js
+e2e/before-each-queue/package.json
+e2e/call-done-twice/__tests__/index.test.js
+e2e/call-done-twice/package.json
+e2e/chai-assertion-library-errors/__tests__/chai_assertion.js
+e2e/chai-assertion-library-errors/package.json
+e2e/chai-assertion-library-errors/yarn.lock
+e2e/circus-concurrent/__tests__/concurrent-each.test.js
+e2e/circus-concurrent/__tests__/concurrent-only-each.test.js
+e2e/circus-concurrent/package.json
+e2e/circus-declaration-errors/__tests__/asyncDefinition.test.js
+e2e/circus-declaration-errors/package.json
+e2e/clear-cache/__tests__/clearCache.test.js
+e2e/clear-cache/package.json
+e2e/compare-dom-nodes/__tests__/failedAssertion.js
+e2e/compare-dom-nodes/package.json
+e2e/console-after-teardown/__tests__/console.test.js
+e2e/console-after-teardown/package.json
+e2e/console-jsdom/__tests__/console.test.js
+e2e/console-jsdom/package.json
+e2e/console-winston/__tests__/console.test.js
+e2e/console-winston/package.json
+e2e/console-winston/yarn.lock
+e2e/console/__tests__/console.test.js
+e2e/console/package.json
+e2e/coverage-handlebars/__tests__/greet.js
+e2e/coverage-handlebars/greet.hbs
+e2e/coverage-handlebars/package.json
+e2e/coverage-handlebars/transform-handlebars.js
+e2e/coverage-handlebars/yarn.lock
+e2e/coverage-remapping/__tests__/coveredTest.ts
+e2e/coverage-remapping/covered.ts
+e2e/coverage-remapping/package.json
+e2e/coverage-remapping/typescriptPreprocessor.js
+e2e/coverage-remapping/yarn.lock
+e2e/coverage-report/.gitignore
+e2e/coverage-report/__mocks__/sumDependency.js
+e2e/coverage-report/__tests__/sum.test.js
+e2e/coverage-report/babel.config.js
+e2e/coverage-report/cached-duplicates/a/__tests__/identical.test.js
+e2e/coverage-report/cached-duplicates/a/identical.js
+e2e/coverage-report/cached-duplicates/b/__tests__/identical.test.js
+e2e/coverage-report/cached-duplicates/b/identical.js
+e2e/coverage-report/file.js
+e2e/coverage-report/notRequiredInTestSuite.js
+e2e/coverage-report/otherFile.js
+e2e/coverage-report/package.json
+e2e/coverage-report/setup.js
+e2e/coverage-report/sum.js
+e2e/coverage-report/sumDependency.js
+e2e/coverage-report/yarn.lock
+e2e/coverage-transform-instrumented/__tests__/coveredTest.js
+e2e/coverage-transform-instrumented/covered.js
+e2e/coverage-transform-instrumented/package.json
+e2e/coverage-transform-instrumented/preprocessor.js
+e2e/coverage-transform-instrumented/yarn.lock
+e2e/coverage-without-transform/__tests__/test.js
+e2e/coverage-without-transform/package.json
+e2e/coverage-without-transform/some-random-file.js
+e2e/create-process-object/__tests__/createProcessObject.test.js
+e2e/create-process-object/package.json
+e2e/create-process-object/setup.js
+e2e/custom-inline-snapshot-matchers/__tests__/asynchronous.test.js
+e2e/custom-inline-snapshot-matchers/package.json
+e2e/custom-matcher-stack-trace/__tests__/asynchronous.test.js
+e2e/custom-matcher-stack-trace/__tests__/sync.test.js
+e2e/custom-matcher-stack-trace/package.json
+e2e/custom-reporters/__tests__/add.test.js
+e2e/custom-reporters/__tests__/addFail.test.js
+e2e/custom-reporters/add.js
+e2e/custom-reporters/package.json
+e2e/custom-reporters/reporters/DefaultExportReporter.js
+e2e/custom-reporters/reporters/IncompleteReporter.js
+e2e/custom-reporters/reporters/TestReporter.js
+e2e/custom-resolver/__mocks__/manualMock.js
+e2e/custom-resolver/__tests__/customResolver.test.js
+e2e/custom-resolver/bar.js
+e2e/custom-resolver/foo.js
+e2e/custom-resolver/manualMock.js
+e2e/custom-resolver/package.json
+e2e/custom-resolver/resolver.js
+e2e/custom-test-sequencer/a.test.js
+e2e/custom-test-sequencer/b.test.js
+e2e/custom-test-sequencer/c.test.js
+e2e/custom-test-sequencer/d.test.js
+e2e/custom-test-sequencer/e.test.js
+e2e/custom-test-sequencer/package.json
+e2e/custom-test-sequencer/testSequencer.js
+e2e/custom-test-sequencer/testSequencerAsync.js
+e2e/declaration-errors/__tests__/describeReturnPromise.test.js
+e2e/declaration-errors/__tests__/describeReturnSomething.test.js
+e2e/declaration-errors/__tests__/describeThrow.test.js
+e2e/declaration-errors/package.json
+e2e/detect-open-handles/__tests__/histogram.js
+e2e/detect-open-handles/__tests__/inside.js
+e2e/detect-open-handles/__tests__/notify.js
+e2e/detect-open-handles/__tests__/outside.js
+e2e/detect-open-handles/__tests__/promise.js
+e2e/detect-open-handles/__tests__/unref.js
+e2e/detect-open-handles/babel.config.js
+e2e/detect-open-handles/package.json
+e2e/detect-open-handles/server.js
+e2e/dom-diffing/__tests__/dom.test.js
+e2e/dom-diffing/package.json
+e2e/done-in-hooks/__tests__/index.test.js
+e2e/done-in-hooks/package.json
+e2e/dynamic-require-dependencies/__tests__/dynamicRequire.test.js
+e2e/dynamic-require-dependencies/dynamicRequire.js
+e2e/dynamic-require-dependencies/package.json
+e2e/dynamic-require-dependencies/source.js
+e2e/each/__tests__/describeOnly.test.js
+e2e/each/__tests__/eachException.test.js
+e2e/each/__tests__/eachOnly.test.js
+e2e/each/__tests__/eachSkip.test.js
+e2e/each/__tests__/failure.test.js
+e2e/each/__tests__/pretty.test.js
+e2e/each/__tests__/success.test.js
+e2e/each/package.json
+e2e/empty-describe-with-hooks/__tests__/hookInDescribeWithSkippedTest.test.js
+e2e/empty-describe-with-hooks/__tests__/hookInEmptyDescribe.test.js
+e2e/empty-describe-with-hooks/__tests__/hookInEmptyNestedDescribe.test.js
+e2e/empty-describe-with-hooks/__tests__/multipleHooksInEmptyDescribe.test.js
+e2e/empty-describe-with-hooks/package.json
+e2e/empty-suite-error/__tests__/emptySuite.test.js
+e2e/empty-suite-error/package.json
+e2e/env-test/__tests__/env.test.js
+e2e/env-test/__tests__/equivalent.test.js
+e2e/env-test/package.json
+e2e/environment-after-teardown/__tests__/afterTeardown.test.js
+e2e/environment-after-teardown/package.json
+e2e/environmentOptions/__tests__/environmentOptions.test.js
+e2e/environmentOptions/package.json
+e2e/error-on-deprecated/__tests__/defaultTimeoutInterval.test.js
+e2e/error-on-deprecated/__tests__/fail.test.js
+e2e/error-on-deprecated/__tests__/jasmine.addMatchers.test.js
+e2e/error-on-deprecated/__tests__/jasmine.any.test.js
+e2e/error-on-deprecated/__tests__/jasmine.anything.test.js
+e2e/error-on-deprecated/__tests__/jasmine.arrayContaining.test.js
+e2e/error-on-deprecated/__tests__/jasmine.createSpy.test.js
+e2e/error-on-deprecated/__tests__/jasmine.objectContaining.test.js
+e2e/error-on-deprecated/__tests__/jasmine.stringMatching.test.js
+e2e/error-on-deprecated/__tests__/pending.test.js
+e2e/error-on-deprecated/__tests__/spyOn.test.js
+e2e/error-on-deprecated/__tests__/spyOnProperty.test.js
+e2e/error-on-deprecated/package.json
+e2e/esm-config/cjs/__tests__/test.js
+e2e/esm-config/cjs/jest.config.cjs
+e2e/esm-config/cjs/package.json
+e2e/esm-config/js/__tests__/test.js
+e2e/esm-config/js/jest.config.js
+e2e/esm-config/js/package.json
+e2e/esm-config/mjs/__tests__/test.js
+e2e/esm-config/mjs/jest.config.mjs
+e2e/esm-config/mjs/package.json
+e2e/expect-async-matcher/__tests__/failure.test.js
+e2e/expect-async-matcher/__tests__/success.test.js
+e2e/expect-async-matcher/babel.config.js
+e2e/expect-async-matcher/matchers.js
+e2e/expect-async-matcher/package.json
+e2e/expect-async-matcher/yarn.lock
+e2e/expect-in-vm/__tests__/expect-in-vm.test.js
+e2e/expect-in-vm/package.json
+e2e/failureDetails-property/__tests__/tests.test.js
+e2e/failureDetails-property/myreporter.js
+e2e/failureDetails-property/package.json
+e2e/failures/__tests__/__snapshots__/snapshot.test.js.snap
+e2e/failures/__tests__/__snapshots__/snapshotWithHint.test.js.snap
+e2e/failures/__tests__/assertionCount.test.js
+e2e/failures/__tests__/assertionError.test.js
+e2e/failures/__tests__/asyncFailures.test.js
+e2e/failures/__tests__/duringTests.test.js
+e2e/failures/__tests__/errorAfterTestComplete.test.js
+e2e/failures/__tests__/snapshot.test.js
+e2e/failures/__tests__/snapshotWithHint.test.js
+e2e/failures/__tests__/testMacro.test.js
+e2e/failures/__tests__/throwNumber.test.js
+e2e/failures/__tests__/throwObject.test.js
+e2e/failures/__tests__/throwObjectWithStackProp.test.js
+e2e/failures/__tests__/throwString.test.js
+e2e/failures/babel.config.js
+e2e/failures/macros.js
+e2e/failures/package.json
+e2e/failures/yarn.lock
+e2e/fake-promises/asap/__tests__/generator.test.js
+e2e/fake-promises/asap/fake-promises.js
+e2e/fake-promises/asap/package.json
+e2e/fake-promises/immediate/__tests__/generator.test.js
+e2e/fake-promises/immediate/fake-promises.js
+e2e/fake-promises/immediate/package.json
+e2e/filter/__tests__/bar.test.js
+e2e/filter/__tests__/foo.test.js
+e2e/filter/my-broken-filter.js
+e2e/filter/my-broken-setup-filter.js
+e2e/filter/my-clowny-filter.js
+e2e/filter/my-filter.js
+e2e/filter/my-secondary-filter.js
+e2e/filter/my-setup-filter.js
+e2e/filter/package.json
+e2e/focused-tests/__tests__/tests.js
+e2e/focused-tests/package.json
+e2e/generator-mock/__tests__/generatorMock.test.js
+e2e/generator-mock/index.js
+e2e/generator-mock/package.json
+e2e/global-setup-custom-transform/__tests__/test.js
+e2e/global-setup-custom-transform/index.js
+e2e/global-setup-custom-transform/package.json
+e2e/global-setup-custom-transform/setup.js
+e2e/global-setup-custom-transform/transformer.js
+e2e/global-setup-node-modules/.gitignore
+e2e/global-setup-node-modules/__tests__/test.js
+e2e/global-setup-node-modules/babel.config.js
+e2e/global-setup-node-modules/node_modules/example/index.js
+e2e/global-setup-node-modules/package.json
+e2e/global-setup-node-modules/setup.js
+e2e/global-setup/__tests__/setup1.test.js
+e2e/global-setup/__tests__/setup2.test.js
+e2e/global-setup/__tests__/setup3.test.js
+e2e/global-setup/babel.config.js
+e2e/global-setup/custom-tests-dir/pass.test.js
+e2e/global-setup/invalidSetup.js
+e2e/global-setup/invalidSetupWithNamedExport.js
+e2e/global-setup/package.json
+e2e/global-setup/project-1/setup.js
+e2e/global-setup/project-1/setup.test.js
+e2e/global-setup/project-2/setup.js
+e2e/global-setup/project-2/setup.test.js
+e2e/global-setup/projects.jest.config.js
+e2e/global-setup/setup.js
+e2e/global-setup/setupWithConfig.js
+e2e/global-setup/setupWithDefaultExport.js
+e2e/global-setup/yarn.lock
+e2e/global-teardown/__tests__/teardown1.test.js
+e2e/global-teardown/__tests__/teardown2.test.js
+e2e/global-teardown/__tests__/teardown3.test.js
+e2e/global-teardown/babel.config.js
+e2e/global-teardown/custom-tests-dir/pass.test.js
+e2e/global-teardown/invalidTeardown.js
+e2e/global-teardown/invalidTeardownWithNamedExport.js
+e2e/global-teardown/package.json
+e2e/global-teardown/project-1/teardown.js
+e2e/global-teardown/project-1/teardown.test.js
+e2e/global-teardown/project-2/teardown.js
+e2e/global-teardown/project-2/teardown.test.js
+e2e/global-teardown/projects.jest.config.js
+e2e/global-teardown/teardown.js
+e2e/global-teardown/teardownWithConfig.js
+e2e/global-teardown/teardownWithDefaultExport.js
+e2e/global-teardown/yarn.lock
+e2e/imported-globals/__tests__/env.test.js
+e2e/imported-globals/babel.config.js
+e2e/imported-globals/package.json
+e2e/jasmine-async/__tests__/asyncTestFails.test.js
+e2e/jasmine-async/__tests__/concurrent-each.test.js
+e2e/jasmine-async/__tests__/concurrent-many.test.js
+e2e/jasmine-async/__tests__/concurrent-only-each.test.js
+e2e/jasmine-async/__tests__/concurrent.test.js
+e2e/jasmine-async/__tests__/concurrentWithinDescribe.test.js
+e2e/jasmine-async/__tests__/generator.test.js
+e2e/jasmine-async/__tests__/pendingInPromise.test.js
+e2e/jasmine-async/__tests__/promiseAfterAll.test.js
+e2e/jasmine-async/__tests__/promiseAfterEach.test.js
+e2e/jasmine-async/__tests__/promiseBeforeAll.test.js
+e2e/jasmine-async/__tests__/promiseBeforeEach.test.js
+e2e/jasmine-async/__tests__/promiseFit.test.js
+e2e/jasmine-async/__tests__/promiseIt.test.js
+e2e/jasmine-async/__tests__/promiseXit.test.js
+e2e/jasmine-async/__tests__/returningValues.test.js
+e2e/jasmine-async/package.json
+e2e/json-reporter/__tests__/sum.test.js
+e2e/json-reporter/package.json
+e2e/json-reporter/sum.js
+e2e/lifecycles/__tests__/index.js
+e2e/lifecycles/index.js
+e2e/lifecycles/package.json
+e2e/list-tests/__tests__/dummy.test.js
+e2e/list-tests/__tests__/other.test.js
+e2e/list-tests/package.json
+e2e/location-in-results/__tests__/test.js
+e2e/location-in-results/package.json
+e2e/mock-json/__mocks__/data.json
+e2e/mock-json/__tests__/index.js
+e2e/mock-json/data.json
+e2e/mock-json/index.js
+e2e/mock-json/package.json
+e2e/mock-names/with-empty-mock-name-not-called/__tests__/index.js
+e2e/mock-names/with-empty-mock-name-not-called/index.js
+e2e/mock-names/with-empty-mock-name-not-called/package.json
+e2e/mock-names/with-empty-mock-name/__tests__/index.js
+e2e/mock-names/with-empty-mock-name/index.js
+e2e/mock-names/with-empty-mock-name/package.json
+e2e/mock-names/with-mock-name-call-times-fail/__tests__/index.js
+e2e/mock-names/with-mock-name-call-times-fail/index.js
+e2e/mock-names/with-mock-name-call-times-fail/package.json
+e2e/mock-names/with-mock-name-call-times-pass/__tests__/index.js
+e2e/mock-names/with-mock-name-call-times-pass/index.js
+e2e/mock-names/with-mock-name-call-times-pass/package.json
+e2e/mock-names/with-mock-name-not-called-fail/__tests__/index.js
+e2e/mock-names/with-mock-name-not-called-fail/index.js
+e2e/mock-names/with-mock-name-not-called-fail/package.json
+e2e/mock-names/with-mock-name-not-called-pass/__tests__/index.js
+e2e/mock-names/with-mock-name-not-called-pass/index.js
+e2e/mock-names/with-mock-name-not-called-pass/package.json
+e2e/mock-names/with-mock-name-not-called/__tests__/index.js
+e2e/mock-names/with-mock-name-not-called/index.js
+e2e/mock-names/with-mock-name-not-called/package.json
+e2e/mock-names/with-mock-name/__tests__/index.js
+e2e/mock-names/with-mock-name/index.js
+e2e/mock-names/with-mock-name/package.json
+e2e/mock-names/without-mock-name-not-called/__tests__/index.js
+e2e/mock-names/without-mock-name-not-called/index.js
+e2e/mock-names/without-mock-name-not-called/package.json
+e2e/mock-names/without-mock-name/__tests__/index.js
+e2e/mock-names/without-mock-name/index.js
+e2e/mock-names/without-mock-name/package.json
+e2e/modern-fake-timers/from-config/__tests__/test.js
+e2e/modern-fake-timers/from-config/package.json
+e2e/modern-fake-timers/from-jest-object/__tests__/test.js
+e2e/modern-fake-timers/from-jest-object/package.json
+e2e/module-name-mapper-correct-config/__mocks__/styleMock.js
+e2e/module-name-mapper-correct-config/__tests__/index.js
+e2e/module-name-mapper-correct-config/index.js
+e2e/module-name-mapper-correct-config/package.json
+e2e/module-name-mapper-correct-config/style.css
+e2e/module-name-mapper-correct-config/style.sass
+e2e/module-name-mapper-correct-mock-absolute-path/__tests__/index.js
+e2e/module-name-mapper-correct-mock-absolute-path/index.js
+e2e/module-name-mapper-correct-mock-absolute-path/package.json
+e2e/module-name-mapper-correct-mock-absolute-path/src/components/Button.js
+e2e/module-name-mapper-mock/__tests__/storage/track/Track.test.js
+e2e/module-name-mapper-mock/__tests__/storage/track/TrackExpected.test.js
+e2e/module-name-mapper-mock/package.json
+e2e/module-name-mapper-mock/src/storage/track/Track.js
+e2e/module-name-mapper-wrong-array-config/__tests__/index.js
+e2e/module-name-mapper-wrong-array-config/index.js
+e2e/module-name-mapper-wrong-array-config/package.json
+e2e/module-name-mapper-wrong-array-config/style.css
+e2e/module-name-mapper-wrong-config/__tests__/index.js
+e2e/module-name-mapper-wrong-config/index.js
+e2e/module-name-mapper-wrong-config/package.json
+e2e/module-name-mapper-wrong-config/style.css
+e2e/module-parent-null-in-test/__tests__/index.js
+e2e/module-parent-null-in-test/package.json
+e2e/multi-project-config-root/bar/__tests__/boggusBar.test.js
+e2e/multi-project-config-root/foo/__tests__/boggusFoo.test.js
+e2e/multi-project-config-root/package.json
+e2e/native-async-mock/Native.js
+e2e/native-async-mock/__tests__/nativeAsyncMock.test.js
+e2e/native-async-mock/package.json
+e2e/native-esm-typescript/__tests__/double.test.ts
+e2e/native-esm-typescript/babel.config.js
+e2e/native-esm-typescript/double.ts
+e2e/native-esm-typescript/package.json
+e2e/native-esm/__tests__/native-esm-tla.test.js
+e2e/native-esm/__tests__/native-esm.test.js
+e2e/native-esm/anotherDynamicImport.js
+e2e/native-esm/circularDependentA.mjs
+e2e/native-esm/circularDependentB.mjs
+e2e/native-esm/commonjs.cjs
+e2e/native-esm/commonjsNamed.cjs
+e2e/native-esm/dynamicImport.js
+e2e/native-esm/fromCjs.mjs
+e2e/native-esm/fromEsm.cjs
+e2e/native-esm/index.js
+e2e/native-esm/namedExport.cjs
+e2e/native-esm/namespaceExport.js
+e2e/native-esm/package.json
+e2e/native-esm/stateful.cjs
+e2e/native-esm/stateful.mjs
+e2e/nested-event-loop/__tests__/nestedEventLoop.test.js
+e2e/nested-event-loop/package.json
+e2e/nested-test-definitions/__tests__/nestedDescribeInTest.js
+e2e/nested-test-definitions/__tests__/nestedHookInTest.js
+e2e/nested-test-definitions/__tests__/nestedTestOutsideDescribe.js
+e2e/nested-test-definitions/__tests__/nestedTestWithinDescribe.js
+e2e/nested-test-definitions/index.js
+e2e/nested-test-definitions/package.json
+e2e/no-tests-found-test/package.json
+e2e/node-path/__tests__/nodePath.test.js
+e2e/node-path/package.json
+e2e/node-path/src/path/file.js
+e2e/override-globals/__tests__/index.js
+e2e/override-globals/babel.config.js
+e2e/override-globals/index.js
+e2e/override-globals/package.json
+e2e/override-globals/setup.js
+e2e/package.json
+e2e/pnp/__tests__/index.js
+e2e/pnp/__tests__/undeclared-dependency.test.js
+e2e/pnp/lib/index.js
+e2e/pnp/lib/package.json
+e2e/pnp/package.json
+e2e/pnp/undeclared-dependency/index.js
+e2e/pnp/undeclared-dependency/package.json
+e2e/pnp/yarn.lock
+e2e/presets/js/__tests__/index.js
+e2e/presets/js/node_modules/jest-preset-js/jest-preset.js
+e2e/presets/js/node_modules/jest-preset-js/mapper.js
+e2e/presets/js/package.json
+e2e/presets/json/__tests__/index.js
+e2e/presets/json/node_modules/jest-preset-json/jest-preset.json
+e2e/presets/json/node_modules/jest-preset-json/mapper.js
+e2e/presets/json/package.json
+e2e/process-exit/__tests__/test.js
+e2e/process-exit/babel.config.js
+e2e/process-exit/package.json
+e2e/promise-and-callback/__tests__/promise-and-callback.test.js
+e2e/promise-and-callback/package.json
+e2e/promise-reject/package.json
+e2e/regex-(char-in-path/__tests__/regexCharInPath.test.js
+e2e/regex-(char-in-path/package.json
+e2e/require-after-teardown/__tests__/lateRequire.test.js
+e2e/require-after-teardown/index.js
+e2e/require-after-teardown/package.json
+e2e/require-main-after-create-require/__tests__/parent.test.js
+e2e/require-main-after-create-require/child.js
+e2e/require-main-after-create-require/empty.js
+e2e/require-main-after-create-require/package.json
+e2e/require-main-isolate-modules/__tests__/index.test.js
+e2e/require-main-isolate-modules/child.js
+e2e/require-main-isolate-modules/index.js
+e2e/require-main-isolate-modules/package.json
+e2e/require-main-reset-modules/__tests__/resetModulesCallDirectly.test.js
+e2e/require-main-reset-modules/__tests__/resetModulesCallIndirectly.test.js
+e2e/require-main-reset-modules/__tests__/resetModulesFlagDirectly.test.js
+e2e/require-main-reset-modules/__tests__/resetModulesFlagIndirectly.test.js
+e2e/require-main-reset-modules/direct.js
+e2e/require-main-reset-modules/indirect.js
+e2e/require-main-reset-modules/package.json
+e2e/require-main/__tests__/loader.test.js
+e2e/require-main/babel.config.js
+e2e/require-main/example.js
+e2e/require-main/loader.js
+e2e/require-main/package.json
+e2e/reset-modules/__tests__/resetModules.test.js
+e2e/reset-modules/package.json
+e2e/resolve-get-paths/__tests__/resolveGetPaths.test.js
+e2e/resolve-get-paths/babel.config.js
+e2e/resolve-get-paths/package.json
+e2e/resolve-no-extensions/__tests__/test.js
+e2e/resolve-no-extensions/babel.config.js
+e2e/resolve-no-extensions/index.js
+e2e/resolve-no-extensions/package.json
+e2e/resolve-no-extensions/some-json-file.json
+e2e/resolve-node-module/__mocks__/mock-jsx-module/index.jsx
+e2e/resolve-node-module/__mocks__/mock-jsx-module/package.json
+e2e/resolve-node-module/__mocks__/mock-module-alt/index.js
+e2e/resolve-node-module/__mocks__/mock-module-alt/package.json
+e2e/resolve-node-module/__mocks__/mock-module-without-pkg/index.js
+e2e/resolve-node-module/__mocks__/mock-module/index.js
+e2e/resolve-node-module/__mocks__/mock-module/package.json
+e2e/resolve-node-module/__tests__/resolve-node-module.test.js
+e2e/resolve-node-module/package.json
+e2e/resolve-with-paths/__tests__/resolveWithPaths.test.js
+e2e/resolve-with-paths/babel.config.js
+e2e/resolve-with-paths/dir/mod.js
+e2e/resolve-with-paths/package.json
+e2e/resolve/Test5.js
+e2e/resolve/Test7.js
+e2e/resolve/__mocks__/Test5.js
+e2e/resolve/__mocks__/Test6.js
+e2e/resolve/__tests__/nope.txt
+e2e/resolve/__tests__/resolve.test.js
+e2e/resolve/hasteImpl.js
+e2e/resolve/package.json
+e2e/resolve/requiresUnexistingModule.js
+e2e/resolve/test1.android.js
+e2e/resolve/test1.js
+e2e/resolve/test1.json
+e2e/resolve/test1.native.js
+e2e/resolve/test2.js
+e2e/resolve/test2.json
+e2e/resolve/test2.native.js
+e2e/resolve/test2mapper.js
+e2e/resolve/test2mapper.native.js
+e2e/resolve/test3.js
+e2e/resolve/test3.json
+e2e/resolve/test4.json
+e2e/run-programmatically/babel.config.js
+e2e/run-programmatically/cjs.js
+e2e/run-programmatically/esm.js
+e2e/run-programmatically/index.js
+e2e/run-programmatically/package.json
+e2e/runJest.ts
+e2e/runtime-internal-module-registry/__mocks__/fs.js
+e2e/runtime-internal-module-registry/__tests__/runtimeInternalModuleRegistry.test.js
+e2e/runtime-internal-module-registry/package.json
+e2e/select-projects-missing-name/__tests__/first-project.test.js
+e2e/select-projects-missing-name/__tests__/second-project.test.js
+e2e/select-projects-missing-name/package.json
+e2e/select-projects/__tests__/first-project.test.js
+e2e/select-projects/__tests__/second-project.test.js
+e2e/select-projects/package.json
+e2e/set-immediate/__tests__/setImmediate.test.js
+e2e/set-immediate/package.json
+e2e/setup-files-after-env-config/__tests__/runnerPatch.test.js
+e2e/setup-files-after-env-config/__tests__/test1.test.js
+e2e/setup-files-after-env-config/__tests__/test2.test.js
+e2e/setup-files-after-env-config/setup1.js
+e2e/setup-files-after-env-config/setup2.js
+e2e/setup-files-after-env-config/setupHooksIntoRunner.js
+e2e/snapshot-escape/__tests__/snapshot.test.js
+e2e/snapshot-escape/__tests__/snapshotEscapeRegex.js
+e2e/snapshot-escape/__tests__/snapshotEscapeSubstitution.test.js
+e2e/snapshot-escape/package.json
+e2e/snapshot-mock-fs/__tests__/snapshot.test.js
+e2e/snapshot-mock-fs/package.json
+e2e/snapshot-resolver/__tests__/snapshot.test.js
+e2e/snapshot-resolver/customSnapshotResolver.js
+e2e/snapshot-resolver/package.json
+e2e/snapshot-serializers/__tests__/snapshot.test.js
+e2e/snapshot-serializers/package.json
+e2e/snapshot-serializers/plugins/bar.js
+e2e/snapshot-serializers/plugins/foo/index.js
+e2e/snapshot-serializers/transformer.js
+e2e/snapshot-serializers/utils.js
+e2e/snapshot-unknown/__tests__/__snapshots__/fails.test.js.snap
+e2e/snapshot-unknown/__tests__/__snapshots__/fails2.test.js.snap
+e2e/snapshot-unknown/__tests__/__snapshots__/works.test.js.snap
+e2e/snapshot-unknown/__tests__/works.test.js
+e2e/snapshot-unknown/package.json
+e2e/snapshot/__tests__/secondSnapshot.test.js
+e2e/snapshot/__tests__/snapshot.test.js
+e2e/snapshot/package.json
+e2e/stack-trace-no-capture-stack-trace/__tests__/runtimeError.test.js
+e2e/stack-trace-no-capture-stack-trace/package.json
+e2e/stack-trace-source-maps-with-coverage/__tests__/fails.ts
+e2e/stack-trace-source-maps-with-coverage/lib.ts
+e2e/stack-trace-source-maps-with-coverage/package.json
+e2e/stack-trace-source-maps-with-coverage/preprocessor.js
+e2e/stack-trace-source-maps-with-coverage/yarn.lock
+e2e/stack-trace-source-maps/__tests__/fails.ts
+e2e/stack-trace-source-maps/package.json
+e2e/stack-trace-source-maps/preprocessor.js
+e2e/stack-trace-source-maps/yarn.lock
+e2e/stack-trace/__tests__/runtimeError.test.js
+e2e/stack-trace/__tests__/stackTrace.test.js
+e2e/stack-trace/__tests__/stackTraceWithoutMessage.test.js
+e2e/stack-trace/__tests__/testError.test.js
+e2e/stack-trace/package.json
+e2e/test-environment-async/TestEnvironment.js
+e2e/test-environment-async/__tests__/custom.test.js
+e2e/test-environment-async/package.json
+e2e/test-environment-circus-async/CircusAsyncHandleTestEventEnvironment.js
+e2e/test-environment-circus-async/__tests__/circusHandleTestEvent.test.js
+e2e/test-environment-circus-async/package.json
+e2e/test-environment-circus/CircusHandleTestEventEnvironment.js
+e2e/test-environment-circus/__tests__/circusHandleTestEvent.test.js
+e2e/test-environment-circus/package.json
+e2e/test-environment/DocblockPragmasEnvironment.js
+e2e/test-environment/EsmDefaultEnvironment.js
+e2e/test-environment/__tests__/docblockPragmas.test.js
+e2e/test-environment/__tests__/env.test.js
+e2e/test-environment/__tests__/esmDefault.test.js
+e2e/test-environment/package.json
+e2e/test-in-root/foo.js
+e2e/test-in-root/footest.js
+e2e/test-in-root/package.json
+e2e/test-in-root/spec.js
+e2e/test-in-root/test.js
+e2e/test-name-pattern-skipped/__tests__/testNamePatternSkipped.test.js
+e2e/test-name-pattern-skipped/package.json
+e2e/test-name-pattern/__tests__/testNamePattern.test.js
+e2e/test-name-pattern/package.json
+e2e/test-results-processor/__tests__/processor.test.js
+e2e/test-results-processor/package.json
+e2e/test-results-processor/processor.js
+e2e/test-retries/__tests__/beforeAllFailure.test.js
+e2e/test-retries/__tests__/control.test.js
+e2e/test-retries/__tests__/e2e.test.js
+e2e/test-retries/__tests__/retry.test.js
+e2e/test-retries/package.json
+e2e/test-retries/reporters/RetryReporter.js
+e2e/test-todo/__tests__/statuses.test.js
+e2e/test-todo/__tests__/todoMultipleArgs.test.js
+e2e/test-todo/__tests__/todoNoArgs.test.js
+e2e/test-todo/__tests__/todoNonString.test.js
+e2e/test-todo/__tests__/verbose.test.js
+e2e/test-todo/package.json
+e2e/timer-reset-mocks/after-reset-all-mocks/index.js
+e2e/timer-reset-mocks/after-reset-all-mocks/package.json
+e2e/timer-reset-mocks/after-reset-all-mocks/timerAndMock.test.js
+e2e/timer-reset-mocks/with-reset-mocks/index.js
+e2e/timer-reset-mocks/with-reset-mocks/package.json
+e2e/timer-reset-mocks/with-reset-mocks/timerWithMock.test.js
+e2e/timer-use-real-timers/__tests__/useRealTimers.test.js
+e2e/timer-use-real-timers/package.json
+e2e/to-match-inline-snapshot-with-retries/package.json
+e2e/to-match-inline-snapshot/babel.config.js
+e2e/to-match-inline-snapshot/package.json
+e2e/to-match-snapshot-with-retries/package.json
+e2e/to-match-snapshot-with-string-serializer/package.json
+e2e/to-match-snapshot-with-string-serializer/serializers/string.js
+e2e/to-match-snapshot/package.json
+e2e/to-throw-error-matching-inline-snapshot/babel.config.js
+e2e/to-throw-error-matching-inline-snapshot/package.json
+e2e/to-throw-error-matching-snapshot/package.json
+e2e/transform-linked-modules/__tests__/linkedModules.test.js
+e2e/transform-linked-modules/ignored/normal.js
+e2e/transform-linked-modules/ignored/symlink.js
+e2e/transform-linked-modules/package.json
+e2e/transform-linked-modules/package/index.js
+e2e/transform-linked-modules/preprocessor.js
+e2e/transform/babel-jest-ignored/__tests__/ignoredFile.test.js
+e2e/transform/babel-jest-ignored/babel.config.js
+e2e/transform/babel-jest-ignored/package.json
+e2e/transform/babel-jest-manual/__tests__/babelJest.test.js
+e2e/transform/babel-jest-manual/foo.js
+e2e/transform/babel-jest-manual/package.json
+e2e/transform/babel-jest-manual/transformer.js
+e2e/transform/babel-jest-manual/yarn.lock
+e2e/transform/babel-jest/__tests__/babelJest.test.js
+e2e/transform/babel-jest/__tests__/changedCwd.test.js
+e2e/transform/babel-jest/babel.config.js
+e2e/transform/babel-jest/notCovered.js
+e2e/transform/babel-jest/package.json
+e2e/transform/babel-jest/some-dir/.gitkeep
+e2e/transform/babel-jest/this-directory-is-covered/covered.js
+e2e/transform/babel-jest/this-directory-is-covered/excludedFromCoverage.js
+e2e/transform/babel-jest/yarn.lock
+e2e/transform/cache/__tests__/aTests.js
+e2e/transform/cache/__tests__/bTests.js
+e2e/transform/cache/__tests__/cTests.js
+e2e/transform/cache/__tests__/dTests.js
+e2e/transform/cache/common-file.js
+e2e/transform/cache/package.json
+e2e/transform/cache/transformer.js
+e2e/transform/custom-instrumenting-preprocessor/__tests__/customPreprocessor.test.js
+e2e/transform/custom-instrumenting-preprocessor/package.json
+e2e/transform/custom-instrumenting-preprocessor/preprocessor.js
+e2e/transform/custom-instrumenting-preprocessor/src/index.js
+e2e/transform/custom-instrumenting-preprocessor/src/someOtherFile.js
+e2e/transform/ecmascript-modules-support/__tests__/ecmascriptModulesSupport.mjs
+e2e/transform/ecmascript-modules-support/babel.config.js
+e2e/transform/ecmascript-modules-support/package.json
+e2e/transform/ecmascript-modules-support/src/index.mjs
+e2e/transform/ecmascript-modules-support/src/module.mjs
+e2e/transform/multiple-transformers/__tests__/__snapshots__/multipleTransformers.test.js.snap
+e2e/transform/multiple-transformers/__tests__/multipleTransformers.test.js
+e2e/transform/multiple-transformers/babel.config.js
+e2e/transform/multiple-transformers/cssPreprocessor.js
+e2e/transform/multiple-transformers/filePreprocessor.js
+e2e/transform/multiple-transformers/jsPreprocessor.js
+e2e/transform/multiple-transformers/package.json
+e2e/transform/multiple-transformers/src/App.css
+e2e/transform/multiple-transformers/src/App.js
+e2e/transform/multiple-transformers/src/logo.svg
+e2e/transform/multiple-transformers/yarn.lock
+e2e/transform/no-babel-jest/__tests__/failsWithSyntaxError.test.js
+e2e/transform/no-babel-jest/__tests__/passesWithNoBabelJest.js
+e2e/transform/no-babel-jest/package.json
+e2e/transform/no-babel-jest/this-directory-is-covered/covered.js
+e2e/transform/no-babel-jest/this-directory-is-covered/excludedFromCoverage.js
+e2e/transform/transform-environment/__tests__/add.test.js
+e2e/transform/transform-environment/babel.config.js
+e2e/transform/transform-environment/environment.ts
+e2e/transform/transform-environment/package.json
+e2e/transform/transform-environment/tsconfig.json
+e2e/transform/transform-runner/__tests__/add.test.js
+e2e/transform/transform-runner/babel.config.js
+e2e/transform/transform-runner/package.json
+e2e/transform/transform-runner/runner.ts
+e2e/transform/transform-runner/tsconfig.json
+e2e/transform/transform-testrunner/__tests__/add.test.js
+e2e/transform/transform-testrunner/babel.config.js
+e2e/transform/transform-testrunner/package.json
+e2e/transform/transform-testrunner/test-runner.ts
+e2e/transform/transform-testrunner/tsconfig.json
+e2e/transform/transformer-config/.babelrc
+e2e/transform/transformer-config/NotCovered.js
+e2e/transform/transformer-config/__tests__/transformer-config.test.js
+e2e/transform/transformer-config/package.json
+e2e/transform/transformer-config/this-directory-is-covered/Covered.js
+e2e/transform/transformer-config/this-directory-is-covered/ExcludedFromCoverage.js
+e2e/transform/transformer-config/yarn.lock
+e2e/tsconfig.json
+e2e/typescript-coverage/__tests__/coveredTest.ts
+e2e/typescript-coverage/covered.ts
+e2e/typescript-coverage/package.json
+e2e/typescript-coverage/typescriptPreprocessor.js
+e2e/typescript-coverage/yarn.lock
+e2e/v8-coverage/empty-sourcemap/babel.config.js
+e2e/v8-coverage/empty-sourcemap/package.json
+e2e/v8-coverage/empty-sourcemap/test.ts
+e2e/v8-coverage/empty-sourcemap/types.ts
+e2e/v8-coverage/no-sourcemap/Thing.js
+e2e/v8-coverage/no-sourcemap/__tests__/Thing.test.js
+e2e/v8-coverage/no-sourcemap/cssTransform.js
+e2e/v8-coverage/no-sourcemap/package.json
+e2e/v8-coverage/no-sourcemap/x.css
+e2e/verbose-reporter/__tests__/verbose.test.js
+e2e/verbose-reporter/package.json
+e2e/wrong-env/__tests__/beforeTest.js
+e2e/wrong-env/__tests__/jsdom.js
+e2e/wrong-env/__tests__/node.js
+e2e/wrong-env/package.json
+examples/angular/.babelrc.js
+examples/angular/app.component.spec.ts
+examples/angular/app.component.ts
+examples/angular/app.module.ts
+examples/angular/jest.config.js
+examples/angular/package.json
+examples/angular/setupJest.js
+examples/angular/shared/data.service.spec.ts
+examples/angular/shared/data.service.ts
+examples/angular/shared/sub.service.spec.ts
+examples/angular/shared/sub.service.ts
+examples/async/.babelrc.js
+examples/async/__mocks__/request.js
+examples/async/__tests__/user.test.js
+examples/async/package.json
+examples/async/request.js
+examples/async/user.js
+examples/automatic-mocks/.babelrc.js
+examples/automatic-mocks/__tests__/automock.test.js
+examples/automatic-mocks/__tests__/createMockFromModule.test.js
+examples/automatic-mocks/__tests__/disableAutomocking.test.js
+examples/automatic-mocks/package.json
+examples/automatic-mocks/utils.js
+examples/enzyme/.babelrc.js
+examples/enzyme/CheckboxWithLabel.js
+examples/enzyme/__tests__/CheckboxWithLabel-test.js
+examples/enzyme/package.json
+examples/getting-started/.babelrc.js
+examples/getting-started/package.json
+examples/getting-started/sum.js
+examples/getting-started/sum.test.js
+examples/jquery/.babelrc.js
+examples/jquery/__tests__/display_user.test.js
+examples/jquery/__tests__/fetch_current_user.test.js
+examples/jquery/displayUser.js
+examples/jquery/fetchCurrentUser.js
+examples/jquery/package.json
+examples/manual-mocks/.babelrc.js
+examples/manual-mocks/FileSummarizer.js
+examples/manual-mocks/__mocks__/fs.js
+examples/manual-mocks/__mocks__/lodash.js
+examples/manual-mocks/__tests__/file_summarizer.test.js
+examples/manual-mocks/__tests__/lodashMocking.test.js
+examples/manual-mocks/__tests__/user.test.js
+examples/manual-mocks/__tests__/userMocked.test.js
+examples/manual-mocks/models/__mocks__/user.js
+examples/manual-mocks/models/user.js
+examples/manual-mocks/package.json
+examples/module-mock/.babelrc.js
+examples/module-mock/__tests__/full_mock.js
+examples/module-mock/__tests__/mock_per_test.js
+examples/module-mock/__tests__/partial_mock.js
+examples/module-mock/fruit.js
+examples/module-mock/package.json
+examples/mongodb/__test__/db.test.js
+examples/mongodb/babel.config.js
+examples/mongodb/jest.config.js
+examples/mongodb/mongo-environment.js
+examples/mongodb/package.json
+examples/mongodb/setup.js
+examples/mongodb/teardown.js
+examples/react-native/.babelrc.js
+examples/react-native/.buckconfig
+examples/react-native/.gitignore
+examples/react-native/.watchmanconfig
+examples/react-native/Intro.js
+examples/react-native/__tests__/__snapshots__/intro.test.js.snap
+examples/react-native/__tests__/intro.test.js
+examples/react-native/index.js
+examples/react-native/jest.config.js
+examples/react-native/package.json
+examples/react-testing-library/.babelrc.js
+examples/react-testing-library/CheckboxWithLabel.js
+examples/react-testing-library/__tests__/CheckboxWithLabel-test.js
+examples/react-testing-library/package.json
+examples/react/.babelrc.js
+examples/react/CheckboxWithLabel.js
+examples/react/__tests__/CheckboxWithLabel-test.js
+examples/react/package.json
+examples/snapshot/.babelrc.js
+examples/snapshot/Clock.react.js
+examples/snapshot/Link.react.js
+examples/snapshot/__tests__/__snapshots__/clock.react.test.js.snap
+examples/snapshot/__tests__/__snapshots__/link.react.test.js.snap
+examples/snapshot/__tests__/clock.react.test.js
+examples/snapshot/__tests__/link.react.test.js
+examples/snapshot/package.json
+examples/timer/.babelrc.js
+examples/timer/__tests__/infinite_timer_game.test.js
+examples/timer/__tests__/timer_game.test.js
+examples/timer/infiniteTimerGame.js
+examples/timer/package.json
+examples/timer/timerGame.js
+examples/typescript/.babelrc.js
+examples/typescript/CheckboxWithLabel.tsx
+examples/typescript/__tests__/CheckboxWithLabel-test.tsx
+examples/typescript/__tests__/calc.test.ts
+examples/typescript/__tests__/sub-test.ts
+examples/typescript/__tests__/sum-test.ts
+examples/typescript/__tests__/sum.test.js
+examples/typescript/calc.ts
+examples/typescript/memory.ts
+examples/typescript/package.json
+examples/typescript/sub.ts
+examples/typescript/sum.js
+examples/typescript/sum.ts
+examples/typescript/tsconfig.json
+fixtures/callExpressionWithoutText.example
+fixtures/dangerjs/github.example
+fixtures/dangerjs/travis-ci.example
+fixtures/declarationWithoutAssignment.example
+fixtures/failing-jsons/failing_expects.json
+fixtures/failing-jsons/failing_jest_json.json
+fixtures/failing-jsons/failing_json_multiple.json
+fixtures/failing-jsons/failing_metaphysics.json
+fixtures/failing-jsons/monorepo_root_1.json
+fixtures/failing-jsons/monorepo_root_2.json
+fixtures/global_its.example
+fixtures/metaphysics/partner_show.example
+fixtures/nested_its.example
+fixtures/parser_tests.js
+jest
+jest.config.ci.js
+jest.config.js
+jest.config.types.js
+lerna.json
+package.json
+packages/babel-jest/.npmignore
+packages/babel-jest/README.md
+packages/babel-jest/package.json
+packages/babel-jest/src/__tests__/index.ts
+packages/babel-jest/src/index.ts
+packages/babel-jest/src/loadBabelConfig.ts
+packages/babel-jest/tsconfig.json
+packages/babel-plugin-jest-hoist/.npmignore
+packages/babel-plugin-jest-hoist/README.md
+packages/babel-plugin-jest-hoist/package.json
+packages/babel-plugin-jest-hoist/src/__tests__/__snapshots__/hoistPlugin.test.ts.snap
+packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts
+packages/babel-plugin-jest-hoist/src/index.ts
+packages/babel-plugin-jest-hoist/tsconfig.json
+packages/babel-preset-jest/.npmignore
+packages/babel-preset-jest/README.md
+packages/babel-preset-jest/index.js
+packages/babel-preset-jest/package.json
+packages/diff-sequences/.npmignore
+packages/diff-sequences/README.md
+packages/diff-sequences/package.json
+packages/diff-sequences/perf/example.md
+packages/diff-sequences/perf/index.js
+packages/diff-sequences/src/__tests__/__snapshots__/index.test.ts.snap
+packages/diff-sequences/src/__tests__/index.property.test.ts
+packages/diff-sequences/src/__tests__/index.test.ts
+packages/diff-sequences/src/index.ts
+packages/diff-sequences/tsconfig.json
+packages/expect/.npmignore
+packages/expect/README.md
+packages/expect/package.json
+packages/expect/src/__tests__/__arbitraries__/sharedSettings.ts
+packages/expect/src/__tests__/__snapshots__/assertionCounts.test.ts.snap
+packages/expect/src/__tests__/__snapshots__/extend.test.ts.snap
+packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap
+packages/expect/src/__tests__/__snapshots__/spyMatchers.test.ts.snap
+packages/expect/src/__tests__/__snapshots__/toThrowMatchers.test.ts.snap
+packages/expect/src/__tests__/assertionCounts.test.ts
+packages/expect/src/__tests__/asymmetricMatchers.test.ts
+packages/expect/src/__tests__/extend.test.ts
+packages/expect/src/__tests__/isError.test.ts
+packages/expect/src/__tests__/matchers-toContain.property.test.ts
+packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts
+packages/expect/src/__tests__/matchers-toEqual.property.test.ts
+packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts
+packages/expect/src/__tests__/matchers.test.js
+packages/expect/src/__tests__/spyMatchers.test.ts
+packages/expect/src/__tests__/stacktrace.test.ts
+packages/expect/src/__tests__/symbolInObjects.test.ts
+packages/expect/src/__tests__/toEqual-dom.test.ts
+packages/expect/src/__tests__/toThrowMatchers.test.ts
+packages/expect/src/__tests__/utils.test.ts
+packages/expect/src/asymmetricMatchers.ts
+packages/expect/src/extractExpectedAssertionsErrors.ts
+packages/expect/src/index.ts
+packages/expect/src/jasmineUtils.ts
+packages/expect/src/jestMatchersObject.ts
+packages/expect/src/matchers.ts
+packages/expect/src/print.ts
+packages/expect/src/spyMatchers.ts
+packages/expect/src/toThrowMatchers.ts
+packages/expect/src/types.ts
+packages/expect/src/utils.ts
+packages/expect/tsconfig.json
+packages/jest-changed-files/.npmignore
+packages/jest-changed-files/README.md
+packages/jest-changed-files/package.json
+packages/jest-changed-files/src/git.ts
+packages/jest-changed-files/src/hg.ts
+packages/jest-changed-files/src/index.ts
+packages/jest-changed-files/src/types.ts
+packages/jest-changed-files/tsconfig.json
+packages/jest-circus/.npmignore
+packages/jest-circus/README.md
+packages/jest-circus/package.json
+packages/jest-circus/runner.js
+packages/jest-circus/src/__mocks__/testEventHandler.ts
+packages/jest-circus/src/__mocks__/testUtils.ts
+packages/jest-circus/src/__tests__/__snapshots__/afterAll.test.ts.snap
+packages/jest-circus/src/__tests__/__snapshots__/baseTest.test.ts.snap
+packages/jest-circus/src/__tests__/__snapshots__/hooks.test.ts.snap
+packages/jest-circus/src/__tests__/afterAll.test.ts
+packages/jest-circus/src/__tests__/baseTest.test.ts
+packages/jest-circus/src/__tests__/circusItTestError.test.ts
+packages/jest-circus/src/__tests__/circusItTodoTestError.test.ts
+packages/jest-circus/src/__tests__/hooks.test.ts
+packages/jest-circus/src/__tests__/hooksError.test.ts
+packages/jest-circus/src/eventHandler.ts
+packages/jest-circus/src/formatNodeAssertErrors.ts
+packages/jest-circus/src/globalErrorHandlers.ts
+packages/jest-circus/src/index.ts
+packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapter.ts
+packages/jest-circus/src/legacy-code-todo-rewrite/jestAdapterInit.ts
+packages/jest-circus/src/legacy-code-todo-rewrite/jestExpect.ts
+packages/jest-circus/src/run.ts
+packages/jest-circus/src/state.ts
+packages/jest-circus/src/testCaseReportHandler.ts
+packages/jest-circus/src/types.ts
+packages/jest-circus/src/utils.ts
+packages/jest-circus/tsconfig.json
+packages/jest-cli/.npmignore
+packages/jest-cli/README.md
+packages/jest-cli/bin/jest.js
+packages/jest-cli/package.json
+packages/jest-cli/src/__tests__/cli/args.test.ts
+packages/jest-cli/src/cli/args.ts
+packages/jest-cli/src/cli/index.ts
+packages/jest-cli/src/index.ts
+packages/jest-cli/src/init/__tests__/__snapshots__/init.test.js.snap
+packages/jest-cli/src/init/__tests__/__snapshots__/modifyPackageJson.test.ts.snap
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-cjs/jest.config.cjs
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-cjs/package.json
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-js/jest.config.js
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-js/package.json
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-json/jest.config.json
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-json/package.json
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-mjs/jest.config.mjs
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-mjs/package.json
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-ts/jest.config.ts
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-file-ts/package.json
+packages/jest-cli/src/init/__tests__/fixtures/has-jest-config-in-package-json/package.json
+packages/jest-cli/src/init/__tests__/fixtures/no-package-json/index.js
+packages/jest-cli/src/init/__tests__/fixtures/only-package-json/package.json
+packages/jest-cli/src/init/__tests__/fixtures/test-generated-jest-config-ts/package.json
+packages/jest-cli/src/init/__tests__/fixtures/test-script-configured/package.json
+packages/jest-cli/src/init/__tests__/fixtures/type-module/package.json
+packages/jest-cli/src/init/__tests__/fixtures/typescript-in-dependencies/package.json
+packages/jest-cli/src/init/__tests__/fixtures/typescript-in-dev-dependencies/package.json
+packages/jest-cli/src/init/__tests__/init.test.js
+packages/jest-cli/src/init/__tests__/modifyPackageJson.test.ts
+packages/jest-cli/src/init/errors.ts
+packages/jest-cli/src/init/generateConfigFile.ts
+packages/jest-cli/src/init/index.ts
+packages/jest-cli/src/init/modifyPackageJson.ts
+packages/jest-cli/src/init/questions.ts
+packages/jest-cli/src/init/types.ts
+packages/jest-cli/tsconfig.json
+packages/jest-config/.npmignore
+packages/jest-config/package.json
+packages/jest-config/src/Defaults.ts
+packages/jest-config/src/Deprecated.ts
+packages/jest-config/src/Descriptions.ts
+packages/jest-config/src/ReporterValidationErrors.ts
+packages/jest-config/src/ValidConfig.ts
+packages/jest-config/src/__mocks__/fs.js
+packages/jest-config/src/__mocks__/os.js
+packages/jest-config/src/__mocks__/read-pkg.js
+packages/jest-config/src/__tests__/Defaults.test.ts
+packages/jest-config/src/__tests__/__snapshots__/normalize.test.js.snap
+packages/jest-config/src/__tests__/getMaxWorkers.test.ts
+packages/jest-config/src/__tests__/jest-preset.json
+packages/jest-config/src/__tests__/normalize.test.js
+packages/jest-config/src/__tests__/readConfig.test.ts
+packages/jest-config/src/__tests__/readConfigs.test.ts
+packages/jest-config/src/__tests__/resolveConfigPath.test.ts
+packages/jest-config/src/__tests__/setFromArgv.test.ts
+packages/jest-config/src/__tests__/validatePattern.test.ts
+packages/jest-config/src/color.ts
+packages/jest-config/src/constants.ts
+packages/jest-config/src/getCacheDirectory.ts
+packages/jest-config/src/getMaxWorkers.ts
+packages/jest-config/src/index.ts
+packages/jest-config/src/normalize.ts
+packages/jest-config/src/readConfigFileAndSetRootDir.ts
+packages/jest-config/src/resolveConfigPath.ts
+packages/jest-config/src/setFromArgv.ts
+packages/jest-config/src/utils.ts
+packages/jest-config/src/validatePattern.ts
+packages/jest-config/src/vendor/jsonlint.js
+packages/jest-config/tsconfig.json
+packages/jest-console/.npmignore
+packages/jest-console/package.json
+packages/jest-console/src/BufferedConsole.ts
+packages/jest-console/src/CustomConsole.ts
+packages/jest-console/src/NullConsole.ts
+packages/jest-console/src/__tests__/CustomConsole.test.ts
+packages/jest-console/src/__tests__/bufferedConsole.test.ts
+packages/jest-console/src/__tests__/getConsoleOutput.test.ts
+packages/jest-console/src/getConsoleOutput.ts
+packages/jest-console/src/index.ts
+packages/jest-console/src/types.ts
+packages/jest-console/tsconfig.json
+packages/jest-core/.npmignore
+packages/jest-core/README.md
+packages/jest-core/package.json
+packages/jest-core/src/FailedTestsCache.ts
+packages/jest-core/src/ReporterDispatcher.ts
+packages/jest-core/src/SearchSource.ts
+packages/jest-core/src/SnapshotInteractiveMode.ts
+packages/jest-core/src/TestNamePatternPrompt.ts
+packages/jest-core/src/TestPathPatternPrompt.ts
+packages/jest-core/src/TestScheduler.ts
+packages/jest-core/src/TestWatcher.ts
+packages/jest-core/src/__tests__/FailedTestsCache.test.js
+packages/jest-core/src/__tests__/SearchSource.test.ts
+packages/jest-core/src/__tests__/SnapshotInteractiveMode.test.js
+packages/jest-core/src/__tests__/TestScheduler.test.js
+packages/jest-core/src/__tests__/__fixtures__/watchPlugin.js
+packages/jest-core/src/__tests__/__fixtures__/watchPlugin2.js
+packages/jest-core/src/__tests__/__fixtures__/watchPluginThrows.js
+packages/jest-core/src/__tests__/__snapshots__/SnapshotInteractiveMode.test.js.snap
+packages/jest-core/src/__tests__/__snapshots__/getNoTestsFoundMessage.test.js.snap
+packages/jest-core/src/__tests__/__snapshots__/watch.test.js.snap
+packages/jest-core/src/__tests__/__snapshots__/watchFilenamePatternMode.test.js.snap
+packages/jest-core/src/__tests__/__snapshots__/watchTestNamePatternMode.test.js.snap
+packages/jest-core/src/__tests__/getNoTestsFoundMessage.test.js
+packages/jest-core/src/__tests__/globals.test.ts
+packages/jest-core/src/__tests__/runJest.test.js
+packages/jest-core/src/__tests__/testSchedulerHelper.test.js
+packages/jest-core/src/__tests__/test_root/.hiddenFolder/not-really-a-test.txt
+packages/jest-core/src/__tests__/test_root/__testtests__/do-not-match-me.txt
+packages/jest-core/src/__tests__/test_root/__testtests__/not-really-a-test.txt
+packages/jest-core/src/__tests__/test_root/__testtests__/test.foobar
+packages/jest-core/src/__tests__/test_root/__testtests__/test.js
+packages/jest-core/src/__tests__/test_root/__testtests__/test.jsx
+packages/jest-core/src/__tests__/test_root/module.foobar
+packages/jest-core/src/__tests__/test_root/module.jsx
+packages/jest-core/src/__tests__/test_root/noTests.js
+packages/jest-core/src/__tests__/test_root_with_(parentheses)/__testtests__/test.js
+packages/jest-core/src/__tests__/test_root_with_(parentheses)/module.jsx
+packages/jest-core/src/__tests__/watch.test.js
+packages/jest-core/src/__tests__/watchFileChanges.test.ts
+packages/jest-core/src/__tests__/watchFilenamePatternMode.test.js
+packages/jest-core/src/__tests__/watchTestNamePatternMode.test.js
+packages/jest-core/src/assets/jest_logo.png
+packages/jest-core/src/cli/index.ts
+packages/jest-core/src/collectHandles.ts
+packages/jest-core/src/getChangedFilesPromise.ts
+packages/jest-core/src/getConfigsOfProjectsToRun.ts
+packages/jest-core/src/getNoTestFound.ts
+packages/jest-core/src/getNoTestFoundFailed.ts
+packages/jest-core/src/getNoTestFoundPassWithNoTests.ts
+packages/jest-core/src/getNoTestFoundRelatedToChangedFiles.ts
+packages/jest-core/src/getNoTestFoundVerbose.ts
+packages/jest-core/src/getNoTestsFoundMessage.ts
+packages/jest-core/src/getProjectDisplayName.ts
+packages/jest-core/src/getProjectNamesMissingWarning.ts
+packages/jest-core/src/getSelectProjectsMessage.ts
+packages/jest-core/src/jest.ts
+packages/jest-core/src/lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap
+packages/jest-core/src/lib/__tests__/isValidPath.test.ts
+packages/jest-core/src/lib/__tests__/logDebugMessages.test.ts
+packages/jest-core/src/lib/activeFiltersMessage.ts
+packages/jest-core/src/lib/createContext.ts
+packages/jest-core/src/lib/handleDeprecationWarnings.ts
+packages/jest-core/src/lib/isValidPath.ts
+packages/jest-core/src/lib/logDebugMessages.ts
+packages/jest-core/src/lib/updateGlobalConfig.ts
+packages/jest-core/src/lib/watchPluginsHelpers.ts
+packages/jest-core/src/plugins/Quit.ts
+packages/jest-core/src/plugins/TestNamePattern.ts
+packages/jest-core/src/plugins/TestPathPattern.ts
+packages/jest-core/src/plugins/UpdateSnapshots.ts
+packages/jest-core/src/plugins/UpdateSnapshotsInteractive.ts
+packages/jest-core/src/pluralize.ts
+packages/jest-core/src/runGlobalHook.ts
+packages/jest-core/src/runJest.ts
+packages/jest-core/src/testSchedulerHelper.ts
+packages/jest-core/src/types.ts
+packages/jest-core/src/version.ts
+packages/jest-core/src/watch.ts
+packages/jest-core/tsconfig.json
+packages/jest-create-cache-key-function/.npmignore
+packages/jest-create-cache-key-function/package.json
+packages/jest-create-cache-key-function/src/__tests__/index.test.ts
+packages/jest-create-cache-key-function/src/index.ts
+packages/jest-create-cache-key-function/tsconfig.json
+packages/jest-diff/.npmignore
+packages/jest-diff/README.md
+packages/jest-diff/package.json
+packages/jest-diff/src/__tests__/__snapshots__/diff.test.ts.snap
+packages/jest-diff/src/__tests__/__snapshots__/getAlignedDiffs.test.ts.snap
+packages/jest-diff/src/__tests__/__snapshots__/joinAlignedDiffs.test.ts.snap
+packages/jest-diff/src/__tests__/diff.test.ts
+packages/jest-diff/src/__tests__/diffStringsRaw.test.ts
+packages/jest-diff/src/__tests__/getAlignedDiffs.test.ts
+packages/jest-diff/src/__tests__/joinAlignedDiffs.test.ts
+packages/jest-diff/src/cleanupSemantic.ts
+packages/jest-diff/src/constants.ts
+packages/jest-diff/src/diffLines.ts
+packages/jest-diff/src/diffStrings.ts
+packages/jest-diff/src/getAlignedDiffs.ts
+packages/jest-diff/src/index.ts
+packages/jest-diff/src/joinAlignedDiffs.ts
+packages/jest-diff/src/normalizeDiffOptions.ts
+packages/jest-diff/src/printDiffs.ts
+packages/jest-diff/src/types.ts
+packages/jest-diff/tsconfig.json
+packages/jest-docblock/.npmignore
+packages/jest-docblock/README.md
+packages/jest-docblock/package.json
+packages/jest-docblock/src/__tests__/index.test.ts
+packages/jest-docblock/src/index.ts
+packages/jest-docblock/tsconfig.json
+packages/jest-each/.npmignore
+packages/jest-each/README.md
+packages/jest-each/assets/default-demo.gif
+packages/jest-each/assets/describe-demo.gif
+packages/jest-each/assets/tagged-template-literal.gif
+packages/jest-each/assets/test-demo.gif
+packages/jest-each/package.json
+packages/jest-each/src/__tests__/__snapshots__/array.test.ts.snap
+packages/jest-each/src/__tests__/__snapshots__/index.test.ts.snap
+packages/jest-each/src/__tests__/__snapshots__/template.test.ts.snap
+packages/jest-each/src/__tests__/array.test.ts
+packages/jest-each/src/__tests__/index.test.ts
+packages/jest-each/src/__tests__/template.test.ts
+packages/jest-each/src/bind.ts
+packages/jest-each/src/index.ts
+packages/jest-each/src/table/array.ts
+packages/jest-each/src/table/template.ts
+packages/jest-each/src/validation.ts
+packages/jest-each/tsconfig.json
+packages/jest-environment-jsdom/.npmignore
+packages/jest-environment-jsdom/package.json
+packages/jest-environment-jsdom/src/__mocks__/index.ts
+packages/jest-environment-jsdom/src/__tests__/jsdom_environment.test.ts
+packages/jest-environment-jsdom/src/index.ts
+packages/jest-environment-jsdom/tsconfig.json
+packages/jest-environment-node/.npmignore
+packages/jest-environment-node/package.json
+packages/jest-environment-node/src/__tests__/node_environment.test.ts
+packages/jest-environment-node/src/index.ts
+packages/jest-environment-node/tsconfig.json
+packages/jest-environment/.npmignore
+packages/jest-environment/package.json
+packages/jest-environment/src/index.ts
+packages/jest-environment/tsconfig.json
+packages/jest-fake-timers/.npmignore
+packages/jest-fake-timers/package.json
+packages/jest-fake-timers/src/__tests__/__snapshots__/legacyFakeTimers.test.ts.snap
+packages/jest-fake-timers/src/__tests__/__snapshots__/modernFakeTimers.test.ts.snap
+packages/jest-fake-timers/src/__tests__/legacyFakeTimers.test.ts
+packages/jest-fake-timers/src/__tests__/modernFakeTimers.test.ts
+packages/jest-fake-timers/src/index.ts
+packages/jest-fake-timers/src/legacyFakeTimers.ts
+packages/jest-fake-timers/src/modernFakeTimers.ts
+packages/jest-fake-timers/tsconfig.json
+packages/jest-get-type/.npmignore
+packages/jest-get-type/package.json
+packages/jest-get-type/src/__tests__/getType.test.ts
+packages/jest-get-type/src/__tests__/isPrimitive.test.ts
+packages/jest-get-type/src/index.ts
+packages/jest-get-type/tsconfig.json
+packages/jest-globals/.npmignore
+packages/jest-globals/package.json
+packages/jest-globals/src/__tests__/index.ts
+packages/jest-globals/src/index.ts
+packages/jest-globals/tsconfig.json
+packages/jest-haste-map/.npmignore
+packages/jest-haste-map/package.json
+packages/jest-haste-map/src/HasteFS.ts
+packages/jest-haste-map/src/ModuleMap.ts
+packages/jest-haste-map/src/__tests__/__snapshots__/index.test.js.snap
+packages/jest-haste-map/src/__tests__/dependencyExtractor.js
+packages/jest-haste-map/src/__tests__/get_mock_name.test.js
+packages/jest-haste-map/src/__tests__/haste_impl.js
+packages/jest-haste-map/src/__tests__/includes_dotfiles.test.ts
+packages/jest-haste-map/src/__tests__/index.test.js
+packages/jest-haste-map/src/__tests__/test_dotfiles_root/.eslintrc.js
+packages/jest-haste-map/src/__tests__/test_dotfiles_root/index.js
+packages/jest-haste-map/src/__tests__/worker.test.js
+packages/jest-haste-map/src/blacklist.ts
+packages/jest-haste-map/src/constants.ts
+packages/jest-haste-map/src/crawlers/__tests__/node.test.js
+packages/jest-haste-map/src/crawlers/__tests__/watchman.test.js
+packages/jest-haste-map/src/crawlers/node.ts
+packages/jest-haste-map/src/crawlers/watchman.ts
+packages/jest-haste-map/src/getMockName.ts
+packages/jest-haste-map/src/index.ts
+packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js
+packages/jest-haste-map/src/lib/__tests__/fast_path.test.js
+packages/jest-haste-map/src/lib/__tests__/getPlatformExtension.test.js
+packages/jest-haste-map/src/lib/__tests__/isRegExpSupported.test.js
+packages/jest-haste-map/src/lib/__tests__/normalizePathSep.test.js
+packages/jest-haste-map/src/lib/dependencyExtractor.ts
+packages/jest-haste-map/src/lib/fast_path.ts
+packages/jest-haste-map/src/lib/getPlatformExtension.ts
+packages/jest-haste-map/src/lib/isRegExpSupported.ts
+packages/jest-haste-map/src/lib/normalizePathSep.ts
+packages/jest-haste-map/src/types.ts
+packages/jest-haste-map/src/watchers/FSEventsWatcher.ts
+packages/jest-haste-map/src/watchers/NodeWatcher.js
+packages/jest-haste-map/src/watchers/RecrawlWarning.js
+packages/jest-haste-map/src/watchers/WatchmanWatcher.js
+packages/jest-haste-map/src/watchers/common.js
+packages/jest-haste-map/src/worker.ts
+packages/jest-haste-map/tsconfig.json
+packages/jest-jasmine2/.npmignore
+packages/jest-jasmine2/package.json
+packages/jest-jasmine2/src/ExpectationFailed.ts
+packages/jest-jasmine2/src/PCancelable.ts
+packages/jest-jasmine2/src/__tests__/Suite.test.ts
+packages/jest-jasmine2/src/__tests__/__snapshots__/expectationResultFactory.test.ts.snap
+packages/jest-jasmine2/src/__tests__/concurrent.test.ts
+packages/jest-jasmine2/src/__tests__/expectationResultFactory.test.ts
+packages/jest-jasmine2/src/__tests__/hooksError.test.ts
+packages/jest-jasmine2/src/__tests__/itTestError.test.ts
+packages/jest-jasmine2/src/__tests__/itToTestAlias.test.ts
+packages/jest-jasmine2/src/__tests__/iterators.test.ts
+packages/jest-jasmine2/src/__tests__/pTimeout.test.ts
+packages/jest-jasmine2/src/__tests__/queueRunner.test.ts
+packages/jest-jasmine2/src/__tests__/reporter.test.ts
+packages/jest-jasmine2/src/__tests__/todoError.test.ts
+packages/jest-jasmine2/src/assertionErrorMessage.ts
+packages/jest-jasmine2/src/each.ts
+packages/jest-jasmine2/src/errorOnPrivate.ts
+packages/jest-jasmine2/src/expectationResultFactory.ts
+packages/jest-jasmine2/src/index.ts
+packages/jest-jasmine2/src/isError.ts
+packages/jest-jasmine2/src/jasmine/CallTracker.ts
+packages/jest-jasmine2/src/jasmine/Env.ts
+packages/jest-jasmine2/src/jasmine/JsApiReporter.ts
+packages/jest-jasmine2/src/jasmine/ReportDispatcher.ts
+packages/jest-jasmine2/src/jasmine/Spec.ts
+packages/jest-jasmine2/src/jasmine/SpyStrategy.ts
+packages/jest-jasmine2/src/jasmine/Suite.ts
+packages/jest-jasmine2/src/jasmine/Timer.ts
+packages/jest-jasmine2/src/jasmine/createSpy.ts
+packages/jest-jasmine2/src/jasmine/jasmineLight.ts
+packages/jest-jasmine2/src/jasmine/spyRegistry.ts
+packages/jest-jasmine2/src/jasmineAsyncInstall.ts
+packages/jest-jasmine2/src/jestExpect.ts
+packages/jest-jasmine2/src/pTimeout.ts
+packages/jest-jasmine2/src/queueRunner.ts
+packages/jest-jasmine2/src/reporter.ts
+packages/jest-jasmine2/src/setup_jest_globals.ts
+packages/jest-jasmine2/src/treeProcessor.ts
+packages/jest-jasmine2/src/types.ts
+packages/jest-jasmine2/tsconfig.json
+packages/jest-leak-detector/.npmignore
+packages/jest-leak-detector/README.md
+packages/jest-leak-detector/package.json
+packages/jest-leak-detector/src/__tests__/__snapshots__/index.test.ts.snap
+packages/jest-leak-detector/src/__tests__/index.test.ts
+packages/jest-leak-detector/src/index.ts
+packages/jest-leak-detector/tsconfig.json
+packages/jest-matcher-utils/.npmignore
+packages/jest-matcher-utils/package.json
+packages/jest-matcher-utils/src/Replaceable.ts
+packages/jest-matcher-utils/src/__tests__/Replaceable.test.ts
+packages/jest-matcher-utils/src/__tests__/__snapshots__/index.test.ts.snap
+packages/jest-matcher-utils/src/__tests__/__snapshots__/printDiffOrStringify.test.ts.snap
+packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts
+packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceableDom.test.ts
+packages/jest-matcher-utils/src/__tests__/index.test.ts
+packages/jest-matcher-utils/src/__tests__/printDiffOrStringify.test.ts
+packages/jest-matcher-utils/src/deepCyclicCopyReplaceable.ts
+packages/jest-matcher-utils/src/index.ts
+packages/jest-matcher-utils/tsconfig.json
+packages/jest-message-util/.npmignore
+packages/jest-message-util/package.json
+packages/jest-message-util/src/__tests__/__snapshots__/messages.test.ts.snap
+packages/jest-message-util/src/__tests__/messages.test.ts
+packages/jest-message-util/src/index.ts
+packages/jest-message-util/src/types.ts
+packages/jest-message-util/tsconfig.json
+packages/jest-mock/.npmignore
+packages/jest-mock/README.md
+packages/jest-mock/package.json
+packages/jest-mock/src/__tests__/index.test.ts
+packages/jest-mock/src/index.ts
+packages/jest-mock/tsconfig.json
+packages/jest-phabricator/.npmignore
+packages/jest-phabricator/README.md
+packages/jest-phabricator/package.json
+packages/jest-phabricator/src/index.ts
+packages/jest-phabricator/tsconfig.json
+packages/jest-regex-util/.npmignore
+packages/jest-regex-util/package.json
+packages/jest-regex-util/src/__tests__/index.test.ts
+packages/jest-regex-util/src/index.ts
+packages/jest-regex-util/tsconfig.json
+packages/jest-repl/.npmignore
+packages/jest-repl/bin/jest-repl.js
+packages/jest-repl/bin/jest-runtime-cli.js
+packages/jest-repl/package.json
+packages/jest-repl/src/__tests__/jest_repl.test.js
+packages/jest-repl/src/__tests__/runtime_cli.test.js
+packages/jest-repl/src/__tests__/test_root/logging.js
+packages/jest-repl/src/__tests__/test_root/throwing.js
+packages/jest-repl/src/cli/args.ts
+packages/jest-repl/src/cli/index.ts
+packages/jest-repl/src/cli/repl.ts
+packages/jest-repl/src/cli/runtime-cli.ts
+packages/jest-repl/src/cli/version.ts
+packages/jest-repl/tsconfig.json
+packages/jest-reporters/.npmignore
+packages/jest-reporters/package.json
+packages/jest-reporters/src/BaseReporter.ts
+packages/jest-reporters/src/CoverageReporter.ts
+packages/jest-reporters/src/CoverageWorker.ts
+packages/jest-reporters/src/DefaultReporter.ts
+packages/jest-reporters/src/NotifyReporter.ts
+packages/jest-reporters/src/Status.ts
+packages/jest-reporters/src/SummaryReporter.ts
+packages/jest-reporters/src/VerboseReporter.ts
+packages/jest-reporters/src/__tests__/CoverageReporter.test.js
+packages/jest-reporters/src/__tests__/CoverageWorker.test.js
+packages/jest-reporters/src/__tests__/DefaultReporter.test.js
+packages/jest-reporters/src/__tests__/NotifyReporter.test.ts
+packages/jest-reporters/src/__tests__/SummaryReporter.test.js
+packages/jest-reporters/src/__tests__/VerboseReporter.test.js
+packages/jest-reporters/src/__tests__/__snapshots__/NotifyReporter.test.ts.snap
+packages/jest-reporters/src/__tests__/__snapshots__/SummaryReporter.test.js.snap
+packages/jest-reporters/src/__tests__/__snapshots__/generateEmptyCoverage.test.js.snap
+packages/jest-reporters/src/__tests__/__snapshots__/getSnapshotStatus.test.js.snap
+packages/jest-reporters/src/__tests__/__snapshots__/getSnapshotSummary.test.js.snap
+packages/jest-reporters/src/__tests__/__snapshots__/utils.test.ts.snap
+packages/jest-reporters/src/__tests__/generateEmptyCoverage.test.js
+packages/jest-reporters/src/__tests__/getResultHeader.test.js
+packages/jest-reporters/src/__tests__/getSnapshotStatus.test.js
+packages/jest-reporters/src/__tests__/getSnapshotSummary.test.js
+packages/jest-reporters/src/__tests__/getWatermarks.test.ts
+packages/jest-reporters/src/__tests__/utils.test.ts
+packages/jest-reporters/src/generateEmptyCoverage.ts
+packages/jest-reporters/src/getResultHeader.ts
+packages/jest-reporters/src/getSnapshotStatus.ts
+packages/jest-reporters/src/getSnapshotSummary.ts
+packages/jest-reporters/src/getWatermarks.ts
+packages/jest-reporters/src/index.ts
+packages/jest-reporters/src/types.ts
+packages/jest-reporters/src/utils.ts
+packages/jest-reporters/tsconfig.json
+packages/jest-resolve-dependencies/.npmignore
+packages/jest-resolve-dependencies/__mocks__/fake-node-module.js
+packages/jest-resolve-dependencies/package.json
+packages/jest-resolve-dependencies/src/__tests__/__fixtures__/__snapshots__/related.test.js.snap
+packages/jest-resolve-dependencies/src/__tests__/__fixtures__/file.js
+packages/jest-resolve-dependencies/src/__tests__/__fixtures__/file.test.js
+packages/jest-resolve-dependencies/src/__tests__/__fixtures__/hasMocked/__mocks__/file.js
+packages/jest-resolve-dependencies/src/__tests__/__fixtures__/hasMocked/file.js
+packages/jest-resolve-dependencies/src/__tests__/__fixtures__/hasMocked/file.test.js
+packages/jest-resolve-dependencies/src/__tests__/__fixtures__/node_modules/@myorg/pkg/index.js
+packages/jest-resolve-dependencies/src/__tests__/__fixtures__/node_modules/@myorg/pkg/package.json
+packages/jest-resolve-dependencies/src/__tests__/__fixtures__/related.test.js
+packages/jest-resolve-dependencies/src/__tests__/__fixtures__/scoped.js
+packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts
+packages/jest-resolve-dependencies/src/index.ts
+packages/jest-resolve-dependencies/tsconfig.json
+packages/jest-resolve/.npmignore
+packages/jest-resolve/package.json
+packages/jest-resolve/src/ModuleNotFoundError.ts
+packages/jest-resolve/src/__mocks__/bar/node_modules/bar/index.js
+packages/jest-resolve/src/__mocks__/bar/node_modules/foo
+packages/jest-resolve/src/__mocks__/foo.js
+packages/jest-resolve/src/__mocks__/foo/foo.js
+packages/jest-resolve/src/__mocks__/foo/index.js
+packages/jest-resolve/src/__mocks__/foo/node_modules/dep/index.js
+packages/jest-resolve/src/__mocks__/foo/node_modules/foo/index.js
+packages/jest-resolve/src/__mocks__/mockJsDependency.js
+packages/jest-resolve/src/__mocks__/mockJsDependency.native.js
+packages/jest-resolve/src/__mocks__/mockJsxDependency.jsx
+packages/jest-resolve/src/__mocks__/mockJsxDependency.native.jsx
+packages/jest-resolve/src/__mocks__/userResolver.d.ts
+packages/jest-resolve/src/__mocks__/userResolver.js
+packages/jest-resolve/src/__tests__/isBuiltinModule.test.ts
+packages/jest-resolve/src/__tests__/resolve.test.ts
+packages/jest-resolve/src/defaultResolver.ts
+packages/jest-resolve/src/index.ts
+packages/jest-resolve/src/isBuiltinModule.ts
+packages/jest-resolve/src/nodeModulesPaths.ts
+packages/jest-resolve/src/shouldLoadAsEsm.ts
+packages/jest-resolve/src/types.ts
+packages/jest-resolve/tsconfig.json
+packages/jest-runner/.npmignore
+packages/jest-runner/package.json
+packages/jest-runner/src/__tests__/testRunner.test.ts
+packages/jest-runner/src/index.ts
+packages/jest-runner/src/runTest.ts
+packages/jest-runner/src/testWorker.ts
+packages/jest-runner/src/types.ts
+packages/jest-runner/tsconfig.json
+packages/jest-runtime/.npmignore
+packages/jest-runtime/package.json
+packages/jest-runtime/src/__mocks__/createRuntime.js
+packages/jest-runtime/src/__tests__/NODE_PATH_dir/regular_module_in_node_path.js
+packages/jest-runtime/src/__tests__/Runtime-sourceMaps.test.js
+packages/jest-runtime/src/__tests__/Runtime-statics.test.js
+packages/jest-runtime/src/__tests__/__snapshots__/runtime_require_module_no_ext.test.js.snap
+packages/jest-runtime/src/__tests__/__snapshots__/runtime_wrap.js.snap
+packages/jest-runtime/src/__tests__/defaultResolver.js
+packages/jest-runtime/src/__tests__/instrumentation.test.ts
+packages/jest-runtime/src/__tests__/module_dir/module_directory_file.js
+packages/jest-runtime/src/__tests__/module_dir/to_be_instrumented.js
+packages/jest-runtime/src/__tests__/runtime_create_mock_from_module.test.js
+packages/jest-runtime/src/__tests__/runtime_environment.test.js
+packages/jest-runtime/src/__tests__/runtime_internal_module.test.js
+packages/jest-runtime/src/__tests__/runtime_jest_fn.js
+packages/jest-runtime/src/__tests__/runtime_jest_spy_on.test.js
+packages/jest-runtime/src/__tests__/runtime_mock.test.js
+packages/jest-runtime/src/__tests__/runtime_module_directories.test.js
+packages/jest-runtime/src/__tests__/runtime_node_path.test.js
+packages/jest-runtime/src/__tests__/runtime_require_actual.test.js
+packages/jest-runtime/src/__tests__/runtime_require_cache.test.js
+packages/jest-runtime/src/__tests__/runtime_require_mock.test.js
+packages/jest-runtime/src/__tests__/runtime_require_module.test.js
+packages/jest-runtime/src/__tests__/runtime_require_module_no_ext.test.js
+packages/jest-runtime/src/__tests__/runtime_require_module_or_mock.test.js
+packages/jest-runtime/src/__tests__/runtime_require_module_or_mock_transitive_deps.test.js
+packages/jest-runtime/src/__tests__/runtime_require_resolve.test.ts
+packages/jest-runtime/src/__tests__/runtime_wrap.js
+packages/jest-runtime/src/__tests__/test_root/JSONFile.json
+packages/jest-runtime/src/__tests__/test_root/ManuallyMocked.js
+packages/jest-runtime/src/__tests__/test_root/ModuleWithSideEffects.js
+packages/jest-runtime/src/__tests__/test_root/ModuleWithState.js
+packages/jest-runtime/src/__tests__/test_root/MyDirectoryModule/index.js
+packages/jest-runtime/src/__tests__/test_root/NativeModule.node
+packages/jest-runtime/src/__tests__/test_root/OnlyRequiredFromMock.js
+packages/jest-runtime/src/__tests__/test_root/RegularModule.js
+packages/jest-runtime/src/__tests__/test_root/RegularModuleWithWrongExt.txt
+packages/jest-runtime/src/__tests__/test_root/RelativeImageStub.js
+packages/jest-runtime/src/__tests__/test_root/RequireRegularModule.js
+packages/jest-runtime/src/__tests__/test_root/TestModuleNameMapperResolution.jsx
+packages/jest-runtime/src/__tests__/test_root/__mocks__/ExclusivelyManualMock.js
+packages/jest-runtime/src/__tests__/test_root/__mocks__/ManuallyMocked.js
+packages/jest-runtime/src/__tests__/test_root/__mocks__/mocked-node-module.js
+packages/jest-runtime/src/__tests__/test_root/__mocks__/nested1/nested2/nested3.js
+packages/jest-runtime/src/__tests__/test_root/create_require_module.js
+packages/jest-runtime/src/__tests__/test_root/dep_on_mapped_module.js
+packages/jest-runtime/src/__tests__/test_root/global_image_stub.js
+packages/jest-runtime/src/__tests__/test_root/haste-modules/Foo.react.js
+packages/jest-runtime/src/__tests__/test_root/haste-modules/FooContainer.react.js
+packages/jest-runtime/src/__tests__/test_root/haste-modules/FooRenderUtil.js
+packages/jest-runtime/src/__tests__/test_root/haste-package/core/module.js
+packages/jest-runtime/src/__tests__/test_root/haste-package/package.json
+packages/jest-runtime/src/__tests__/test_root/inner_parent_module.js
+packages/jest-runtime/src/__tests__/test_root/internal-module.js
+packages/jest-runtime/src/__tests__/test_root/internal-root.js
+packages/jest-runtime/src/__tests__/test_root/internal-root.json
+packages/jest-runtime/src/__tests__/test_root/mapped_dir/moduleInMapped.js
+packages/jest-runtime/src/__tests__/test_root/mapped_module_createMockFromModule.js
+packages/jest-runtime/src/__tests__/test_root/mapped_module_test.js
+packages/jest-runtime/src/__tests__/test_root/module_dir/module_dir_module.js
+packages/jest-runtime/src/__tests__/test_root/module_dir/my-module/core.js
+packages/jest-runtime/src/__tests__/test_root/module_dir/my-module/package.json
+packages/jest-runtime/src/__tests__/test_root/modules_with_main/export_main.js
+packages/jest-runtime/src/__tests__/test_root/modules_with_main/re_export_main.js
+packages/jest-runtime/src/__tests__/test_root/nested1/nested2/nested3.js
+packages/jest-runtime/src/__tests__/test_root/node_modules/jest-resolve-test/browser.js
+packages/jest-runtime/src/__tests__/test_root/node_modules/jest-resolve-test/node.js
+packages/jest-runtime/src/__tests__/test_root/node_modules/jest-resolve-test/package.json
+packages/jest-runtime/src/__tests__/test_root/node_modules/mocked-node-module/index.js
+packages/jest-runtime/src/__tests__/test_root/node_modules/module-needing-parent/index.js
+packages/jest-runtime/src/__tests__/test_root/node_modules/module-needing-parent/node_modules/parent-module/index.js
+packages/jest-runtime/src/__tests__/test_root/node_modules/not-a-haste-package/core.js
+packages/jest-runtime/src/__tests__/test_root/node_modules/not-a-haste-package/package.json
+packages/jest-runtime/src/__tests__/test_root/node_modules/npm3-main-dep/index.js
+packages/jest-runtime/src/__tests__/test_root/node_modules/npm3-transitive-dep/index.js
+packages/jest-runtime/src/__tests__/test_root/node_modules/npm3-transitive-dep/internal-code.js
+packages/jest-runtime/src/__tests__/test_root/node_modules/parent-module/index.js
+packages/jest-runtime/src/__tests__/test_root/platform/Platform.android.js
+packages/jest-runtime/src/__tests__/test_root/platform/Platform.ios.js
+packages/jest-runtime/src/__tests__/test_root/platform/Platform.js
+packages/jest-runtime/src/__tests__/test_root/platform/Platform.native.js
+packages/jest-runtime/src/__tests__/test_root/resolve_and_require_outside.js
+packages/jest-runtime/src/__tests__/test_root/resolve_mapped.js
+packages/jest-runtime/src/__tests__/test_root/resolve_self.js
+packages/jest-runtime/src/__tests__/test_root/root.js
+packages/jest-runtime/src/__tests__/test_root/sourcemaps/out/throwing-mapped-fn.js
+packages/jest-runtime/src/__tests__/test_root/sourcemaps/out/throwing-mapped-fn.js.map
+packages/jest-runtime/src/__tests__/test_root/sourcemaps/throwing-mapped-fn.js
+packages/jest-runtime/src/__tests__/test_root/subdir2/module_dir/module_dir_module.js
+packages/jest-runtime/src/__tests__/test_root/subdir2/module_dir/my-module/core.js
+packages/jest-runtime/src/__tests__/test_root/test_json_preprocessor.js
+packages/jest-runtime/src/__tests__/test_root/test_preprocessor.js
+packages/jest-runtime/src/__tests__/test_root/throwing.js
+packages/jest-runtime/src/__tests__/test_root/throwing_fn.js
+packages/jest-runtime/src/__tests__/test_root/utf8_with_bom.js
+packages/jest-runtime/src/__tests__/test_root/utf8_with_bom.json
+packages/jest-runtime/src/__tests__/test_root_with_dup_mocks/subdir1/__mocks__/my_module.js
+packages/jest-runtime/src/__tests__/test_root_with_dup_mocks/subdir1/my_module.js
+packages/jest-runtime/src/__tests__/test_root_with_dup_mocks/subdir2/__mocks__/my_module.js
+packages/jest-runtime/src/__tests__/test_root_with_dup_mocks/subdir2/module_dir/module_dir_module.js
+packages/jest-runtime/src/__tests__/test_root_with_dup_mocks/subdir2/my_module.js
+packages/jest-runtime/src/helpers.ts
+packages/jest-runtime/src/index.ts
+packages/jest-runtime/src/types.ts
+packages/jest-runtime/tsconfig.json
+packages/jest-serializer/.npmignore
+packages/jest-serializer/README.md
+packages/jest-serializer/package.json
+packages/jest-serializer/src/__tests__/index.test.ts
+packages/jest-serializer/src/index.ts
+packages/jest-serializer/tsconfig.json
+packages/jest-serializer/v8.d.ts
+packages/jest-snapshot/.npmignore
+packages/jest-snapshot/package.json
+packages/jest-snapshot/src/InlineSnapshots.ts
+packages/jest-snapshot/src/SnapshotResolver.ts
+packages/jest-snapshot/src/State.ts
+packages/jest-snapshot/src/__mocks__/prettier.js
+packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts
+packages/jest-snapshot/src/__tests__/SnapshotResolver.test.ts
+packages/jest-snapshot/src/__tests__/__snapshots__/SnapshotResolver.test.ts.snap
+packages/jest-snapshot/src/__tests__/__snapshots__/mockSerializer.test.ts.snap
+packages/jest-snapshot/src/__tests__/__snapshots__/printSnapshot.test.ts.snap
+packages/jest-snapshot/src/__tests__/dedentLines.test.ts
+packages/jest-snapshot/src/__tests__/fixtures/customSnapshotResolver-inconsistent-fns.js
+packages/jest-snapshot/src/__tests__/fixtures/customSnapshotResolver-missing-resolveSnapshotPath.js
+packages/jest-snapshot/src/__tests__/fixtures/customSnapshotResolver-missing-resolveTestPath.js
+packages/jest-snapshot/src/__tests__/fixtures/customSnapshotResolver-missing-test-path-for-consistency-check.js
+packages/jest-snapshot/src/__tests__/fixtures/customSnapshotResolver.js
+packages/jest-snapshot/src/__tests__/matcher.test.ts
+packages/jest-snapshot/src/__tests__/mockSerializer.test.ts
+packages/jest-snapshot/src/__tests__/plugins.test.ts
+packages/jest-snapshot/src/__tests__/plugins/bar.js
+packages/jest-snapshot/src/__tests__/plugins/foo.js
+packages/jest-snapshot/src/__tests__/printSnapshot.test.ts
+packages/jest-snapshot/src/__tests__/throwMatcher.test.ts
+packages/jest-snapshot/src/__tests__/utils.test.ts
+packages/jest-snapshot/src/colors.ts
+packages/jest-snapshot/src/dedentLines.ts
+packages/jest-snapshot/src/index.ts
+packages/jest-snapshot/src/mockSerializer.ts
+packages/jest-snapshot/src/plugins.ts
+packages/jest-snapshot/src/printSnapshot.ts
+packages/jest-snapshot/src/types.ts
+packages/jest-snapshot/src/utils.ts
+packages/jest-snapshot/tsconfig.json
+packages/jest-source-map/.npmignore
+packages/jest-source-map/package.json
+packages/jest-source-map/src/__tests__/getCallsite.test.ts
+packages/jest-source-map/src/getCallsite.ts
+packages/jest-source-map/src/index.ts
+packages/jest-source-map/src/types.ts
+packages/jest-source-map/tsconfig.json
+packages/jest-test-result/.npmignore
+packages/jest-test-result/package.json
+packages/jest-test-result/src/__tests__/formatTestResults.test.ts
+packages/jest-test-result/src/formatTestResults.ts
+packages/jest-test-result/src/helpers.ts
+packages/jest-test-result/src/index.ts
+packages/jest-test-result/src/types.ts
+packages/jest-test-result/tsconfig.json
+packages/jest-test-sequencer/.npmignore
+packages/jest-test-sequencer/package.json
+packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js
+packages/jest-test-sequencer/src/index.ts
+packages/jest-test-sequencer/tsconfig.json
+packages/jest-transform/.npmignore
+packages/jest-transform/package.json
+packages/jest-transform/src/ScriptTransformer.ts
+packages/jest-transform/src/__tests__/ScriptTransformer.test.ts
+packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap
+packages/jest-transform/src/__tests__/shouldInstrument.test.ts
+packages/jest-transform/src/enhanceUnexpectedTokenMessage.ts
+packages/jest-transform/src/index.ts
+packages/jest-transform/src/shouldInstrument.ts
+packages/jest-transform/src/types.ts
+packages/jest-transform/tsconfig.json
+packages/jest-types/.npmignore
+packages/jest-types/package.json
+packages/jest-types/src/Circus.ts
+packages/jest-types/src/Config.ts
+packages/jest-types/src/Global.ts
+packages/jest-types/src/TestResult.ts
+packages/jest-types/src/Transform.ts
+packages/jest-types/src/index.ts
+packages/jest-types/tsconfig.json
+packages/jest-util/.npmignore
+packages/jest-util/package.json
+packages/jest-util/src/ErrorWithStack.ts
+packages/jest-util/src/__tests__/createProcessObject.test.ts
+packages/jest-util/src/__tests__/deepCyclicCopy.test.ts
+packages/jest-util/src/__tests__/errorWithStack.test.ts
+packages/jest-util/src/__tests__/formatTime.test.ts
+packages/jest-util/src/__tests__/globsToMatcher.test.ts
+packages/jest-util/src/__tests__/installCommonGlobals.test.ts
+packages/jest-util/src/__tests__/isInteractive.test.ts
+packages/jest-util/src/__tests__/isPromise.test.ts
+packages/jest-util/src/clearLine.ts
+packages/jest-util/src/convertDescriptorToString.ts
+packages/jest-util/src/createDirectory.ts
+packages/jest-util/src/createProcessObject.ts
+packages/jest-util/src/deepCyclicCopy.ts
+packages/jest-util/src/formatTime.ts
+packages/jest-util/src/globsToMatcher.ts
+packages/jest-util/src/index.ts
+packages/jest-util/src/installCommonGlobals.ts
+packages/jest-util/src/interopRequireDefault.ts
+packages/jest-util/src/isInteractive.ts
+packages/jest-util/src/isPromise.ts
+packages/jest-util/src/pluralize.ts
+packages/jest-util/src/preRunMessage.ts
+packages/jest-util/src/replacePathSepForGlob.ts
+packages/jest-util/src/setGlobal.ts
+packages/jest-util/src/specialChars.ts
+packages/jest-util/src/testPathPatternToRegExp.ts
+packages/jest-util/src/tryRealpath.ts
+packages/jest-util/tsconfig.json
+packages/jest-validate/.npmignore
+packages/jest-validate/README.md
+packages/jest-validate/package.json
+packages/jest-validate/src/__tests__/__snapshots__/validate.test.ts.snap
+packages/jest-validate/src/__tests__/__snapshots__/validateCLIOptions.test.js.snap
+packages/jest-validate/src/__tests__/fixtures/jestConfig.ts
+packages/jest-validate/src/__tests__/validate.test.ts
+packages/jest-validate/src/__tests__/validateCLIOptions.test.js
+packages/jest-validate/src/condition.ts
+packages/jest-validate/src/defaultConfig.ts
+packages/jest-validate/src/deprecated.ts
+packages/jest-validate/src/errors.ts
+packages/jest-validate/src/exampleConfig.ts
+packages/jest-validate/src/index.ts
+packages/jest-validate/src/types.ts
+packages/jest-validate/src/utils.ts
+packages/jest-validate/src/validate.ts
+packages/jest-validate/src/validateCLIOptions.ts
+packages/jest-validate/src/warnings.ts
+packages/jest-validate/tsconfig.json
+packages/jest-watcher/.npmignore
+packages/jest-watcher/package.json
+packages/jest-watcher/src/BaseWatchPlugin.ts
+packages/jest-watcher/src/JestHooks.ts
+packages/jest-watcher/src/PatternPrompt.ts
+packages/jest-watcher/src/constants.ts
+packages/jest-watcher/src/index.ts
+packages/jest-watcher/src/lib/Prompt.ts
+packages/jest-watcher/src/lib/__tests__/__snapshots__/formatTestNameByPattern.test.ts.snap
+packages/jest-watcher/src/lib/__tests__/formatTestNameByPattern.test.ts
+packages/jest-watcher/src/lib/__tests__/prompt.test.ts
+packages/jest-watcher/src/lib/__tests__/scroll.test.ts
+packages/jest-watcher/src/lib/colorize.ts
+packages/jest-watcher/src/lib/formatTestNameByPattern.ts
+packages/jest-watcher/src/lib/patternModeHelpers.ts
+packages/jest-watcher/src/lib/scroll.ts
+packages/jest-watcher/src/types.ts
+packages/jest-watcher/tsconfig.json
+packages/jest-worker/.npmignore
+packages/jest-worker/README.md
+packages/jest-worker/package.json
+packages/jest-worker/src/Farm.ts
+packages/jest-worker/src/FifoQueue.ts
+packages/jest-worker/src/PriorityQueue.ts
+packages/jest-worker/src/WorkerPool.ts
+packages/jest-worker/src/__performance_tests__/test.js
+packages/jest-worker/src/__performance_tests__/workers/jest_worker.js
+packages/jest-worker/src/__performance_tests__/workers/pi.js
+packages/jest-worker/src/__performance_tests__/workers/worker_farm.js
+packages/jest-worker/src/__tests__/Farm.test.js
+packages/jest-worker/src/__tests__/FifoQueue.test.js
+packages/jest-worker/src/__tests__/PriorityQueue.test.js
+packages/jest-worker/src/__tests__/WorkerPool.test.js
+packages/jest-worker/src/__tests__/index.test.js
+packages/jest-worker/src/__tests__/process-integration.test.js
+packages/jest-worker/src/__tests__/thread-integration.test.js
+packages/jest-worker/src/base/BaseWorkerPool.ts
+packages/jest-worker/src/base/__tests__/BaseWorkerPool.test.js
+packages/jest-worker/src/index.ts
+packages/jest-worker/src/types.ts
+packages/jest-worker/src/workers/ChildProcessWorker.ts
+packages/jest-worker/src/workers/NodeThreadsWorker.ts
+packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.js
+packages/jest-worker/src/workers/__tests__/NodeThreadsWorker.test.js
+packages/jest-worker/src/workers/__tests__/processChild.test.js
+packages/jest-worker/src/workers/__tests__/threadChild.test.js
+packages/jest-worker/src/workers/messageParent.ts
+packages/jest-worker/src/workers/processChild.ts
+packages/jest-worker/src/workers/threadChild.ts
+packages/jest-worker/tsconfig.json
+packages/jest/.npmignore
+packages/jest/README.md
+packages/jest/bin/jest.js
+packages/jest/package.json
+packages/jest/src/jest.ts
+packages/jest/tsconfig.json
+packages/pretty-format/.npmignore
+packages/pretty-format/README.md
+packages/pretty-format/package.json
+packages/pretty-format/perf/test.js
+packages/pretty-format/perf/world.geo.json
+packages/pretty-format/src/__tests__/AsymmetricMatcher.test.ts
+packages/pretty-format/src/__tests__/ConvertAnsi.test.ts
+packages/pretty-format/src/__tests__/DOMCollection.test.ts
+packages/pretty-format/src/__tests__/DOMElement.test.ts
+packages/pretty-format/src/__tests__/Immutable.test.ts
+packages/pretty-format/src/__tests__/ReactElement.test.ts
+packages/pretty-format/src/__tests__/__snapshots__/react.test.tsx.snap
+packages/pretty-format/src/__tests__/prettyFormat.test.ts
+packages/pretty-format/src/__tests__/react.test.tsx
+packages/pretty-format/src/__tests__/setPrettyPrint.ts
+packages/pretty-format/src/collections.ts
+packages/pretty-format/src/index.ts
+packages/pretty-format/src/plugins/AsymmetricMatcher.ts
+packages/pretty-format/src/plugins/ConvertAnsi.ts
+packages/pretty-format/src/plugins/DOMCollection.ts
+packages/pretty-format/src/plugins/DOMElement.ts
+packages/pretty-format/src/plugins/Immutable.ts
+packages/pretty-format/src/plugins/ReactElement.ts
+packages/pretty-format/src/plugins/ReactTestComponent.ts
+packages/pretty-format/src/plugins/lib/escapeHTML.ts
+packages/pretty-format/src/plugins/lib/markup.ts
+packages/pretty-format/src/types.ts
+packages/pretty-format/tsconfig.json
+packages/test-utils/README.md
+packages/test-utils/package.json
+packages/test-utils/src/ConditionalTest.ts
+packages/test-utils/src/alignedAnsiStyleSerializer.ts
+packages/test-utils/src/config.ts
+packages/test-utils/src/index.ts
+packages/test-utils/tsconfig.json
+patches/fbjs-scripts.patch
+patches/react-native.patch
+scripts/babel-plugin-jest-native-globals.js
+scripts/babel-plugin-jest-replace-ts-require-assignment.js
+scripts/babel-plugin-jest-require-outside-vm.js
+scripts/build.js
+scripts/buildTs.js
+scripts/buildUtils.js
+scripts/checkCopyrightHeaders.js
+scripts/cleanE2e.js
+scripts/mapCoverage.js
+scripts/remove-prettier-dep.js
+scripts/verifyOldTs.js
+scripts/watch.js
+test-types/empty.d.ts
+test-types/top-level-config.test.ts
+test-types/top-level-globals.test.ts
+test-types/top-level-jest-namespace.test.ts
+testSetupFile.js
+tsconfig.json
+website/.vscode/settings.json
+website/README.md
+website/blog/2016-03-11-javascript-unit-testing-performance.md
+website/blog/2016-04-12-jest-11.md
+website/blog/2016-06-22-jest-13.md
+website/blog/2016-07-27-jest-14.md
+website/blog/2016-09-01-jest-15.md
+website/blog/2016-10-03-jest-16.md
+website/blog/2016-12-15-2016-in-jest.md
+website/blog/2017-01-30-a-great-developer-experience.md
+website/blog/2017-02-21-jest-19-immersive-watch-mode-test-platform-improvements.md
+website/blog/2017-05-06-jest-20-delightful-testing-multi-project-runner.md
+website/blog/2017-12-18-jest-22.md
+website/blog/2018-05-29-jest-23-blazing-fast-delightful-testing.md
+website/blog/2018-06-27-supporting-jest-open-source.md
+website/blog/2019-01-25-jest-24-refreshing-polished-typescript-friendly.md
+website/blog/2020-01-21-jest-25.md
+website/blog/2020-05-05-jest-26.md
+website/core/Footer.js
+website/fetchSupporters.js
+website/languages.js
+website/package.json
+website/pages/en/help.js
+website/pages/en/index.js
+website/pages/en/versions.js
+website/pages/en/videos.js
+website/sidebars.json
+website/siteConfig.js
+website/static/css/code-block-buttons.css
+website/static/css/custom.css
+website/static/css/hljs-jest.css
+website/static/css/jest.css
+website/static/img/blog/15-console.png
+website/static/img/blog/15-failure1.png
+website/static/img/blog/15-failure2.png
+website/static/img/blog/15-watch.gif
+website/static/img/blog/16-reporter.gif
+website/static/img/blog/16-snapshots.png
+website/static/img/blog/16-watch.gif
+website/static/img/blog/19-asymmetric-matchers.png
+website/static/img/blog/19-cli-error.png
+website/static/img/blog/19-skipped-tests.png
+website/static/img/blog/19-snapshot-version.png
+website/static/img/blog/19-validate.png
+website/static/img/blog/20-multi-runner.gif
+website/static/img/blog/20-testing-apis.png
+website/static/img/blog/22-community.png
+website/static/img/blog/22-failure-21.png
+website/static/img/blog/22-failure-22.png
+website/static/img/blog/23-asymmetric-matchers.png
+website/static/img/blog/23-async-matchers.png
+website/static/img/blog/23-hanging-after.png
+website/static/img/blog/23-hanging-before.png
+website/static/img/blog/23-interactive.gif
+website/static/img/blog/23-jest-each.png
+website/static/img/blog/23-new-matchers.png
+website/static/img/blog/23-snapshot-matchers.png
+website/static/img/blog/23-typeahead.gif
+website/static/img/blog/24-assertion-error.png
+website/static/img/blog/24-different-types.png
+website/static/img/blog/24-mock-function.png
+website/static/img/blog/24-todo.png
+website/static/img/blog/25-snapshot-change-lines.png
+website/static/img/blog/25-snapshot-change-substrings.png
+website/static/img/blog/25-snapshot-insert-lines.png
+website/static/img/blog/Scheduling1.png
+website/static/img/blog/Scheduling2.png
+website/static/img/blog/collective.png
+website/static/img/blog/snapshot.png
+website/static/img/circus.png
+website/static/img/content/camera-with-flash.png
+website/static/img/content/failedSnapshotTest.png
+website/static/img/content/feature-coverage.png
+website/static/img/content/feature-fast.png
+website/static/img/content/feature-mocking.png
+website/static/img/content/female-technologist.png
+website/static/img/content/interactiveSnapshot.png
+website/static/img/content/interactiveSnapshotDone.png
+website/static/img/content/interactiveSnapshotUpdate.gif
+website/static/img/content/joker.png
+website/static/img/content/matchers/toBe.png
+website/static/img/content/matchers/toBeCloseTo.png
+website/static/img/content/matchers/toEqual.png
+website/static/img/content/matchers/toHaveProperty.png
+website/static/img/content/matchers/toMatchSnapshot.png
+website/static/img/content/matchers/toStrictEqual.png
+website/static/img/content/matchers/toThrowError.png
+website/static/img/content/runner.png
+website/static/img/favicon.png
+website/static/img/favicon/android-chrome-192x192.png
+website/static/img/favicon/android-chrome-512x512.png
+website/static/img/favicon/apple-touch-icon.png
+website/static/img/favicon/browserconfig.xml
+website/static/img/favicon/favicon-16x16.png
+website/static/img/favicon/favicon-32x32.png
+website/static/img/favicon/favicon.ico
+website/static/img/favicon/manifest.json
+website/static/img/favicon/mstile-144x144.png
+website/static/img/favicon/mstile-150x150.png
+website/static/img/favicon/mstile-310x150.png
+website/static/img/favicon/mstile-310x310.png
+website/static/img/favicon/mstile-70x70.png
+website/static/img/favicon/safari-pinned-tab.svg
+website/static/img/jest-badge.svg
+website/static/img/jest-card-fail.svg
+website/static/img/jest-card-pass.svg
+website/static/img/jest-card-run.svg
+website/static/img/jest-outline.svg
+website/static/img/jest-readme-headline.png
+website/static/img/jest.png
+website/static/img/jest.svg
+website/static/img/language.svg
+website/static/img/logos/airbnb.png
+website/static/img/logos/facebook.png
+website/static/img/logos/instagram.png
+website/static/img/logos/nyt.png
+website/static/img/logos/spotify.png
+website/static/img/logos/twitter.png
+website/static/img/opengraph.png
+website/static/img/oss_logo.png
+website/static/img/running-card-background.png
+website/static/js/code-block-buttons.js
+website/static/landing.js
+website/translators.txt
+website/versioned_docs/version-22.x/Architecture.md
+website/versioned_docs/version-22.x/BypassingModuleMocks.md
+website/versioned_docs/version-22.x/CLI.md
+website/versioned_docs/version-22.x/Configuration.md
+website/versioned_docs/version-22.x/DynamoDB.md
+website/versioned_docs/version-22.x/EnvironmentVariables.md
+website/versioned_docs/version-22.x/Es6ClassMocks.md
+website/versioned_docs/version-22.x/ExpectAPI.md
+website/versioned_docs/version-22.x/GettingStarted.md
+website/versioned_docs/version-22.x/GlobalAPI.md
+website/versioned_docs/version-22.x/JestCommunity.md
+website/versioned_docs/version-22.x/JestObjectAPI.md
+website/versioned_docs/version-22.x/JestPlatform.md
+website/versioned_docs/version-22.x/ManualMocks.md
+website/versioned_docs/version-22.x/MigrationGuide.md
+website/versioned_docs/version-22.x/MockFunctionAPI.md
+website/versioned_docs/version-22.x/MockFunctions.md
+website/versioned_docs/version-22.x/MongoDB.md
+website/versioned_docs/version-22.x/MoreResources.md
+website/versioned_docs/version-22.x/Puppeteer.md
+website/versioned_docs/version-22.x/SetupAndTeardown.md
+website/versioned_docs/version-22.x/SnapshotTesting.md
+website/versioned_docs/version-22.x/TestingAsyncCode.md
+website/versioned_docs/version-22.x/TestingFrameworks.md
+website/versioned_docs/version-22.x/TimerMocks.md
+website/versioned_docs/version-22.x/Troubleshooting.md
+website/versioned_docs/version-22.x/TutorialAsync.md
+website/versioned_docs/version-22.x/TutorialReact.md
+website/versioned_docs/version-22.x/TutorialReactNative.md
+website/versioned_docs/version-22.x/TutorialjQuery.md
+website/versioned_docs/version-22.x/UsingMatchers.md
+website/versioned_docs/version-22.x/Webpack.md
+website/versioned_docs/version-23.x/CLI.md
+website/versioned_docs/version-23.x/Configuration.md
+website/versioned_docs/version-23.x/ExpectAPI.md
+website/versioned_docs/version-23.x/GettingStarted.md
+website/versioned_docs/version-23.x/GlobalAPI.md
+website/versioned_docs/version-23.x/JestObjectAPI.md
+website/versioned_docs/version-23.x/MockFunctionAPI.md
+website/versioned_docs/version-23.x/MockFunctions.md
+website/versioned_docs/version-23.x/Puppeteer.md
+website/versioned_docs/version-23.x/SnapshotTesting.md
+website/versioned_docs/version-23.x/Troubleshooting.md
+website/versioned_docs/version-23.x/TutorialReact.md
+website/versioned_docs/version-23.x/WatchPlugins.md
+website/versioned_docs/version-24.x/CLI.md
+website/versioned_docs/version-24.x/Configuration.md
+website/versioned_docs/version-24.x/Es6ClassMocks.md
+website/versioned_docs/version-24.x/GettingStarted.md
+website/versioned_docs/version-24.x/GlobalAPI.md
+website/versioned_docs/version-24.x/JestObjectAPI.md
+website/versioned_docs/version-24.x/MockFunctionAPI.md
+website/versioned_docs/version-24.x/TutorialAsync.md
+website/versioned_docs/version-24.x/TutorialReact.md
+website/versioned_docs/version-24.x/WatchPlugins.md
+website/versioned_docs/version-24.x/Webpack.md
+website/versioned_docs/version-25.x/CLI.md
+website/versioned_docs/version-25.x/Configuration.md
+website/versioned_docs/version-25.x/ExpectAPI.md
+website/versioned_docs/version-25.x/GlobalAPI.md
+website/versioned_docs/version-25.x/JestObjectAPI.md
+website/versioned_docs/version-25.x/Troubleshooting.md
+website/versioned_docs/version-25.x/TutorialReactNative.md
+website/versioned_docs/version-26.0/CLI.md
+website/versioned_docs/version-26.0/Configuration.md
+website/versioned_docs/version-26.0/ECMAScriptModules.md
+website/versioned_docs/version-26.0/JestObjectAPI.md
+website/versioned_docs/version-26.0/JestPlatform.md
+website/versioned_docs/version-26.0/ManualMocks.md
+website/versioned_docs/version-26.2/CLI.md
+website/versioned_docs/version-26.2/Configuration.md
+website/versioned_docs/version-26.4/Configuration.md
+website/versioned_docs/version-26.4/GlobalAPI.md
+website/versioned_docs/version-26.5/CLI.md
+website/versioned_docs/version-26.5/Configuration.md
+website/versioned_docs/version-26.6/Configuration.md
+website/versioned_sidebars/version-22.x-sidebars.json
+website/versioned_sidebars/version-23.x-sidebars.json
+website/versioned_sidebars/version-24.x-sidebars.json
+website/versioned_sidebars/version-26.0-sidebars.json
+website/versions.json
+yarn.lock
diff --git a/__tests__/fixtures/external/karma/karma-react-component-test-results.xml b/__tests__/fixtures/external/karma/karma-react-component-test-results.xml
new file mode 100644
index 0000000..cdaa87f
--- /dev/null
+++ b/__tests__/fixtures/external/karma/karma-react-component-test-results.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/__tests__/fixtures/external/karma/karma-test-results.xml b/__tests__/fixtures/external/karma/karma-test-results.xml
new file mode 100644
index 0000000..f35d4a5
--- /dev/null
+++ b/__tests__/fixtures/external/karma/karma-test-results.xml
@@ -0,0 +1,9357 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Error: abort: empty revision range
+ at makeError (/home/dorny/dorny/jest/node_modules/execa/lib/error.js:59:11)
+ at handlePromise (/home/dorny/dorny/jest/node_modules/execa/index.js:114:26)
+ at runMicrotasks (<anonymous>)
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)
+ at Object.findChangedFiles (/home/dorny/dorny/jest/packages/jest-changed-files/build/hg.js:99:16)
+ at async Promise.all (index 0)
+ at getChangedFilesForRoots (/home/dorny/dorny/jest/packages/jest-changed-files/build/index.js:57:5)
+ at Object.<anonymous> (/home/dorny/dorny/jest/e2e/__tests__/jestChangedFiles.test.ts:418:28)
+ at _callCircusTest (/home/dorny/dorny/jest/packages/jest-circus/build/run.js:218:5)
+ at _runTest (/home/dorny/dorny/jest/packages/jest-circus/build/run.js:155:3)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Error: expect(received).toMatch(expected)
+
+Expected pattern: /PASS __tests__(\/|\\)file2.test.js/
+Received string: "·
+ ● Test suite failed to run·
+ abort: empty revision range
+"
+ at Object.toMatch (/home/dorny/dorny/jest/e2e/__tests__/onlyChanged.test.ts:360:18)
+ at Promise.then.completed (/home/dorny/dorny/jest/packages/jest-circus/build/utils.js:307:28)
+ at new Promise (<anonymous>)
+ at callAsyncCircusFn (/home/dorny/dorny/jest/packages/jest-circus/build/utils.js:229:10)
+ at _callCircusTest (/home/dorny/dorny/jest/packages/jest-circus/build/run.js:218:40)
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)
+ at _runTest (/home/dorny/dorny/jest/packages/jest-circus/build/run.js:155:3)
+ at _runTestsForDescribeBlock (/home/dorny/dorny/jest/packages/jest-circus/build/run.js:66:9)
+ at run (/home/dorny/dorny/jest/packages/jest-circus/build/run.js:25:3)
+ at runAndTransformResultsToJestFormat (/home/dorny/dorny/jest/packages/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:163:21)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/__tests__/fixtures/jest-junit.xml b/__tests__/fixtures/jest-junit.xml
index 94513d7..a22b83f 100644
--- a/__tests__/fixtures/jest-junit.xml
+++ b/__tests__/fixtures/jest-junit.xml
@@ -58,4 +58,4 @@ Received: false
-
\ No newline at end of file
+
diff --git a/__tests__/fixtures/karma-junit-eslint.xml b/__tests__/fixtures/karma-junit-eslint.xml
new file mode 100644
index 0000000..ba134d5
--- /dev/null
+++ b/__tests__/fixtures/karma-junit-eslint.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/__tests__/fixtures/karma-junit.xml b/__tests__/fixtures/karma-junit.xml
new file mode 100644
index 0000000..d34e4cc
--- /dev/null
+++ b/__tests__/fixtures/karma-junit.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+ Error: expect(received).toBeTruthy()
+
+Received: false
+ at Object.<anonymous> (C:\Users\Michal\Workspace\dorny\test-check\reports\jest\__tests__\main.test.js:10:21)
+ at Object.asyncJestTest (C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\jasmineAsyncInstall.js:106:37)
+ at C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\queueRunner.js:45:12
+ at new Promise (<anonymous>)
+ at mapper (C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\queueRunner.js:28:19)
+ at C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\queueRunner.js:75:41
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)
+
+
+ Error: Some error
+ at Object.throwError (C:\Users\Michal\Workspace\dorny\test-check\reports\jest\lib\main.js:2:9)
+ at Object.<anonymous> (C:\Users\Michal\Workspace\dorny\test-check\reports\jest\__tests__\main.test.js:14:11)
+ at Object.asyncJestTest (C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\jasmineAsyncInstall.js:106:37)
+ at C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\queueRunner.js:45:12
+ at new Promise (<anonymous>)
+ at mapper (C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\queueRunner.js:28:19)
+ at C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\queueRunner.js:75:41
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)
+
+
+ Error: Some error
+ at Object.<anonymous> (C:\Users\Michal\Workspace\dorny\test-check\reports\jest\__tests__\main.test.js:21:11)
+ at Object.asyncJestTest (C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\jasmineAsyncInstall.js:106:37)
+ at C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\queueRunner.js:45:12
+ at new Promise (<anonymous>)
+ at mapper (C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\queueRunner.js:28:19)
+ at C:\Users\Michal\Workspace\dorny\test-check\reports\jest\node_modules\jest-jasmine2\build\queueRunner.js:75:41
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)
+
+
+
diff --git a/__tests__/karma-junit.test.ts b/__tests__/karma-junit.test.ts
new file mode 100644
index 0000000..723eca5
--- /dev/null
+++ b/__tests__/karma-junit.test.ts
@@ -0,0 +1,349 @@
+import * as fs from 'fs'
+import * as path from 'path'
+
+import {KarmaJunitParser} from '../src/parsers/karma-junit/karma-junit-parser'
+import {ParseOptions} from '../src/test-parser'
+import {DEFAULT_OPTIONS, getReport} from '../src/report/get-report'
+import {normalizeFilePath} from '../src/utils/path-utils'
+
+describe('karma-junit tests', () => {
+ it('produces empty test run result when there are no test cases in the testsuites element', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'empty', 'karma-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ expect(result.tests).toBe(0)
+ expect(result.result).toBe('success')
+ })
+
+ it('produces empty test run result when there are no test cases in a nested testsuite element', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'empty', 'karma-junit-empty-testsuite.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ expect(result.tests).toBe(0)
+ expect(result.result).toBe('success')
+ })
+
+ it('report from ./reports/karma test results matches snapshot', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit.xml')
+ const outputPath = path.join(__dirname, '__outputs__', 'karma-junit.md')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: ['__tests__/main.test.js', '__tests__/second.test.js', 'lib/main.js']
+ //workDir: 'C:/Users/Michal/Workspace/dorny/test-check/reports/karma/'
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ expect(result).toMatchSnapshot()
+
+ const report = getReport([result])
+ fs.mkdirSync(path.dirname(outputPath), {recursive: true})
+ fs.writeFileSync(outputPath, report)
+ })
+
+ it('report from facebook/karma test results matches snapshot', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'external', 'karma', 'karma-test-results.xml')
+ const trackedFilesPath = path.join(__dirname, 'fixtures', 'external', 'karma', 'files.txt')
+ const outputPath = path.join(__dirname, '__outputs__', 'karma-test-results.md')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const trackedFiles = fs.readFileSync(trackedFilesPath, {encoding: 'utf8'}).split(/\n\r?/g)
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles
+ //workDir: '/home/dorny/dorny/karma/'
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ expect(result).toMatchSnapshot()
+
+ const report = getReport([result])
+ fs.mkdirSync(path.dirname(outputPath), {recursive: true})
+ fs.writeFileSync(outputPath, report)
+ })
+
+ it('report from #235 testing react components named ', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'external', 'karma', 'karma-react-component-test-results.xml')
+ const trackedFilesPath = path.join(__dirname, 'fixtures', 'external', 'karma', 'files.txt')
+ const outputPath = path.join(__dirname, '__outputs__', 'karma-react-component-test-results.md')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const trackedFiles = fs.readFileSync(trackedFilesPath, {encoding: 'utf8'}).split(/\n\r?/g)
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles
+ //workDir: '/home/dorny/dorny/karma/'
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ expect(result).toMatchSnapshot()
+
+ const report = getReport([result])
+ fs.mkdirSync(path.dirname(outputPath), {recursive: true})
+ fs.writeFileSync(outputPath, report)
+ })
+
+ it('parsing ESLint report without timing information works - PR #134', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit-eslint.xml')
+ const outputPath = path.join(__dirname, '__outputs__', 'karma-junit-eslint.md')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: ['test.js']
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ expect(result).toMatchSnapshot()
+
+ const report = getReport([result])
+ fs.mkdirSync(path.dirname(outputPath), {recursive: true})
+ fs.writeFileSync(outputPath, report)
+ })
+
+ it('parsing junit report with message succeeds', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'junit-with-message.xml')
+ const outputPath = path.join(__dirname, '__outputs__', 'junit-with-message.md')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: ['test.js']
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ expect(result).toMatchSnapshot()
+
+ const report = getReport([result])
+ fs.mkdirSync(path.dirname(outputPath), {recursive: true})
+ fs.writeFileSync(outputPath, report)
+ })
+
+ it('report does not include a title by default', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result])
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it.each([
+ ['empty string', ''],
+ ['space', ' '],
+ ['tab', '\t'],
+ ['newline', '\n']
+ ])('report does not include a title when configured value is %s', async (_, reportTitle) => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle
+ })
+ // Report should have the badge as the first line
+ expect(report).toMatch(/^!\[Tests failed]/)
+ })
+
+ it('report includes a custom report title', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ reportTitle: 'My Custom Title'
+ })
+ // Report should have the title as the first line
+ expect(report).toMatch(/^# My Custom Title\n/)
+ })
+
+ it('report can be collapsed when configured', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ collapsed: 'always'
+ })
+ // Report should include collapsible details
+ expect(report).toContain('Expand for details
')
+ expect(report).toContain(' ')
+ })
+
+ it('report is not collapsed when configured to never', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ collapsed: 'never'
+ })
+ // Report should not include collapsible details
+ expect(report).not.toContain('Expand for details
')
+ expect(report).not.toContain(' ')
+ })
+
+ it('report auto-collapses when all tests pass', async () => {
+ // Test with a fixture that has all passing tests (no failures)
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit-eslint.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+
+ // Verify this fixture has no failures
+ expect(result.failed).toBe(0)
+
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ collapsed: 'auto'
+ })
+
+ // Should collapse when all tests pass
+ expect(report).toContain('Expand for details
')
+ expect(report).toContain(' ')
+ })
+
+ it('report does not auto-collapse when tests fail', async () => {
+ // Test with a fixture that has failing tests
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+
+ // Verify this fixture has failures
+ expect(result.failed).toBeGreaterThan(0)
+
+ const report = getReport([result], {
+ ...DEFAULT_OPTIONS,
+ collapsed: 'auto'
+ })
+
+ // Should not collapse when there are failures
+ expect(report).not.toContain('Expand for details
')
+ expect(report).not.toContain(' ')
+ })
+
+ it('report includes the short summary', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const shortSummary = '1 passed, 4 failed and 1 skipped'
+ const report = getReport([result], DEFAULT_OPTIONS, shortSummary)
+ // Report should have the title as the first line
+ expect(report).toMatch(/^## 1 passed, 4 failed and 1 skipped\n/)
+ })
+
+ it('report includes a custom report title and short summary', async () => {
+ const fixturePath = path.join(__dirname, 'fixtures', 'karma-junit.xml')
+ const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
+ const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
+
+ const opts: ParseOptions = {
+ parseErrors: true,
+ trackedFiles: []
+ }
+
+ const parser = new KarmaJunitParser(opts)
+ const result = await parser.parse(filePath, fileContent)
+ const shortSummary = '1 passed, 4 failed and 1 skipped'
+ const report = getReport(
+ [result],
+ {
+ ...DEFAULT_OPTIONS,
+ reportTitle: 'My Custom Title'
+ },
+ shortSummary
+ )
+ // Report should have the title as the first line
+ expect(report).toMatch(/^# My Custom Title\n## 1 passed, 4 failed and 1 skipped\n/)
+ })
+})
diff --git a/src/main.ts b/src/main.ts
index e76992a..e85c618 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -22,6 +22,7 @@ import {RspecJsonParser} from './parsers/rspec-json/rspec-json-parser'
import {SwiftXunitParser} from './parsers/swift-xunit/swift-xunit-parser'
import {normalizeDirPath, normalizeFilePath} from './utils/path-utils'
import {getCheckRunContext} from './utils/github-utils'
+import {KarmaJunitParser} from './parsers/karma-junit/karma-junit-parser'
async function main(): Promise {
try {
@@ -269,6 +270,9 @@ class TestReporter {
return new JavaJunitParser(options)
case 'jest-junit':
return new JestJunitParser(options)
+ case 'karma-junit':
+ return new KarmaJunitParser(options)
+
case 'mocha-json':
return new MochaJsonParser(options)
case 'python-xunit':
diff --git a/src/parsers/karma-junit/karma-junit-parser.ts b/src/parsers/karma-junit/karma-junit-parser.ts
new file mode 100644
index 0000000..c468655
--- /dev/null
+++ b/src/parsers/karma-junit/karma-junit-parser.ts
@@ -0,0 +1,125 @@
+import {ParseOptions, TestParser} from '../../test-parser'
+import {parseStringPromise} from 'xml2js'
+
+import {KarmaReport, TestCase, TestSuite} from './karma-junit-types'
+import {getExceptionSource} from '../../utils/node-utils'
+import {getBasePath, normalizeFilePath} from '../../utils/path-utils'
+
+import {
+ TestExecutionResult,
+ TestRunResult,
+ TestSuiteResult,
+ TestGroupResult,
+ TestCaseResult,
+ TestCaseError
+} from '../../test-results'
+
+export class KarmaJunitParser implements TestParser {
+ assumedWorkDir: string | undefined
+
+ constructor(readonly options: ParseOptions) {}
+
+ async parse(path: string, content: string): Promise {
+ const ju = await this.getJunitReport(path, content)
+ return this.getTestRunResult(path, ju)
+ }
+
+ private async getJunitReport(path: string, content: string): Promise {
+ try {
+ return (await parseStringPromise(content)) as KarmaReport
+ } catch (e) {
+ throw new Error(`Invalid XML at ${path}\n\n${e}`)
+ }
+ }
+
+ private getTestRunResult(path: string, karma: KarmaReport): TestRunResult {
+ const suites =
+ karma.testsuite === undefined
+ ? []
+ : [karma.testsuite].map(ts => {
+ const name = this.escapeCharacters(ts.$.name.trim())
+ const time = parseFloat(ts.$.time) * 1000
+ const sr = new TestSuiteResult(name, this.getGroups(ts), time)
+ return sr
+ })
+
+ const time = karma.testsuite?.$ && parseFloat(karma.testsuite.$.time) * 1000
+ return new TestRunResult(path, suites, time)
+ }
+
+ protected getGroups(suite: TestSuite): TestGroupResult[] {
+ if (!suite.testcase) {
+ return []
+ }
+
+ const groups: {describe: string; tests: TestCase[]}[] = []
+ for (const tc of suite.testcase) {
+ let grp = groups.find(g => g.describe === tc.$.classname)
+ if (grp === undefined) {
+ grp = {describe: tc.$.classname, tests: []}
+ groups.push(grp)
+ }
+ grp.tests.push(tc)
+ }
+
+ return groups.map(grp => {
+ const tests = grp.tests.map(tc => {
+ const name = tc.$.name.trim()
+ const result = this.getTestCaseResult(tc)
+ const time = parseFloat(tc.$.time) * 1000
+ const error = this.getTestCaseError(tc)
+ return new TestCaseResult(name, result, time, error)
+ })
+ return new TestGroupResult(grp.describe, tests)
+ })
+ }
+
+ private getTestCaseResult(test: TestCase): TestExecutionResult {
+ if (test.failure) return 'failed'
+ if (test.skipped) return 'skipped'
+ return 'success'
+ }
+
+ private getTestCaseError(tc: TestCase): TestCaseError | undefined {
+ if (!this.options.parseErrors || !tc.failure) {
+ return undefined
+ }
+
+ const details = typeof tc.failure[0] === 'string' ? tc.failure[0] : tc.failure[0]['_']
+ let path
+ let line
+
+ const src = getExceptionSource(details, this.options.trackedFiles, file => this.getRelativePath(file))
+ if (src) {
+ path = src.path
+ line = src.line
+ }
+
+ return {
+ path,
+ line,
+ details
+ }
+ }
+
+ private getRelativePath(path: string): string {
+ path = normalizeFilePath(path)
+ const workDir = this.getWorkDir(path)
+ if (workDir !== undefined && path.startsWith(workDir)) {
+ path = path.substr(workDir.length)
+ }
+ return path
+ }
+
+ private getWorkDir(path: string): string | undefined {
+ return (
+ this.options.workDir ??
+ this.assumedWorkDir ??
+ (this.assumedWorkDir = getBasePath(path, this.options.trackedFiles))
+ )
+ }
+
+ protected escapeCharacters(s: string): string {
+ return s.replace(/([<>])/g, '\\$1')
+ }
+}
diff --git a/src/parsers/karma-junit/karma-junit-types.ts b/src/parsers/karma-junit/karma-junit-types.ts
new file mode 100644
index 0000000..e4877a2
--- /dev/null
+++ b/src/parsers/karma-junit/karma-junit-types.ts
@@ -0,0 +1,34 @@
+export interface KarmaReport {
+ testsuite: TestSuite
+}
+
+export interface TestSuites {
+ $: {
+ time: string
+ }
+ testsuite?: TestSuite[]
+}
+
+export interface TestSuite {
+ $: {
+ name: string
+ tests: string
+ errors: string
+ failures: string
+ skipped: string
+ time: string
+ timestamp?: Date
+ }
+ testcase?: TestCase[]
+}
+
+export interface TestCase {
+ $: {
+ classname: string
+ file?: string
+ name: string
+ time: string
+ }
+ failure?: string[]
+ skipped?: string[]
+}