Skip to content

Commit 6fb8889

Browse files
committed
Run trace tests with bundler and emit instrumentation
1 parent c07da58 commit 6fb8889

File tree

3 files changed

+67
-1
lines changed

3 files changed

+67
-1
lines changed

src/compiler/moduleNameResolver.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,20 @@ function getCandidateFromTypeRoot(typeRoot: string, typeReferenceDirectiveName:
533533
* is assumed to be the same as root directory of the project.
534534
*/
535535
export function resolveTypeReferenceDirective(typeReferenceDirectiveName: string, containingFile: string | undefined, options: CompilerOptions, host: ModuleResolutionHost, redirectedReference?: ResolvedProjectReference, cache?: TypeReferenceDirectiveResolutionCache, resolutionMode?: ResolutionMode): ResolvedTypeReferenceDirectiveWithFailedLookupLocations {
536+
// @ts-ignore
537+
globalThis.writeTraceFile?.({
538+
call: "resolveTypeReferenceDirective",
539+
args: {
540+
name: typeReferenceDirectiveName,
541+
containingFile,
542+
compilerOptions: options,
543+
resolutionMode,
544+
redirectedReference: redirectedReference && {
545+
sourceFile: { fileName: redirectedReference.sourceFile.fileName },
546+
commandLine: { options: redirectedReference.commandLine.options },
547+
},
548+
},
549+
});
536550
Debug.assert(typeof typeReferenceDirectiveName === "string", "Non-string value passed to `ts.resolveTypeReferenceDirective`, likely by a wrapping package working with an outdated `resolveTypeReferenceDirectives` signature. This is probably not a problem in TS itself.");
537551
const traceEnabled = isTraceEnabled(options, host);
538552
if (redirectedReference) {
@@ -1399,6 +1413,20 @@ export function resolveModuleNameFromCache(moduleName: string, containingFile: s
13991413
}
14001414

14011415
export function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference, resolutionMode?: ResolutionMode): ResolvedModuleWithFailedLookupLocations {
1416+
// @ts-ignore
1417+
globalThis.writeTraceFile?.({
1418+
call: "resolveModuleName",
1419+
args: {
1420+
name: moduleName,
1421+
containingFile,
1422+
compilerOptions,
1423+
resolutionMode,
1424+
redirectedReference: redirectedReference && {
1425+
sourceFile: { fileName: redirectedReference.sourceFile.fileName },
1426+
commandLine: { options: redirectedReference.commandLine.options },
1427+
},
1428+
},
1429+
});
14021430
const traceEnabled = isTraceEnabled(compilerOptions, host);
14031431
if (redirectedReference) {
14041432
compilerOptions = redirectedReference.commandLine.options;
@@ -2392,6 +2420,11 @@ export interface PackageJsonInfoContents {
23922420
* @internal
23932421
*/
23942422
export function getPackageScopeForPath(directory: string, state: ModuleResolutionState): PackageJsonInfo | undefined {
2423+
// @ts-ignore
2424+
globalThis.writeTraceFile?.({
2425+
call: "getPackageScopeForPath",
2426+
args: { directory },
2427+
});
23952428
return forEachAncestorDirectoryStoppingAtGlobalCache(
23962429
state.host,
23972430
directory,

src/compiler/utilities.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8936,7 +8936,7 @@ const _computedOptions = createComputedCompilerOptions({
89368936
},
89378937
},
89388938
moduleResolution: {
8939-
dependencies: ["module", "target"],
8939+
dependencies: ["module", "target", "traceResolution"],
89408940
computeValue: (compilerOptions): ModuleResolutionKind => {
89418941
let moduleResolution = compilerOptions.moduleResolution;
89428942
if (moduleResolution === undefined) {
@@ -8958,6 +8958,9 @@ const _computedOptions = createComputedCompilerOptions({
89588958
break;
89598959
}
89608960
}
8961+
if (moduleResolution === ModuleResolutionKind.Node10 && compilerOptions.traceResolution) {
8962+
moduleResolution = ModuleResolutionKind.Bundler;
8963+
}
89618964
return moduleResolution;
89628965
},
89638966
},

src/testRunner/compilerRunner.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ import * as Utils from "./_namespaces/Utils.js";
1515
import * as vfs from "./_namespaces/vfs.js";
1616
import * as vpath from "./_namespaces/vpath.js";
1717

18+
require("fs").mkdirSync("trace-tests", { recursive: true });
19+
// @ts-ignore
20+
globalThis.outputFile = `trace-tests/${require("crypto").randomBytes(16).toString("hex")}`;
21+
1822
export const enum CompilerTestType {
1923
Conformance,
2024
Regressions,
@@ -246,6 +250,29 @@ class CompilerTest {
246250
tsConfigOptions.configFile!.fileName = tsConfigOptions.configFilePath;
247251
}
248252

253+
const traceResolution = tsConfigOptions?.traceResolution || this.harnessSettings.traceResolution;
254+
const baseUrl = tsConfigOptions?.baseUrl || this.harnessSettings.baseUrl;
255+
const rootDirs = tsConfigOptions?.rootDirs || this.harnessSettings.rootDirs;
256+
const moduleResolution = tsConfigOptions?.moduleResolution || this.harnessSettings.moduleResolution;
257+
if (
258+
traceResolution
259+
&& !baseUrl
260+
&& !rootDirs
261+
&& moduleResolution !== ts.ModuleResolutionKind.Classic
262+
&& (`${moduleResolution}`.toLowerCase()) !== "classic"
263+
) {
264+
if (moduleResolution === ts.ModuleResolutionKind.Node10 || ["node", "node10"].includes(("" + moduleResolution).toLowerCase())) {
265+
this.harnessSettings.moduleResolution = "bundler";
266+
}
267+
// @ts-ignore
268+
globalThis.writeTraceFile = json => require("fs").appendFileSync(globalThis.outputFile, JSON.stringify(json) + "\n", "utf8");
269+
// @ts-ignore
270+
globalThis.writeTraceFile({
271+
test: this.configuredName,
272+
files: units,
273+
});
274+
}
275+
249276
this.result = Compiler.compileFiles(
250277
this.toBeCompiled,
251278
this.otherFiles,
@@ -255,6 +282,9 @@ class CompilerTest {
255282
testCaseContent.symlinks,
256283
);
257284

285+
// @ts-ignore
286+
globalThis.writeTraceFile = () => {};
287+
258288
this.options = this.result.options;
259289
}
260290

0 commit comments

Comments
 (0)