Skip to content

Commit 0eb468d

Browse files
authored
chore(compiler): improve logging (#1443)
1 parent cced137 commit 0eb468d

11 files changed

Lines changed: 34 additions & 75 deletions

File tree

e2e/__tests__/__snapshots__/logger.test.ts.snap

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ Array [
2424
"[level:20] compileUsingLanguageService(): creating language service",
2525
"[level:20] readThrough(): no cache",
2626
"[level:20] compileFn(): compiling using language service",
27-
"[level:20] updateMemoryCache(): update memory cache",
27+
"[level:20] updateMemoryCache(): update memory cache for language service",
2828
"[level:20] visitSourceFileNode(): hoisting",
2929
"[level:20] compileFn(): computing diagnostics for language service",
3030
"[level:20] computing cache key for <cwd>/Hello.ts",
3131
"[level:20] processing <cwd>/Hello.ts",
3232
"[level:20] readThrough(): no cache",
3333
"[level:20] compileFn(): compiling using language service",
34-
"[level:20] updateMemoryCache(): update memory cache",
34+
"[level:20] updateMemoryCache(): update memory cache for language service",
3535
"[level:20] visitSourceFileNode(): hoisting",
3636
"[level:20] compileFn(): computing diagnostics for language service",
3737
]
@@ -65,15 +65,15 @@ Array [
6565
"[level:20] compileUsingLanguageService(): creating language service",
6666
"[level:20] readThrough(): no cache",
6767
"[level:20] compileFn(): compiling using language service",
68-
"[level:20] updateMemoryCache(): update memory cache",
68+
"[level:20] updateMemoryCache(): update memory cache for language service",
6969
"[level:20] visitSourceFileNode(): hoisting",
7070
"[level:20] compileFn(): computing diagnostics for language service",
7171
"[level:20] calling babel-jest processor",
7272
"[level:20] computing cache key for <cwd>/Hello.ts",
7373
"[level:20] processing <cwd>/Hello.ts",
7474
"[level:20] readThrough(): no cache",
7575
"[level:20] compileFn(): compiling using language service",
76-
"[level:20] updateMemoryCache(): update memory cache",
76+
"[level:20] updateMemoryCache(): update memory cache for language service",
7777
"[level:20] visitSourceFileNode(): hoisting",
7878
"[level:20] compileFn(): computing diagnostics for language service",
7979
"[level:20] calling babel-jest processor",
@@ -109,15 +109,15 @@ Array [
109109
"[level:20] compileUsingLanguageService(): creating language service",
110110
"[level:20] readThrough(): no cache",
111111
"[level:20] compileFn(): compiling using language service",
112-
"[level:20] updateMemoryCache(): update memory cache",
112+
"[level:20] updateMemoryCache(): update memory cache for language service",
113113
"[level:20] visitSourceFileNode(): hoisting",
114114
"[level:20] compileFn(): computing diagnostics for language service",
115115
"[level:20] calling babel-jest processor",
116116
"[level:20] computing cache key for <cwd>/Hello.ts",
117117
"[level:20] processing <cwd>/Hello.ts",
118118
"[level:20] readThrough(): no cache",
119119
"[level:20] compileFn(): compiling using language service",
120-
"[level:20] updateMemoryCache(): update memory cache",
120+
"[level:20] updateMemoryCache(): update memory cache for language service",
121121
"[level:20] visitSourceFileNode(): hoisting",
122122
"[level:20] compileFn(): computing diagnostics for language service",
123123
"[level:20] calling babel-jest processor",
@@ -148,14 +148,14 @@ Array [
148148
"[level:20] compileUsingLanguageService(): creating language service",
149149
"[level:20] readThrough(): no cache",
150150
"[level:20] compileFn(): compiling using language service",
151-
"[level:20] updateMemoryCache(): update memory cache",
151+
"[level:20] updateMemoryCache(): update memory cache for language service",
152152
"[level:20] visitSourceFileNode(): hoisting",
153153
"[level:20] compileFn(): computing diagnostics for language service",
154154
"[level:20] computing cache key for <cwd>/Hello.ts",
155155
"[level:20] processing <cwd>/Hello.ts",
156156
"[level:20] readThrough(): no cache",
157157
"[level:20] compileFn(): compiling using language service",
158-
"[level:20] updateMemoryCache(): update memory cache",
158+
"[level:20] updateMemoryCache(): update memory cache for language service",
159159
"[level:20] visitSourceFileNode(): hoisting",
160160
"[level:20] compileFn(): computing diagnostics for language service",
161161
]

src/__helpers__/fakers.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ export const rootDir = filePath('')
1515
export function tsJestConfig(options?: Partial<TsJestConfig>): TsJestConfig {
1616
return {
1717
compilerHost: false,
18-
emit: false,
1918
incremental: false,
2019
isolatedModules: false,
2120
compiler: 'typescript',

src/compiler/instance.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,5 +183,5 @@ export const createCompiler = (configs: ConfigSet): TsCompiler => {
183183
}
184184
const compile = readThrough(cachedir, memoryCache, compileResult.compileFn, getExtension, logger)
185185

186-
return { cwd: configs.cwd, compile, extensions, cachedir, ts, program: compileResult.program }
186+
return { cwd: configs.cwd, compile, program: compileResult.program }
187187
}

src/compiler/language-service.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe('language service', () => {
3333
",
3434
"[level:20] compileFn(): compiling using language service
3535
",
36-
"[level:20] updateMemoryCache(): update memory cache
36+
"[level:20] updateMemoryCache(): update memory cache for language service
3737
",
3838
"[level:20] visitSourceFileNode(): hoisting
3939
",

src/compiler/language-service.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export const compileUsingLanguageService = (
2929
}
3030
// Set the file contents into cache.
3131
const updateMemoryCache = (code: string, fileName: string) => {
32-
logger.debug({ fileName }, `updateMemoryCache(): update memory cache`)
32+
logger.debug({ fileName }, `updateMemoryCache(): update memory cache for language service`)
3333

3434
const fileVersion = memoryCache.versions[fileName] ?? 0,
3535
isFileInCache = fileVersion !== 0
@@ -85,7 +85,7 @@ export const compileUsingLanguageService = (
8585
}
8686

8787
logger.debug('compileUsingLanguageService(): creating language service')
88-
const service = ts.createLanguageService(serviceHost)
88+
const service: _ts.LanguageService = ts.createLanguageService(serviceHost)
8989

9090
return {
9191
compileFn: (code: string, fileName: string): SourceOutput => {
@@ -103,7 +103,6 @@ export const compileUsingLanguageService = (
103103
.getCompilerOptionsDiagnostics()
104104
.concat(service.getSyntacticDiagnostics(normalizedFileName))
105105
.concat(service.getSemanticDiagnostics(normalizedFileName))
106-
107106
// will raise or just warn diagnostics depending on config
108107
configs.raiseDiagnostics(diagnostics, normalizedFileName, logger)
109108
}

src/compiler/program.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ describe('cache', () => {
166166
",
167167
"[level:20] compileFn(): compiling using program
168168
",
169-
"[level:20] updateMemoryCache(): update memory cache
169+
"[level:20] updateMemoryCache(): update memory cache for program
170170
",
171171
"[level:20] visitSourceFileNode(): hoisting
172172
",
@@ -207,7 +207,7 @@ Array [
207207
",
208208
"[level:20] compileFn(): compiling using incremental program
209209
",
210-
"[level:20] updateMemoryCache(): update memory cache
210+
"[level:20] updateMemoryCache(): update memory cache for incremental program
211211
",
212212
"[level:20] visitSourceFileNode(): hoisting
213213
",

src/compiler/program.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import { ConfigSet } from '../config/config-set'
77
import { CompileResult, MemoryCache, SourceOutput } from '../types'
88
import { Errors, interpolate } from '../util/messages'
99

10+
const hasOwn = Object.prototype.hasOwnProperty
11+
1012
/**
1113
* @internal
1214
*/
@@ -38,11 +40,9 @@ export const compileUsingProgram = (configs: ConfigSet, logger: Logger, memoryCa
3840
}
3941
let builderProgram: _ts.EmitAndSemanticDiagnosticsBuilderProgram, program: _ts.Program, host: _ts.CompilerHost
4042
if (incremental) {
41-
// TODO: Find a way to trigger typescript to build project when there are project references.
42-
// At the moment this Incremental Program doesn't work with project references
4343
host = ts.createIncrementalCompilerHost(options, sys)
4444
builderProgram = ts.createIncrementalProgram({
45-
rootNames: Object.keys(memoryCache.versions).slice(),
45+
rootNames: Object.keys(memoryCache.versions),
4646
options,
4747
host,
4848
configFileParsingDiagnostics: errors,
@@ -64,7 +64,7 @@ export const compileUsingProgram = (configs: ConfigSet, logger: Logger, memoryCa
6464
useCaseSensitiveFileNames: () => sys.useCaseSensitiveFileNames,
6565
}
6666
program = ts.createProgram({
67-
rootNames: Object.keys(memoryCache.versions).slice(),
67+
rootNames: Object.keys(memoryCache.versions),
6868
options,
6969
host,
7070
configFileParsingDiagnostics: errors,
@@ -74,12 +74,13 @@ export const compileUsingProgram = (configs: ConfigSet, logger: Logger, memoryCa
7474
// Read and cache custom transformers.
7575
const customTransformers = configs.tsCustomTransformers,
7676
updateMemoryCache = (code: string, fileName: string): void => {
77-
logger.debug({ fileName }, `updateMemoryCache(): update memory cache`)
77+
logger.debug(
78+
{ fileName },
79+
`updateMemoryCache(): update memory cache for ${incremental ? 'incremental program' : 'program'}`,
80+
)
7881

79-
const fileVersion = memoryCache.versions[fileName] ?? 0,
80-
isFileInCache = fileVersion !== 0,
81-
sourceFile = incremental ? builderProgram.getSourceFile(fileName) : program.getSourceFile(fileName)
82-
if (!isFileInCache) {
82+
const sourceFile = incremental ? builderProgram.getSourceFile(fileName) : program.getSourceFile(fileName)
83+
if (!hasOwn.call(memoryCache.versions, fileName)) {
8384
memoryCache.versions[fileName] = 1
8485
}
8586
if (memoryCache.contents[fileName] !== code) {
@@ -89,7 +90,7 @@ export const compileUsingProgram = (configs: ConfigSet, logger: Logger, memoryCa
8990
// Update program when file changes.
9091
if (sourceFile === undefined || sourceFile.text !== code || program.isSourceFileFromExternalLibrary(sourceFile)) {
9192
const programOptions = {
92-
rootNames: Object.keys(memoryCache.versions).slice(),
93+
rootNames: Object.keys(memoryCache.versions),
9394
options,
9495
host,
9596
configFileParsingDiagnostics: errors,
@@ -99,7 +100,10 @@ export const compileUsingProgram = (configs: ConfigSet, logger: Logger, memoryCa
99100
builderProgram = ts.createIncrementalProgram(programOptions)
100101
program = builderProgram.getProgram()
101102
} else {
102-
program = ts.createProgram(programOptions)
103+
program = ts.createProgram({
104+
...programOptions,
105+
oldProgram: program,
106+
})
103107
}
104108
}
105109
}
@@ -146,7 +150,9 @@ export const compileUsingProgram = (configs: ConfigSet, logger: Logger, memoryCa
146150
`compileFn(): computing diagnostics for ${incremental ? 'incremental program' : 'program'}`,
147151
)
148152

149-
const diagnostics = ts.getPreEmitDiagnostics(program, sourceFile).slice()
153+
const diagnostics = program
154+
.getSemanticDiagnostics(sourceFile)
155+
.concat(program.getSyntacticDiagnostics(sourceFile))
150156
// will raise or just warn diagnostics depending on config
151157
configs.raiseDiagnostics(diagnostics, normalizedFileName, logger)
152158
}

src/config/__snapshots__/config-set.spec.ts.snap

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ Object {
5252
"pretty": true,
5353
"throws": true,
5454
},
55-
"emit": false,
5655
"incremental": true,
5756
"isolatedModules": false,
5857
"packageJson": Object {
@@ -143,7 +142,6 @@ Object {
143142
"pretty": true,
144143
"throws": true,
145144
},
146-
"emit": false,
147145
"incremental": true,
148146
"isolatedModules": false,
149147
"packageJson": Object {

src/config/config-set.spec.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import { resolve } from 'path' // tslint:disable-next-line:no-duplicate-imports
77
import * as ts from 'typescript'
88

99
import * as _myModule from '..'
10-
import { mocked } from '../../utils'
1110
import * as fakers from '../__helpers__/fakers'
1211
import { logTargetMock } from '../__helpers__/mocks'
1312
import { TsJestGlobalOptions } from '../types'
1413
import * as _backports from '../util/backports'
1514
import { getPackageVersion } from '../util/get-package-version'
1615
import { normalizeSlashes } from '../util/normalize-slashes'
16+
import { mocked } from '../util/testing'
1717

1818
import { ConfigSet, IGNORE_DIAGNOSTIC_CODES, MATCH_NOTHING } from './config-set'
1919

@@ -884,14 +884,6 @@ describe('tsCompiler', () => {
884884
const cs = createConfigSet({ tsJestConfig: { tsConfig: false } as any })
885885
const compiler = cs.tsCompiler
886886
expect(compiler.cwd).toBe(cs.cwd)
887-
expect(compiler.cachedir).toBe(cs.tsCacheDir)
888-
expect(compiler.extensions).toMatchInlineSnapshot(`
889-
Array [
890-
".ts",
891-
".tsx",
892-
]
893-
`)
894-
expect(compiler.ts).toBe(cs.compilerModule)
895887
expect(typeof compiler.compile).toBe('function')
896888
})
897889
}) // tsCompiler
@@ -966,7 +958,7 @@ describe('cacheKey', () => {
966958
cs.jsonValue.value = val
967959
// digest is mocked in src/__mocks__/index.ts
968960
expect(cs.cacheKey).toMatchInlineSnapshot(
969-
`"{\\"digest\\":\\"a0d51ca854194df8191d0e65c0ca4730f510f332\\",\\"jest\\":{\\"__backported\\":true,\\"globals\\":{}},\\"projectDepVersions\\":{\\"dev\\":\\"1.2.5\\",\\"opt\\":\\"1.2.3\\",\\"peer\\":\\"1.2.4\\",\\"std\\":\\"1.2.6\\"},\\"transformers\\":[\\"hoisting-jest-mock@1\\"],\\"tsJest\\":{\\"compiler\\":\\"typescript\\",\\"compilerHost\\":false,\\"diagnostics\\":{\\"ignoreCodes\\":[6059,18002,18003],\\"pretty\\":true,\\"throws\\":true},\\"emit\\":false,\\"incremental\\":true,\\"isolatedModules\\":false,\\"packageJson\\":{\\"kind\\":\\"file\\"},\\"transformers\\":[]},\\"tsconfig\\":{\\"declaration\\":false,\\"inlineSourceMap\\":false,\\"inlineSources\\":true,\\"module\\":1,\\"noEmit\\":false,\\"removeComments\\":false,\\"sourceMap\\":true,\\"target\\":1}}"`,
961+
`"{\\"digest\\":\\"a0d51ca854194df8191d0e65c0ca4730f510f332\\",\\"jest\\":{\\"__backported\\":true,\\"globals\\":{}},\\"projectDepVersions\\":{\\"dev\\":\\"1.2.5\\",\\"opt\\":\\"1.2.3\\",\\"peer\\":\\"1.2.4\\",\\"std\\":\\"1.2.6\\"},\\"transformers\\":[\\"hoisting-jest-mock@1\\"],\\"tsJest\\":{\\"compiler\\":\\"typescript\\",\\"compilerHost\\":false,\\"diagnostics\\":{\\"ignoreCodes\\":[6059,18002,18003],\\"pretty\\":true,\\"throws\\":true},\\"incremental\\":true,\\"isolatedModules\\":false,\\"packageJson\\":{\\"kind\\":\\"file\\"},\\"transformers\\":[]},\\"tsconfig\\":{\\"declaration\\":false,\\"inlineSourceMap\\":false,\\"inlineSources\\":true,\\"module\\":1,\\"noEmit\\":false,\\"removeComments\\":false,\\"sourceMap\\":true,\\"target\\":1}}"`,
970962
)
971963
})
972964
}) // cacheKey

src/config/config-set.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,6 @@ export class ConfigSet {
267267
tsConfig,
268268
compilerHost: options.compilerHost ?? false,
269269
incremental: options.incremental ?? true,
270-
emit: options.emit ?? false,
271270
packageJson,
272271
babelConfig,
273272
diagnostics,

0 commit comments

Comments
 (0)