Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ts-jest doesn't respect outDir and rootDir when using project references #1698

Closed
martaver opened this issue May 31, 2020 · 21 comments
Closed

Comments

@martaver
Copy link

🐛 Bug Report

In a monorepo setup, that uses ts project references, it is possible to get ts-jest to compile child project refs so that tests in the parent project run in jest. This is evident in the repro repository here: https://github.com/Martaver/ts-jest-issue-805-demo which, when you clone and run yarn test navigates my-app's dependency on my-library successfully and compiles and runs the tests.

In this example, index.ts is in the root directory of each project reference and they use the default main entry in package.json, which is index.js.

Most repositories though, keep code under /src, and one of the features of project references is the ability to map a javascript main entry point in package.json back to the originating typescript entry. It can do this through outDir and rootDir.

However, when moving all code to /src and adding ourDir and rootDir configurations to tsconfig.json and setting the corresponding main in package.json of each project reference, the path resolution fails and the following error is revealed:

Cannot find module '@mfellner/my-library' from '../my-app/src/main.ts'

Unless I'm misconfiguring something, it appears ts-jest isn't honouring tsc's project resolution behaviour.

Note that tsc -b works fine (executed in packages/my-app for instance).

To Reproduce

Steps to reproduce the behavior:

  1. Clone https://github.com/Martaver/ts-jest-issue-805-demo/
  2. Switch to branch: repro-ts-jest-outDir-rootDir
  3. Run yarn test... you will notice that my-app fails because it can't load my-library.

Expected behavior

ts-jest to successfully load the my-library module from the project reference, as it does when index.ts is in the root of each project.

Link to repo (highly encouraged)

https://github.com/Martaver/ts-jest-issue-805-demo/
branches:

  • repro-ts-jest-outDir-rootDir (demonstrates error)
  • master (demonstrates working project ref test, in root of project reference)

Debug log:

N/A

envinfo

System:
    OS: macOS 10.14.6 (18G4032)

Npm packages:
    jest: 26.0.1
    ts-jest: 26.1.0
    typescript: 3.9.3
@martaver martaver added Bug Report Needs Repo Need a minimium repository to reproduce the problem Needs Triage labels May 31, 2020
@martaver
Copy link
Author

Appears related to #1343 in the interest of getting monorepos working nicely.

Also appears related to #766 where many difficulties with project references are discussed.

@ahnpnl
Copy link
Collaborator

ahnpnl commented May 31, 2020

also because of microsoft/TypeScript#37239 is not yet in TypeScript 3.9 so for now loading tsconfig with projectReferences most likely not working. Because ts-jest uses a TypeScript API to find config and parse config so we highly depend on microsoft/TypeScript#37239 to be in TypeScript to be able to have the same behavior as tsc -b

@martaver
Copy link
Author

martaver commented May 31, 2020

The difference is quite specifically when the code sits in a non-default rootDir. Comparing the master branch to repro-ts-jest-outDir-rootDir will demonstrate.

I just tried with typescript@next and still get the error... is microsoft/TypeScript#37239 available in any build that's been published?

No joy with typescript@dev (3.9.4) either... :(

@ahnpnl
Copy link
Collaborator

ahnpnl commented May 31, 2020

hmm I have no idea about that microsoft/TypeScript#37239 in which build :(

@martaver
Copy link
Author

martaver commented May 31, 2020

In the mean time, a workaround is to use jest's moduleNameMapper.

E.g. in each individual project's jest.config.js:

moduleNameMapper: {
    "@mfellner/(.*)": "<rootDir>/../$1/src/index.ts"
  },

@ahnpnl it's worth noting that I tried dev and next builds of typescript, but the same problem persisted. The issue is merged, so if it is included in either of those then the problem still isn't fixed by 37239 and you should chase the typescript team about it. I left them a note about it. Just so this is on your radar!

@ahnpnl
Copy link
Collaborator

ahnpnl commented May 31, 2020

Btw would you please try to create the debug log with typescript@next or dev ? To create the debug log, the instruction is in the issue template.

From debug log, it will be possible to check which path of tsconfig was loaded and what is the final config.

@martaver
Copy link
Author

Sure, I tried that but I'm not getting a ts-jest.log in my cwd... I'm doing yarn test with the following script:

"test": "TS_JEST_LOG=ts-jest.log && jest"

scratches head somewhat confused

@ahnpnl
Copy link
Collaborator

ahnpnl commented May 31, 2020

I think you need to do: export TS_JEST_LOG=ts-jest.log . For me I need to do that to make it work with my Mac 😅

@martaver
Copy link
Author

Ah! Yes... me mac good.

@martaver
Copy link
Author

For typescript@dev:

{"context":{"allowJs":false,"logLevel":20,"namespace":"jest-preset","package":"ts-jest","version":"26.1.0"},"message":"creating jest presets not handling JavaScript files","sequence":1,"time":"2020-05-31T19:39:42.894Z"}
{"context":{"logLevel":20,"namespace":"Importer","package":"ts-jest","version":"26.1.0"},"message":"creating Importer singleton","sequence":2,"time":"2020-05-31T19:39:44.827Z"}
{"context":{"allowJs":false,"logLevel":20,"namespace":"jest-preset","package":"ts-jest","version":"26.1.0"},"message":"creating jest presets not handling JavaScript files","sequence":3,"time":"2020-05-31T19:39:44.836Z"}
{"context":{"actualVersion":"26.0.1","expectedVersion":">=26 <27","logLevel":20,"namespace":"versions","package":"ts-jest","version":"26.1.0"},"message":"checking version of jest: OK","sequence":4,"time":"2020-05-31T19:39:44.839Z"}
{"context":{"baseOptions":{},"logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformerId":1,"version":"26.1.0"},"message":"created new transformer","sequence":5,"time":"2020-05-31T19:39:44.840Z"}
{"context":{"fileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.test.ts","logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformOptions":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-app"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-app","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"instrument":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","supportsDynamicImport":false,"supportsStaticESM":false},"transformerId":1,"version":"26.1.0"},"message":"computing cache key for /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.test.ts","sequence":6,"time":"2020-05-31T19:39:44.840Z"}
{"context":{"logLevel":30,"namespace":"jest-transformer","package":"ts-jest","transformerId":1,"version":"26.1.0"},"message":"no matching config-set found, creating a new one","sequence":7,"time":"2020-05-31T19:39:44.841Z"}
{"context":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-app"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-app","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"logLevel":20,"namespace":"backports","package":"ts-jest","transformerId":1,"version":"26.1.0"},"message":"backporting config","sequence":8,"time":"2020-05-31T19:39:44.841Z"}
{"context":{"jestConfig":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-app"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-app","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"version":"26.1.0"},"message":"normalized jest config","sequence":9,"time":"2020-05-31T19:39:44.841Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"tsJestConfig":{"compiler":"typescript","diagnostics":{"ignoreCodes":[6059,18002,18003],"pretty":true,"throws":true},"isolatedModules":true,"packageJson":{"kind":"file"},"transformers":[],"tsConfig":{"kind":"file"}},"version":"26.1.0"},"message":"normalized ts-jest config","sequence":10,"time":"2020-05-31T19:39:44.842Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"version":"26.1.0"},"message":"babel is disabled","sequence":11,"time":"2020-05-31T19:39:44.845Z"}
{"context":{"logLevel":20,"namespace":"Importer","package":"ts-jest","requireResult":{"exists":true,"given":"typescript","path":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/typescript/lib/typescript.js"},"version":"26.1.0"},"message":"loaded module typescript","sequence":12,"time":"2020-05-31T19:39:44.846Z"}
{"context":{"logLevel":20,"namespace":"Importer","package":"ts-jest","version":"26.1.0"},"message":"patching typescript","sequence":13,"time":"2020-05-31T19:39:44.846Z"}
{"context":{"actualVersion":"3.9.4","expectedVersion":">=3.8 <4","logLevel":20,"namespace":"versions","package":"ts-jest","version":"26.1.0"},"message":"checking version of typescript: OK","sequence":14,"time":"2020-05-31T19:39:44.847Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"tsConfigFileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/tsconfig.json","version":"26.1.0"},"message":"readTsConfig(): reading /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/tsconfig.json","sequence":15,"time":"2020-05-31T19:39:44.847Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"tsconfig":{"compileOnSave":false,"configFileSpecs":{"excludeSpecs":["dist"],"includeSpecs":["src/**/*"],"validatedExcludeSpecs":["dist"],"validatedIncludeSpecs":["src/**/*"],"wildcardDirectories":{"/users/martaver/projects/forks/ts-jest-issue-805-demo/packages/my-app/src":1}},"errors":[],"fileNames":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.test.ts","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.ts"],"options":{"configFilePath":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/tsconfig.json","declaration":false,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"incremental":true,"inlineSourceMap":false,"inlineSources":true,"lib":["lib.dom.d.ts","lib.es2018.d.ts"],"module":1,"noEmit":false,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noUnusedLocals":true,"outDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/dist","preserveSymlinks":false,"removeComments":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src","sourceMap":true,"strict":true,"target":5},"projectReferences":[{"originalPath":"../my-library","path":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"}],"raw":{"compileOnSave":false,"compilerOptions":{"composite":true,"incremental":true,"outDir":"dist","preserveSymlinks":false,"rootDir":"src","tsBuildInfoFile":"dist/.tsbuildinfo"},"extends":"../../tsconfig.json","include":["src/**/*"],"references":[{"path":"../my-library"}]},"typeAcquisition":{"enable":false,"exclude":[],"include":[]},"wildcardDirectories":{"/users/martaver/projects/forks/ts-jest-issue-805-demo/packages/my-app/src":1}},"version":"26.1.0"},"message":"normalized typescript config","sequence":16,"time":"2020-05-31T19:39:44.860Z"}
{"context":{"fileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.ts","logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformOptions":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-app"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-app","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"instrument":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","supportsDynamicImport":false,"supportsStaticESM":false},"transformerId":1,"version":"26.1.0"},"message":"computing cache key for /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.ts","sequence":17,"time":"2020-05-31T19:39:44.865Z"}
{"context":{"baseOptions":{},"logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformerId":2,"version":"26.1.0"},"message":"created new transformer","sequence":18,"time":"2020-05-31T19:39:45.374Z"}
{"context":{"fileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.test.ts","logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformOptions":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-library"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-library","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"instrument":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","supportsDynamicImport":false,"supportsStaticESM":false},"transformerId":2,"version":"26.1.0"},"message":"computing cache key for /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.test.ts","sequence":19,"time":"2020-05-31T19:39:45.374Z"}
{"context":{"logLevel":30,"namespace":"jest-transformer","package":"ts-jest","transformerId":2,"version":"26.1.0"},"message":"no matching config-set found, creating a new one","sequence":20,"time":"2020-05-31T19:39:45.374Z"}
{"context":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-library"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-library","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"logLevel":20,"namespace":"backports","package":"ts-jest","transformerId":2,"version":"26.1.0"},"message":"backporting config","sequence":21,"time":"2020-05-31T19:39:45.374Z"}
{"context":{"jestConfig":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-library"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-library","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":2,"version":"26.1.0"},"message":"normalized jest config","sequence":22,"time":"2020-05-31T19:39:45.374Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":2,"tsJestConfig":{"compiler":"typescript","diagnostics":{"ignoreCodes":[6059,18002,18003],"pretty":true,"throws":true},"isolatedModules":true,"packageJson":{"kind":"file"},"transformers":[],"tsConfig":{"kind":"file"}},"version":"26.1.0"},"message":"normalized ts-jest config","sequence":23,"time":"2020-05-31T19:39:45.374Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":2,"version":"26.1.0"},"message":"babel is disabled","sequence":24,"time":"2020-05-31T19:39:45.374Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":2,"tsConfigFileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/tsconfig.json","version":"26.1.0"},"message":"readTsConfig(): reading /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/tsconfig.json","sequence":25,"time":"2020-05-31T19:39:45.374Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":2,"tsconfig":{"compileOnSave":false,"configFileSpecs":{"excludeSpecs":["dist"],"includeSpecs":["src/**/*"],"validatedExcludeSpecs":["dist"],"validatedIncludeSpecs":["src/**/*"],"wildcardDirectories":{"/users/martaver/projects/forks/ts-jest-issue-805-demo/packages/my-library/src":1}},"errors":[],"fileNames":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.test.ts","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.ts"],"options":{"configFilePath":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/tsconfig.json","declaration":false,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"inlineSourceMap":false,"inlineSources":true,"lib":["lib.dom.d.ts","lib.es2018.d.ts"],"module":1,"noEmit":false,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noUnusedLocals":true,"outDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/dist","removeComments":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src","sourceMap":true,"strict":true,"target":5},"raw":{"compileOnSave":false,"compilerOptions":{"composite":true,"declaration":true,"outDir":"dist","rootDir":"src","sourceMap":true,"tsBuildInfoFile":"dist/.tsbuildinfo"},"extends":"../../tsconfig.json","include":["src/**/*"]},"typeAcquisition":{"enable":false,"exclude":[],"include":[]},"wildcardDirectories":{"/users/martaver/projects/forks/ts-jest-issue-805-demo/packages/my-library/src":1}},"version":"26.1.0"},"message":"normalized typescript config","sequence":26,"time":"2020-05-31T19:39:45.379Z"}
{"context":{"fileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.ts","logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformOptions":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-library"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-library","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"instrument":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","supportsDynamicImport":false,"supportsStaticESM":false},"transformerId":2,"version":"26.1.0"},"message":"computing cache key for /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.ts","sequence":27,"time":"2020-05-31T19:39:45.385Z"}

@martaver
Copy link
Author

For typescript@next (4.0.0-dev.20200531)

{"context":{"allowJs":false,"logLevel":20,"namespace":"jest-preset","package":"ts-jest","version":"26.1.0"},"message":"creating jest presets not handling JavaScript files","sequence":1,"time":"2020-05-31T19:41:00.974Z"}
{"context":{"logLevel":20,"namespace":"Importer","package":"ts-jest","version":"26.1.0"},"message":"creating Importer singleton","sequence":2,"time":"2020-05-31T19:41:02.668Z"}
{"context":{"allowJs":false,"logLevel":20,"namespace":"jest-preset","package":"ts-jest","version":"26.1.0"},"message":"creating jest presets not handling JavaScript files","sequence":3,"time":"2020-05-31T19:41:02.676Z"}
{"context":{"actualVersion":"26.0.1","expectedVersion":">=26 <27","logLevel":20,"namespace":"versions","package":"ts-jest","version":"26.1.0"},"message":"checking version of jest: OK","sequence":4,"time":"2020-05-31T19:41:02.678Z"}
{"context":{"baseOptions":{},"logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformerId":1,"version":"26.1.0"},"message":"created new transformer","sequence":5,"time":"2020-05-31T19:41:02.679Z"}
{"context":{"fileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.test.ts","logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformOptions":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-library"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-library","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"instrument":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","supportsDynamicImport":false,"supportsStaticESM":false},"transformerId":1,"version":"26.1.0"},"message":"computing cache key for /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.test.ts","sequence":6,"time":"2020-05-31T19:41:02.679Z"}
{"context":{"logLevel":30,"namespace":"jest-transformer","package":"ts-jest","transformerId":1,"version":"26.1.0"},"message":"no matching config-set found, creating a new one","sequence":7,"time":"2020-05-31T19:41:02.679Z"}
{"context":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-library"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-library","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"logLevel":20,"namespace":"backports","package":"ts-jest","transformerId":1,"version":"26.1.0"},"message":"backporting config","sequence":8,"time":"2020-05-31T19:41:02.680Z"}
{"context":{"jestConfig":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-library"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-library","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"version":"26.1.0"},"message":"normalized jest config","sequence":9,"time":"2020-05-31T19:41:02.680Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"tsJestConfig":{"compiler":"typescript","diagnostics":{"ignoreCodes":[6059,18002,18003],"pretty":true,"throws":true},"isolatedModules":true,"packageJson":{"kind":"file"},"transformers":[],"tsConfig":{"kind":"file"}},"version":"26.1.0"},"message":"normalized ts-jest config","sequence":10,"time":"2020-05-31T19:41:02.681Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"version":"26.1.0"},"message":"babel is disabled","sequence":11,"time":"2020-05-31T19:41:02.684Z"}
{"context":{"logLevel":20,"namespace":"Importer","package":"ts-jest","requireResult":{"exists":true,"given":"typescript","path":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/typescript/lib/typescript.js"},"version":"26.1.0"},"message":"loaded module typescript","sequence":12,"time":"2020-05-31T19:41:02.685Z"}
{"context":{"logLevel":20,"namespace":"Importer","package":"ts-jest","version":"26.1.0"},"message":"patching typescript","sequence":13,"time":"2020-05-31T19:41:02.685Z"}
{"context":{"actualVersion":"4.0.0-dev.20200531","expectedVersion":">=3.8 <4","logLevel":20,"namespace":"versions","package":"ts-jest","version":"26.1.0"},"message":"checking version of typescript: NOT OK","sequence":14,"time":"2020-05-31T19:41:02.685Z"}
{"context":{"logLevel":40,"namespace":"versions","package":"ts-jest","version":"26.1.0"},"message":"Version 4.0.0-dev.20200531 of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=3.8.0 <4.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.","sequence":15,"time":"2020-05-31T19:41:02.685Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"tsConfigFileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/tsconfig.json","version":"26.1.0"},"message":"readTsConfig(): reading /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/tsconfig.json","sequence":16,"time":"2020-05-31T19:41:02.686Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"tsconfig":{"compileOnSave":false,"configFileSpecs":{"excludeSpecs":["dist"],"includeSpecs":["src/**/*"],"validatedExcludeSpecs":["dist"],"validatedIncludeSpecs":["src/**/*"],"wildcardDirectories":{"/users/martaver/projects/forks/ts-jest-issue-805-demo/packages/my-library/src":1}},"errors":[],"fileNames":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.test.ts","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.ts"],"options":{"configFilePath":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/tsconfig.json","declaration":false,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"inlineSourceMap":false,"inlineSources":true,"lib":["lib.dom.d.ts","lib.es2018.d.ts"],"module":1,"noEmit":false,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noUnusedLocals":true,"outDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/dist","removeComments":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src","sourceMap":true,"strict":true,"target":5},"raw":{"compileOnSave":false,"compilerOptions":{"composite":true,"declaration":true,"outDir":"dist","rootDir":"src","sourceMap":true,"tsBuildInfoFile":"dist/.tsbuildinfo"},"extends":"../../tsconfig.json","include":["src/**/*"]},"typeAcquisition":{"enable":false,"exclude":[],"include":[]},"wildcardDirectories":{"/users/martaver/projects/forks/ts-jest-issue-805-demo/packages/my-library/src":1}},"version":"26.1.0"},"message":"normalized typescript config","sequence":17,"time":"2020-05-31T19:41:02.699Z"}
{"context":{"fileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.ts","logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformOptions":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-library"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-library","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"instrument":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library","supportsDynamicImport":false,"supportsStaticESM":false},"transformerId":1,"version":"26.1.0"},"message":"computing cache key for /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src/index.ts","sequence":18,"time":"2020-05-31T19:41:02.702Z"}
{"context":{"baseOptions":{},"logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformerId":2,"version":"26.1.0"},"message":"created new transformer","sequence":19,"time":"2020-05-31T19:41:02.985Z"}
{"context":{"fileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.test.ts","logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformOptions":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-app"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-app","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"instrument":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","supportsDynamicImport":false,"supportsStaticESM":false},"transformerId":2,"version":"26.1.0"},"message":"computing cache key for /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.test.ts","sequence":20,"time":"2020-05-31T19:41:02.985Z"}
{"context":{"logLevel":30,"namespace":"jest-transformer","package":"ts-jest","transformerId":2,"version":"26.1.0"},"message":"no matching config-set found, creating a new one","sequence":21,"time":"2020-05-31T19:41:02.985Z"}
{"context":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-app"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-app","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"logLevel":20,"namespace":"backports","package":"ts-jest","transformerId":2,"version":"26.1.0"},"message":"backporting config","sequence":22,"time":"2020-05-31T19:41:02.985Z"}
{"context":{"jestConfig":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-app"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-app","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":2,"version":"26.1.0"},"message":"normalized jest config","sequence":23,"time":"2020-05-31T19:41:02.985Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":2,"tsJestConfig":{"compiler":"typescript","diagnostics":{"ignoreCodes":[6059,18002,18003],"pretty":true,"throws":true},"isolatedModules":true,"packageJson":{"kind":"file"},"transformers":[],"tsConfig":{"kind":"file"}},"version":"26.1.0"},"message":"normalized ts-jest config","sequence":24,"time":"2020-05-31T19:41:02.986Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":2,"version":"26.1.0"},"message":"babel is disabled","sequence":25,"time":"2020-05-31T19:41:02.986Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":2,"tsConfigFileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/tsconfig.json","version":"26.1.0"},"message":"readTsConfig(): reading /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/tsconfig.json","sequence":26,"time":"2020-05-31T19:41:02.986Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":2,"tsconfig":{"compileOnSave":false,"configFileSpecs":{"excludeSpecs":["dist"],"includeSpecs":["src/**/*"],"validatedExcludeSpecs":["dist"],"validatedIncludeSpecs":["src/**/*"],"wildcardDirectories":{"/users/martaver/projects/forks/ts-jest-issue-805-demo/packages/my-app/src":1}},"errors":[],"fileNames":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.test.ts","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.ts"],"options":{"configFilePath":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/tsconfig.json","declaration":false,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"incremental":true,"inlineSourceMap":false,"inlineSources":true,"lib":["lib.dom.d.ts","lib.es2018.d.ts"],"module":1,"noEmit":false,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noUnusedLocals":true,"outDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/dist","preserveSymlinks":false,"removeComments":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src","sourceMap":true,"strict":true,"target":5},"projectReferences":[{"originalPath":"../my-library","path":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"}],"raw":{"compileOnSave":false,"compilerOptions":{"composite":true,"incremental":true,"outDir":"dist","preserveSymlinks":false,"rootDir":"src","tsBuildInfoFile":"dist/.tsbuildinfo"},"extends":"../../tsconfig.json","include":["src/**/*"],"references":[{"path":"../my-library"}]},"typeAcquisition":{"enable":false,"exclude":[],"include":[]},"wildcardDirectories":{"/users/martaver/projects/forks/ts-jest-issue-805-demo/packages/my-app/src":1}},"version":"26.1.0"},"message":"normalized typescript config","sequence":27,"time":"2020-05-31T19:41:02.989Z"}
{"context":{"fileName":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.ts","logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformOptions":{"config":{"automock":false,"cache":true,"cacheDirectory":"/private/var/folders/n0/f14q1nqj3vbg5zyzygtrwt3h0000gn/T/jest_dx","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo","detectLeaks":false,"detectOpenHandles":false,"displayName":{"color":"white","name":"my-app"},"errorOnDeprecated":false,"extraGlobals":[],"forceCoverageMatch":[],"globals":{"ts-jest":{"isolatedModules":true}},"haste":{"computeSha1":false,"throwOnModuleCollision":false},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","json","jsx","ts","tsx","node"],"moduleNameMapper":[],"modulePathIgnorePatterns":[],"name":"my-app","prettierPath":"prettier","resetMocks":false,"resetModules":false,"restoreMocks":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","roots":["/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app"],"runner":"jest-runner","setupFiles":[],"setupFilesAfterEnv":[],"skipFilter":false,"snapshotSerializers":[],"testEnvironment":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-environment-node/build/index.js","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/__tests__/**/*.[jt]s?(x)","**/?(*.)+(spec|test).[tj]s?(x)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":[],"testRunner":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost","timers":"real","transform":[["^.+\\.tsx?$","/Users/martaver/Projects/forks/ts-jest-issue-805-demo/node_modules/ts-jest/dist/index.js",{}]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"instrument":false,"rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app","supportsDynamicImport":false,"supportsStaticESM":false},"transformerId":2,"version":"26.1.0"},"message":"computing cache key for /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src/main.ts","sequence":28,"time":"2020-05-31T19:41:02.992Z"}

@ahnpnl
Copy link
Collaborator

ahnpnl commented May 31, 2020

From dev:

readTsConfig(): reading /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/tsconfig.json

"tsconfig”: {"outDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/dist","rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-app/src","projectReferences":[{"originalPath":"../my-library","path":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library"}],

"raw":{"outDir":"dist","preserveSymlinks":false,"rootDir":"src","tsBuildInfoFile":"dist/.tsbuildinfo"},"extends":"../../tsconfig.json","include":["src/**/*"],"references":[{"path":"../my-library"}]},

Look like tsconfig was resolved correctly with outDir and rootDir. Cannot find module issue can be also related to jest that jest cannot find the module based on the path.

@ahnpnl
Copy link
Collaborator

ahnpnl commented May 31, 2020

If you get error cannot find module, this can be either:

  • Jest cannot find the module based on the import path to resolve it. This is out of scope ts-jest because it requires moduleNameMapper config.

  • Or ts-jest cannot compile the module because it cannot find the path resolved by tsconfig above. This case I will need to debug to see.

@martaver
Copy link
Author

Is that with dev or next?

@martaver
Copy link
Author

Why would jest not be able to resolve it, if the paths are all fine?

@ahnpnl
Copy link
Collaborator

ahnpnl commented May 31, 2020

From next

"readTsConfig(): reading /Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/tsconfig.json"

"tsconfig""outDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/dist","rootDir":"/Users/martaver/Projects/forks/ts-jest-issue-805-demo/packages/my-library/src",

"raw":"outDir":"dist","rootDir":"src","sourceMap":true,"tsBuildInfoFile":"dist/.tsbuildinfo"},"extends":"../../tsconfig.json","include":["src/**/*"]},"typeAcquisition":{"enable":false,"exclude":[],"include":[]},"wildcardDirectories":{"/users/martaver/projects/forks/ts-jest-issue-805-demo/packages/my-library/src":1}}

I can see between dev and next has differences. While dev gets tsconfig from my-app, next gets tsconfig from my-library

Did you run yarn test on the same location for 2 cases ?

Why would jest not be able to resolve it, if the paths are all fine?

Jest relies on moduleNameMapper to do module resolution. The default module resolution doesn't always work so moduleNameMapper is required to solve that issue.

@martaver
Copy link
Author

Did you run yarn test on the same location for 2 cases ?

Yep, from root directory. It also fails with the same error if I run jest directly from packages/my-app.

It would be nice to not have to use nodeModuleMapper here... especially since the case where index.ts is in the default root dir works fine.

@ahnpnl
Copy link
Collaborator

ahnpnl commented May 31, 2020

So I debugged a bit:

In general, both next and dev gave the same result regarding to tsconfig. What happened is: one jest worker read my-app and resolved its tsconfig, another jest worker read my-library and resolved its tsconfig.

Then I checked the tsconfig of each jest worker, both configs were expectedly correct. Going deeper, I saw that ts-jest successfully compiled all ts files. Here is the compiled result of my-app/main.ts

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.main = void 0;
const my_library_1 = require("@mfellner/my-library");
function main() {
    const value = my_library_1.myLibraryFunction();
    console.log(`You got foo: "${value.foo}" and bar: ${value.bar}`);
}
exports.main = main;
if (require.main === module) {
    main();
}
//# sourceMappingURL=main.js.map

as you can see, the line require("@mfellner/my-library"); is the line jest doesn't understand. Therefore moduleNameMapper is required. Unfortunately this is out of scope ts-jest that we cannot change the way how jest resolves modules.

Moreover, you can see in error stack trace:

 Require stack:
      src/main.ts
      src/main.test.ts

      at Resolver.resolveModule (../../node_modules/jest-resolve/build/index.js:308:11)

This comes from jest module resolution.

@ahnpnl
Copy link
Collaborator

ahnpnl commented Jun 1, 2020

I have actually an idea, might be a new feature for ts-jest that leverage the usage of AST transformer.

At the moment, ts-jest only has one ast transformer which is for hoisting some jest stuffs. One can create another transformer which will alter the statement require("@mfellner/my-library") to require (<path_resolved_via_typescript_module_resolution>). IMO, by doing this, it is possible to avoid configure moduleNameMapper

You can also write your own ast transformer and give it to ts-jest config.

@ahnpnl
Copy link
Collaborator

ahnpnl commented Jun 2, 2020

i will close this as not ts-jest issue because ts-jest doesn't actually perform module resolution but that is jest does. You should look into TypeScript plugin which can rewrite paths, something like ttypescript does.

Related infor you can find here microsoft/TypeScript#15479 (comment)

@alexbruno
Copy link

I know this is an old issue, but if anyone else is running into similar problems...
I just made this on Jest config and it worked for me:

  globals: {
    'ts-jest': {
      isolatedModules: true,
    },
  }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants