10000 Add baselining of modules and type refs · microsoft/TypeScript@e1600ab · GitHub
[go: up one dir, main page]

Skip to content

Commit e1600ab

Browse files
committed
Add baselining of modules and type refs
1 parent 3172629 commit e1600ab

File tree

2 files changed

+54
-4
lines changed

2 files changed

+54
-4
lines changed

src/testRunner/unittests/tsc/helpers.ts

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export interface TestTscCompile extends TestTscCompileLikeBase {
3535
baselineReadFileCalls?: boolean;
3636
baselinePrograms?: boolean;
3737
baselineDependencies?: boolean;
38+
baselineModulesAndTypeRefs?: boolean;
3839
}
3940

4041
export type CommandLineProgram = [ts.Program, ts.BuilderProgram?];
@@ -206,6 +207,11 @@ export function testTscCompile(input: TestTscCompile) {
206207
baselinePrograms(baseline, getPrograms!, ts.emptyArray, baselineDependencies);
207208
sys.write(baseline.join("\n"));
208209
}
210+
if (input.baselineModulesAndTypeRefs) {
211+
const baseline: string[] = [];
212+
baselineModulesAndTypeRefs(baseline, getPrograms!());
213+
sys.write(baseline.join("\n"));
214+
}
209215
if (baselineReadFileCalls) {
210216
sys.write(`readFiles:: ${JSON.stringify(actualReadFileMap, /*replacer*/ undefined, " ")} `);
211217
}
@@ -249,6 +255,40 @@ function storeDtsSignatures(sys: TscCompileSystem, programs: readonly CommandLin
249255
}
250256
}
251257

258+
function baselineCache<T>(baseline: string[], cacheType: string, cache: ts.ModeAwareCache<T> | undefined) {
259+
if (!cache?.size()) return;
260+
baseline.push(`${cacheType}:`);
261+
cache.forEach((resolved, key, mode) => baseline.push(`${key}: ${mode ? ts.getNameOfCompilerOptionValue(mode, ts.moduleOptionDeclaration.type) + ": " : ""}${JSON.stringify(
262+
{ ...resolved, refCount: undefined, files: undefined, isInvalidated: undefined, },
263+
/*replacer*/ undefined,
264+
2,
265+
)}`));
266+
}
267+
268+
export function baselineModulesAndTypeRefs(baseline: string[], programs: readonly CommandLineProgram[]) {
269+
for (const [program] of programs) {
270+
for (const f of program.getSourceFiles()) {
271+
if (!f.resolvedModules && !f.resolvedTypeReferenceDirectiveNames && !f.packageJsonScope) continue;
272+
baseline.push(`File: ${f.fileName}`);
273+
if (f.packageJsonScope) {
274+
baseline.push(`packageJsonScope:: ${JSON.stringify(
275+
f.packageJsonScope,
276+
/*replacer*/ undefined,
277+
2,
278+
)}`);
279+
}
280+
baselineCache(baseline, "resolvedModules", f.resolvedModules);
281+
baselineCache(baseline, "resolvedTypeReferenceDirectiveNames", f.resolvedTypeReferenceDirectiveNames);
282+
baseline.push("");
283+
}
284+
const autoTypes = program.getAutomaticTypeDirectiveResolutions();
285+
if (autoTypes.size()) {
286+
baselineCache(baseline, "automaticTypeDirectiveResolutions", autoTypes);
287+
baseline.push("");
288+
}
289+
}
290+
}
291+
252292
export function baselinePrograms(baseline: string[], getPrograms: () => readonly CommandLineProgram[], oldPrograms: readonly (CommandLineProgram | undefined)[], baselineDependencies: boolean | undefined) {
253293
const programs = getPrograms();
254294
for (let i = 0; i < programs.length; i++) {
@@ -903,7 +943,7 @@ export interface VerifyTscWithEditsInput extends TestTscCompile {
903943
*/
904944
export function verifyTsc({
905945
subScenario, fs, scenario, commandLineArgs, environmentVariables,
906-
baselineSourceMap, modifyFs, baselineReadFileCalls, baselinePrograms,
946+
baselineSourceMap, modifyFs, baselineReadFileCalls, baselinePrograms, baselineDependencies, baselineModulesAndTypeRefs,
907947
edits
908948
}: VerifyTscWithEditsInput) {
909949
describe(`tsc ${commandLineArgs.join(" ")} ${scenario}:: ${subScenario}`, () => {
@@ -921,6 +961,8 @@ export function verifyTsc({
921961
baselineSourceMap,
922962
baselineReadFileCalls,
923963
baselinePrograms,
964+
baselineDependencies,
965+
baselineModulesAndTypeRefs,
924966
environmentVariables,
925967
});
926968
edits?.forEach((
@@ -937,6 +979,8 @@ export function verifyTsc({
937979
baselineSourceMap,
938980
baselineReadFileCalls,
939981
baselinePrograms,
982+
baselineDependencies,
983+
baselineModulesAndTypeRefs,
940984
environmentVariables,
941985
}));
942986
});

src/testRunner/unittests/tscWatch/helpers.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
TestServerHostTrackingWrittenFiles,
1313
} from "../virtualFileSystemWithWatch";
1414
import {
15+
baselineModulesAndTypeRefs,
1516
baselinePrograms,
1617
commandLineCallbacks,
1718
CommandLineCallbacks,
@@ -42,6 +43,7 @@ export interface TscWatchCompileChange<T extends ts.BuilderProgram = ts.EmitAndS
4243
export interface TscWatchCheckOptions {
4344
baselineSourceMap?: boolean;
4445
baselineDependencies?: boolean;
46+
baselineModulesAndTypeRefs?: boolean;
4547
}
4648
export interface TscWatchCompileBase<T extends ts.BuilderProgram = ts.EmitAndSemanticDiagnosticsBuilderProgram> extends TscWatchCheckOptions {
4749
scenario: string;
@@ -66,7 +68,7 @@ function tscWatchCompile(input: TscWatchCompile) {
6668
const {
6769
scenario, subScenario,
6870
commandLineArgs, edits,
69-
baselineSourceMap, baselineDependencies
71+
baselineSourceMap, baselineDependencies, baselineModulesAndTypeRefs,
7072
} = input;
7173

7274
if (!isWatch(commandLineArgs)) sys.exit = exitCode => sys.exitCode = exitCode;
@@ -86,6 +88,7 @@ function tscWatchCompile(input: TscWatchCompile) {
8688
getPrograms,
8789
baselineSourceMap,
8890
baselineDependencies,
91+
baselineModulesAndTypeRefs,
8992
edits,
9093
watchOrSolution
9194
});
@@ -184,7 +187,7 @@ export interface RunWatchBaseline<T extends ts.BuilderProgram> extends BaselineB
184187
export function runWatchBaseline<T extends ts.BuilderProgram = ts.EmitAndSemanticDiagnosticsBuilderProgram>({
185188
scenario, subScenario, commandLineArgs,
186189
getPrograms, sys, baseline, oldSnap,
187-
baselineSourceMap, baselineDependencies,
190+
baselineSourceMap, baselineDependencies, baselineModulesAndTypeRefs,
188191
edits, watchOrSolution
189192
}: RunWatchBaseline<T>) {
190193
baseline.push(`${sys.getExecutingFilePath()} ${commandLineArgs.join(" ")}`);
@@ -196,6 +199,7 @@ export function runWatchBaseline<T extends ts.BuilderProgram = ts.EmitAndSemanti
196199
oldSnap,
197200
baselineSourceMap,
198201
baselineDependencies,
202+
baselineModulesAndTypeRefs,
199203
});
200204

201205
if (edits) {
@@ -210,6 +214,7 @@ export function runWatchBaseline<T extends ts.BuilderProgram = ts.EmitAndSemanti
210214
oldSnap,
211215
baselineSourceMap,
212216
baselineDependencies,
217+
baselineModulesAndTypeRefs,
213218
});
214219
}
215220
}
@@ -228,10 +233,11 @@ export interface WatchBaseline extends BaselineBase, TscWatchCheckOptions {
228233
oldPrograms: readonly (CommandLineProgram | undefined)[];
229234
getPrograms: () => readonly CommandLineProgram[];
230235
}
231-
export function watchBaseline({ baseline, getPrograms, oldPrograms, sys, oldSnap, baselineSourceMap, baselineDependencies }: WatchBaseline) {
236+
export function watchBaseline({ baseline, getPrograms, oldPrograms, sys, oldSnap, baselineSourceMap, baselineDependencies, baselineModulesAndTypeRefs: shouldBaselineModulesAndTypeRefs }: WatchBaseline) {
232237
if (baselineSourceMap) generateSourceMapBaselineFiles(sys);
233238
sys.serializeOutput(baseline);
234239
const programs = baselinePrograms(baseline, getPrograms, oldPrograms, baselineDependencies);
240+
if (shouldBaselineModulesAndTypeRefs) baselineModulesAndTypeRefs(baseline, programs);
235241
sys.serializeWatches(baseline);
236242
baseline.push(`exitCode:: ExitStatus.${ts.ExitStatus[sys.exitCode as ts.ExitStatus]}`, "");
237243
sys.diff(baseline, oldSnap);

0 commit comments

Comments
 (0)
0