Skip to content

Commit 7c918fb

Browse files
Baseline host state when baselining tsserver tests (microsoft#50678)
* Some more formatting to have baselines similar to what we have in tsserver.log * Some refactor * Baselines * Baseline host details on each request * More formatting per tsserver log * More baselining of host state * Update Baselines and/or Applied Lint Fixes * Use utc time in logger for baselines Co-authored-by: TypeScript Bot <[email protected]>
1 parent 2f1ba45 commit 7c918fb

File tree

419 files changed

+336503
-43072
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

419 files changed

+336503
-43072
lines changed

src/testRunner/unittests/tsserver/cachingFileSystemInformation.ts

+11-11
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ namespace ts.projectSystem {
7676
};
7777

7878
const host = createServerHost([root, imported]);
79-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
79+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
8080
projectService.setCompilerOptionsForInferredProjects({ module: ModuleKind.AMD, noLib: true });
8181
projectService.openClientFile(root.path);
8282
const project = projectService.inferredProjects[0];
@@ -134,7 +134,7 @@ namespace ts.projectSystem {
134134
};
135135

136136
const host = createServerHost([root]);
137-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
137+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
138138
projectService.setCompilerOptionsForInferredProjects({ module: ModuleKind.AMD, noLib: true });
139139
const logCacheAndClear = createLoggerTrackingHostCalls(host);
140140
projectService.openClientFile(root.path);
@@ -146,7 +146,7 @@ namespace ts.projectSystem {
146146
logCacheAndClear(projectService.logger);
147147

148148
host.writeFile(imported.path, imported.content);
149-
host.runQueuedTimeoutCallbacks();
149+
projectService.runQueuedTimeoutCallbacks();
150150
logSemanticDiagnostics(projectService, project, root);
151151
logCacheAndClear(projectService.logger);
152152
baselineTsserverLogs("cachingFileSystemInformation", "loads missing files from disk", projectService);
@@ -195,7 +195,7 @@ namespace ts.projectSystem {
195195
};
196196
const projectFiles = [clientFile, anotherModuleFile, moduleFile, tsconfigFile];
197197
const host = createServerHost(projectFiles);
198-
const session = createSession(host, { logger: createLoggerWithInMemoryLogs() });
198+
const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) });
199199
openFilesForSession([clientFile], session);
200200
const logCacheAndClear = createLoggerTrackingHostCalls(host);
201201

@@ -273,14 +273,14 @@ namespace ts.projectSystem {
273273
};
274274
const projectFiles = [file1, file2, es2016LibFile, tsconfigFile];
275275
const host = createServerHost(projectFiles, { useCaseSensitiveFileNames });
276-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
276+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
277277
projectService.openClientFile(file1.path);
278278

279279
const logCacheAndClear = createLoggerTrackingHostCalls(host);
280280

281281
// Create file cookie.ts
282282
host.writeFile(file3.path, file3.content);
283-
host.runQueuedTimeoutCallbacks();
283+
projectService.runQueuedTimeoutCallbacks();
284284
logCacheAndClear(projectService.logger);
285285

286286
projectService.openClientFile(file3.path);
@@ -383,7 +383,7 @@ namespace ts.projectSystem {
383383
`
384384
});
385385
const host = createServerHost([app, libFile, tsconfigJson, packageJson]);
386-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
386+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
387387
projectService.setHostConfiguration({ preferences: { includePackageJsonAutoImports: "off" } });
388388
projectService.openClientFile(app.path);
389389

@@ -479,15 +479,15 @@ namespace ts.projectSystem {
479479
if (npmInstallComplete || timeoutDuringPartialInstallation) {
480480
if (timeoutQueueLengthWhenRunningTimeouts) {
481481
// Expected project update
482-
host.checkTimeoutQueueLengthAndRun(timeoutQueueLengthWhenRunningTimeouts + 1); // Scheduled invalidation of resolutions
483-
host.runQueuedTimeoutCallbacks(); // Actual update
482+
projectService.checkTimeoutQueueLengthAndRun(timeoutQueueLengthWhenRunningTimeouts + 1); // Scheduled invalidation of resolutions
483+
projectService.runQueuedTimeoutCallbacks(); // Actual update
484484
}
485485
else {
486-
host.checkTimeoutQueueLengthAndRun(timeoutQueueLengthWhenRunningTimeouts);
486+
projectService.checkTimeoutQueueLengthAndRun(timeoutQueueLengthWhenRunningTimeouts);
487487
}
488488
}
489489
else {
490-
host.checkTimeoutQueueLength(3);
490+
projectService.checkTimeoutQueueLength(3);
491491
}
492492
}
493493
}

src/testRunner/unittests/tsserver/configFileSearch.ts

+10-10
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ namespace ts.projectSystem {
3838
content: "{}"
3939
};
4040
const host = createServerHost([f1, libFile, configFile, configFile2]);
41-
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
41+
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
4242
service.openClientFile(f1.path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectDir);
4343

4444
// Delete config file - should create inferred project and not configured project
4545
host.deleteFile(configFile.path);
46-
host.runQueuedTimeoutCallbacks();
46+
service.runQueuedTimeoutCallbacks();
4747
checkNumberOfProjects(service, { inferredProjects: 1 });
4848
baselineTsserverLogs("configFileSearch", "should use projectRootPath when searching for inferred project again", service);
4949
});
@@ -67,13 +67,13 @@ namespace ts.projectSystem {
6767
const service = createProjectService(host, {
6868
useSingleInferredProject: true,
6969
useInferredProjectPerProjectRoot: true,
70-
logger: createLoggerWithInMemoryLogs(),
70+
logger: createLoggerWithInMemoryLogs(host),
7171
});
7272
service.openClientFile(f1.path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectDir);
7373

7474
// Delete config file - should create inferred project with project root path set
7575
host.deleteFile(configFile.path);
76-
host.runQueuedTimeoutCallbacks();
76+
service.runQueuedTimeoutCallbacks();
7777
baselineTsserverLogs("configFileSearch", "should use projectRootPath when searching for inferred project again 2", service);
7878
});
7979

@@ -89,7 +89,7 @@ namespace ts.projectSystem {
8989
};
9090
function openClientFile(files: File[]) {
9191
const host = createServerHost(files);
92-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
92+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
9393
projectService.openClientFile(file.path, /*fileContent*/ undefined, /*scriptKind*/ undefined, "/a/b/projects/proj");
9494
return { host, projectService };
9595
}
@@ -98,10 +98,10 @@ namespace ts.projectSystem {
9898
const { host, projectService } = openClientFile([file, libFile, tsconfig]);
9999

100100
host.deleteFile(tsconfig.path);
101-
host.runQueuedTimeoutCallbacks();
101+
projectService.runQueuedTimeoutCallbacks();
102102

103103
host.writeFile(tsconfig.path, tsconfig.content);
104-
host.runQueuedTimeoutCallbacks();
104+
projectService.runQueuedTimeoutCallbacks();
105105

106106
baselineTsserverLogs("configFileSearch", "tsconfig for the file exists", projectService);
107107
});
@@ -110,10 +110,10 @@ namespace ts.projectSystem {
110110
const { host, projectService } = openClientFile([file, libFile]);
111111

112112
host.writeFile(tsconfig.path, tsconfig.content);
113-
host.runQueuedTimeoutCallbacks();
113+
projectService.runQueuedTimeoutCallbacks();
114114

115115
host.deleteFile(tsconfig.path);
116-
host.runQueuedTimeoutCallbacks();
116+
projectService.runQueuedTimeoutCallbacks();
117117

118118
baselineTsserverLogs("configFileSearch", "tsconfig for the file does not exist", projectService);
119119
});
@@ -124,7 +124,7 @@ namespace ts.projectSystem {
124124
it(scenario, () => {
125125
const path = `/root/teams/VSCode68/Shared Documents/General/jt-ts-test-workspace/x.js`;
126126
const host = createServerHost([libFile, { path, content: "const x = 10" }], { useCaseSensitiveFileNames: true });
127-
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
127+
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
128128
service.openClientFile(path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectRootPath);
129129
baselineTsserverLogs("configFileSearch", scenario, service);
130130
});

src/testRunner/unittests/tsserver/configuredProjects.ts

+21-20
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace ts.projectSystem {
2525
};
2626

2727
const host = createServerHost([configFile, libFile, file1, file2, file3]);
28-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
28+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
2929
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
3030

3131
assert(configFileName, "should find config file");
@@ -57,7 +57,7 @@ namespace ts.projectSystem {
5757
};
5858

5959
const host = createServerHost([configFile, libFile, file1, file2, file3]);
60-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
60+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
6161
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
6262

6363
assert(configFileName, "should find config file");
@@ -84,17 +84,17 @@ namespace ts.projectSystem {
8484

8585
const host = createServerHost([libFile, commonFile1, commonFile2]);
8686

87-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
87+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
8888
projectService.openClientFile(commonFile1.path);
8989
projectService.openClientFile(commonFile2.path);
9090

9191
// Add a tsconfig file
9292
host.writeFile(configFile.path, configFile.content);
93-
host.checkTimeoutQueueLengthAndRun(2); // load configured project from disk + ensureProjectsForOpenFiles
93+
projectService.checkTimeoutQueueLengthAndRun(2); // load configured project from disk + ensureProjectsForOpenFiles
9494

9595
// remove the tsconfig file
9696
host.deleteFile(configFile.path);
97-
host.checkTimeoutQueueLengthAndRun(1); // Refresh inferred projects
97+
projectService.checkTimeoutQueueLengthAndRun(1); // Refresh inferred projects
9898

9999
baselineTsserverLogs("configuredProjects", "add and then remove a config file in a folder with loose files", projectService);
100100
});
@@ -105,12 +105,12 @@ namespace ts.projectSystem {
105105
content: `{}`
106106
};
107107
const host = createServerHost([commonFile1, libFile, configFile]);
108-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
108+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
109109
projectService.openClientFile(commonFile1.path);
110110

111111
// add a new ts file
112112
host.writeFile(commonFile2.path, commonFile2.content);
113-
host.checkTimeoutQueueLengthAndRun(2);
113+
projectService.checkTimeoutQueueLengthAndRun(2);
114114
baselineTsserverLogs("configuredProjects", "add new files to a configured project without file list", projectService);
115115
});
116116

@@ -537,7 +537,7 @@ namespace ts.projectSystem {
537537

538538
const files = [file1, file2, file3, file4];
539539
const host = createServerHost(files.concat(configFile));
540-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
540+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
541541

542542
projectService.openClientFile(file1.path);
543543
projectService.openClientFile(file2.path);
@@ -548,7 +548,7 @@ namespace ts.projectSystem {
548548
assert.isTrue(configProject1.hasOpenRef()); // file1 and file3
549549

550550
host.writeFile(configFile.path, "{}");
551-
host.runQueuedTimeoutCallbacks();
551+
projectService.runQueuedTimeoutCallbacks();
552552

553553
assert.isTrue(configProject1.hasOpenRef()); // file1, file2, file3
554554
assert.isTrue(projectService.inferredProjects[0].isOrphan());
@@ -577,6 +577,7 @@ namespace ts.projectSystem {
577577
content: "let zz = 1;"
578578
};
579579
host.writeFile(file5.path, file5.content);
580+
projectService.baselineHost("File5 written");
580581
projectService.openClientFile(file5.path);
581582

582583
baselineTsserverLogs("configuredProjects", "Open ref of configured project when open file gets added to the project as part of configured file update", projectService);
@@ -793,7 +794,7 @@ declare var console: {
793794
};`
794795
};
795796
const host = createServerHost([barConfig, barIndex, fooConfig, fooIndex, barSymLink, lib2017, libDom]);
796-
const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() });
797+
const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) });
797798
openFilesForSession([fooIndex, barIndex], session);
798799
verifyGetErrRequest({ session, host, files: [barIndex, fooIndex] });
799800
baselineTsserverLogs("configuredProjects", "when multiple projects are open detects correct default project", session);
@@ -851,7 +852,7 @@ declare var console: {
851852
]);
852853
const session = createSession(host, {
853854
canUseEvents: true,
854-
logger: createLoggerWithInMemoryLogs(),
855+
logger: createLoggerWithInMemoryLogs(host),
855856
});
856857
session.executeCommandSeq<protocol.OpenRequest>({
857858
command: protocol.CommandTypes.Open,
@@ -1017,7 +1018,7 @@ foo();`
10171018
};
10181019

10191020
const host = createServerHost([alphaExtendedConfig, aConfig, aFile, bravoExtendedConfig, bConfig, bFile, ...(additionalFiles || emptyArray)]);
1020-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
1021+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
10211022
return { host, projectService, aFile, bFile, aConfig, bConfig, alphaExtendedConfig, bravoExtendedConfig };
10221023
}
10231024

@@ -1032,23 +1033,23 @@ foo();`
10321033
strict: true
10331034
}
10341035
}));
1035-
host.checkTimeoutQueueLengthAndRun(3);
1036+
projectService.checkTimeoutQueueLengthAndRun(3);
10361037

10371038
host.writeFile(bravoExtendedConfig.path, JSON.stringify({
10381039
extends: "./alpha.tsconfig.json",
10391040
compilerOptions: {
10401041
strict: false
10411042
}
10421043
}));
1043-
host.checkTimeoutQueueLengthAndRun(2);
1044+
projectService.checkTimeoutQueueLengthAndRun(2);
10441045

10451046
host.writeFile(bConfig.path, JSON.stringify({
10461047
extends: "../extended/alpha.tsconfig.json",
10471048
}));
1048-
host.checkTimeoutQueueLengthAndRun(2);
1049+
projectService.checkTimeoutQueueLengthAndRun(2);
10491050

10501051
host.writeFile(alphaExtendedConfig.path, "{}");
1051-
host.checkTimeoutQueueLengthAndRun(3);
1052+
projectService.checkTimeoutQueueLengthAndRun(3);
10521053
baselineTsserverLogs("configuredProjects", "should watch the extended configs of multiple projects", projectService);
10531054
});
10541055

@@ -1178,12 +1179,12 @@ foo();`
11781179
};
11791180
const files = [file1, file2a, configFile, libFile];
11801181
const host = createServerHost(files);
1181-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
1182+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
11821183
projectService.openClientFile(file1.path);
11831184

11841185
host.writeFile(file2.path, file2.content);
1185-
host.runQueuedTimeoutCallbacks(); // Scheduled invalidation of resolutions
1186-
host.runQueuedTimeoutCallbacks(); // Actual update
1186+
projectService.runQueuedTimeoutCallbacks(); // Scheduled invalidation of resolutions
1187+
projectService.runQueuedTimeoutCallbacks(); // Actual update
11871188

11881189
// On next file open the files file2a should be closed and not watched any more
11891190
projectService.openClientFile(file2.path);
@@ -1217,7 +1218,7 @@ foo();`
12171218
nonLibFiles.forEach(f => f.path = root + f.path);
12181219
const files = nonLibFiles.concat(libFile);
12191220
const host = createServerHost(files);
1220-
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
1221+
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
12211222
projectService.openClientFile(file1.path);
12221223
baselineTsserverLogs("configuredProjects", "failed lookup locations uses parent most node_modules directory", projectService);
12231224
});

src/testRunner/unittests/tsserver/events/projectLanguageServiceState.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,11 @@ namespace ts.projectSystem {
6868
content: "{}"
6969
};
7070
const host = createServerHost([f1, f2, f3, libFile, config]);
71-
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
71+
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
7272
service.openClientFile(f1.path);
7373
const project = service.configuredProjects.get(config.path)!;
74-
service.logger.logs.push(`languageServiceEnabled: ${project.languageServiceEnabled}`);
75-
service.logger.logs.push(`lastFileExceededProgramSize: ${project.lastFileExceededProgramSize}`);
74+
service.logger.info(`languageServiceEnabled: ${project.languageServiceEnabled}`);
75+
service.logger.info(`lastFileExceededProgramSize: ${project.lastFileExceededProgramSize}`);
7676
baselineTsserverLogs("projectLanguageServiceStateEvent", "large file size is determined correctly", service);
7777
});
7878
});

0 commit comments

Comments
 (0)