Skip to content

Commit 1ca93fe

Browse files
authored
Tests for more state and remove some unnecessary logs (#57324)
1 parent c790dc1 commit 1ca93fe

File tree

679 files changed

+9894
-405
lines changed

Some content is hidden

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

679 files changed

+9894
-405
lines changed

src/harness/projectServiceStateLogger.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import {
88
import {
99
AutoImportProviderProject,
1010
AuxiliaryProject,
11+
isBackgroundProject,
12+
isConfiguredProject,
1113
LogLevel,
1214
Project,
1315
ProjectKind,
@@ -21,6 +23,10 @@ import {
2123
interface ProjectData {
2224
projectStateVersion: Project["projectStateVersion"];
2325
projectProgramVersion: Project["projectProgramVersion"];
26+
dirty: Project["dirty"];
27+
isClosed: boolean;
28+
isOrphan: boolean;
29+
noOpenRef: boolean;
2430
autoImportProviderHost: Project["autoImportProviderHost"];
2531
noDtsResolutionProject: Project["noDtsResolutionProject"];
2632
originalConfiguredProjects: Project["originalConfiguredProjects"];
@@ -83,6 +89,10 @@ export function patchServiceForStateBaseline(service: ProjectService) {
8389
const projectPropertyLogs = [] as string[];
8490
projectDiff = printProperty(PrintPropertyWhen.Always, data, "projectStateVersion", project.projectStateVersion, projectDiff, projectPropertyLogs);
8591
projectDiff = printProperty(PrintPropertyWhen.Always, data, "projectProgramVersion", project.projectProgramVersion, projectDiff, projectPropertyLogs);
92+
projectDiff = printProperty(PrintPropertyWhen.TruthyOrChangedOrNew, data, "dirty", project.dirty, projectDiff, projectPropertyLogs);
93+
projectDiff = printProperty(PrintPropertyWhen.TruthyOrChangedOrNew, data, "isClosed", project.isClosed(), projectDiff, projectPropertyLogs);
94+
projectDiff = printProperty(PrintPropertyWhen.TruthyOrChangedOrNew, data, "isOrphan", !isBackgroundProject(project) && project.isOrphan(), projectDiff, projectPropertyLogs);
95+
projectDiff = printProperty(PrintPropertyWhen.TruthyOrChangedOrNew, data, "noOpenRef", isConfiguredProject(project) && !project.hasOpenRef(), projectDiff, projectPropertyLogs);
8696
projectDiff = printProperty(PrintPropertyWhen.DefinedOrChangedOrNew, data, "autoImportProviderHost", project.autoImportProviderHost, projectDiff, projectPropertyLogs, project.autoImportProviderHost ? project.autoImportProviderHost.projectName : project.autoImportProviderHost);
8797
projectDiff = printProperty(PrintPropertyWhen.DefinedOrChangedOrNew, data, "noDtsResolutionProject", project.noDtsResolutionProject, projectDiff, projectPropertyLogs, project.noDtsResolutionProject ? project.noDtsResolutionProject.projectName : project.noDtsResolutionProject);
8898
return printSetPropertyAndCreateStatementLog(
@@ -100,6 +110,10 @@ export function patchServiceForStateBaseline(service: ProjectService) {
100110
project => ({
101111
projectStateVersion: project.projectStateVersion,
102112
projectProgramVersion: project.projectProgramVersion,
113+
dirty: project.dirty,
114+
isClosed: project.isClosed(),
115+
isOrphan: !isBackgroundProject(project) && project.isOrphan(),
116+
noOpenRef: isConfiguredProject(project) && !project.hasOpenRef(),
103117
autoImportProviderHost: project.autoImportProviderHost,
104118
noDtsResolutionProject: project.noDtsResolutionProject,
105119
originalConfiguredProjects: project.originalConfiguredProjects && new Set(project.originalConfiguredProjects),
@@ -127,7 +141,7 @@ export function patchServiceForStateBaseline(service: ProjectService) {
127141
}
128142
return printSetPropertyAndCreateStatementLog(
129143
logs,
130-
`${info.fileName}${isOpen ? " (Open)" : ""}`,
144+
`${info.fileName}${info.isDynamic ? " (Dynamic)" : ""}${isOpen ? " (Open)" : ""}`,
131145
PrintPropertyWhen.Always,
132146
"containingProjects",
133147
infoPropertyLogs,

src/testRunner/unittests/helpers/tsserver.ts

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,6 @@ export function baselineTsserverLogs(scenario: string, subScenario: string, sess
3434
Harness.Baseline.runBaseline(`tsserver/${scenario}/${subScenario.split(" ").join("-")}.js`, sessionOrService.logger.logs.join("\r\n"));
3535
}
3636

37-
export function appendAllScriptInfos(session: TestSession) {
38-
session.logger.log("");
39-
session.logger.log(`ScriptInfos:`);
40-
session.getProjectService().filenameToScriptInfo.forEach(info => session.logger.log(`path: ${info.path} fileName: ${info.fileName}`));
41-
session.logger.log("");
42-
}
43-
4437
export function toExternalFile(fileName: string): ts.server.protocol.ExternalFile {
4538
return { fileName };
4639
}
@@ -486,21 +479,9 @@ export function verifyGetErrScenario(scenario: VerifyGetErrScenario) {
486479
verifyErrorsUsingSyncMethods(scenario);
487480
}
488481

489-
export function verifyDynamic(session: TestSession, path: string) {
490-
session.logger.log(`${path} isDynamic:: ${session.getProjectService().filenameToScriptInfo.get(path)!.isDynamic}`);
491-
}
492-
493482
export function createHostWithSolutionBuild(files: readonly FileOrFolderOrSymLink[], rootNames: readonly string[]) {
494483
const host = createServerHost(files);
495484
// ts build should succeed
496485
ensureErrorFreeBuild(host, rootNames);
497486
return host;
498487
}
499-
500-
export function logInferredProjectsOrphanStatus(session: TestSession) {
501-
session.getProjectService().inferredProjects.forEach(inferredProject => session.logger.log(`Inferred project: ${inferredProject.projectName} isOrphan:: ${inferredProject.isOrphan()} isClosed: ${inferredProject.isClosed()}`));
502-
}
503-
504-
export function logConfiguredProjectsHasOpenRefStatus(session: TestSession) {
505-
session.getProjectService().configuredProjects.forEach(configuredProject => session.logger.log(`Configured project: ${configuredProject.projectName} hasOpenRef:: ${configuredProject.hasOpenRef()} isClosed: ${configuredProject.isClosed()}`));
506-
}

src/testRunner/unittests/tsserver/autoImportProvider.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,7 @@ describe("unittests:: tsserver:: autoImportProvider", () => {
9595
it("Auto-importable file is in inferred project until imported", () => {
9696
const { session, updateFile } = setup([angularFormsDts, angularFormsPackageJson, tsconfig, packageJson, indexTs]);
9797
openFilesForSession([angularFormsDts], session);
98-
session.logger.log(`Default Project for ${angularFormsDts.path}:: ${session.getProjectService().getDefaultProjectForFile(angularFormsDts.path as ts.server.NormalizedPath, /*ensureProject*/ true)?.projectName}`);
99-
10098
updateFile(indexTs.path, "import '@angular/forms'");
101-
session.logger.log(`Default Project for ${angularFormsDts.path}:: ${session.getProjectService().getDefaultProjectForFile(angularFormsDts.path as ts.server.NormalizedPath, /*ensureProject*/ true)?.projectName}`);
102-
10399
assert.isUndefined(session.getProjectService().configuredProjects.get(tsconfig.path)!.getLanguageService().getAutoImportProvider());
104100
session.host.baselineHost("After getAutoImportProvider");
105101
baselineTsserverLogs("autoImportProvider", "Auto-importable file is in inferred project until imported", session);

src/testRunner/unittests/tsserver/compileOnSave.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,11 +1022,6 @@ describe("unittests:: tsserver:: compileOnSave:: CompileOnSaveAffectedFileListRe
10221022
});
10231023
}
10241024

1025-
function logDirtyOfProjects(session: TestSession) {
1026-
session.logger.log(`Project1 is dirty: ${session.getProjectService().configuredProjects.get(`/user/username/projects/myproject/app1/tsconfig.json`)!.dirty}`);
1027-
session.logger.log(`Project2 is dirty: ${session.getProjectService().configuredProjects.get(`/user/username/projects/myproject/app2/tsconfig.json`)!.dirty}`);
1028-
}
1029-
10301025
function verify(subScenario: string, commandArgs: ts.server.protocol.FileRequestArgs) {
10311026
it(subScenario, () => {
10321027
const core: File = {
@@ -1063,12 +1058,10 @@ describe("unittests:: tsserver:: compileOnSave:: CompileOnSaveAffectedFileListRe
10631058
openFilesForSession([app1, app2, core], session);
10641059
insertString(session, app1);
10651060
insertString(session, app2);
1066-
logDirtyOfProjects(session);
10671061
session.executeCommandSeq<ts.server.protocol.CompileOnSaveAffectedFileListRequest>({
10681062
command: ts.server.protocol.CommandTypes.CompileOnSaveAffectedFileList,
10691063
arguments: commandArgs,
10701064
});
1071-
logDirtyOfProjects(session);
10721065
baselineTsserverLogs("compileOnSave", subScenario, session);
10731066
});
10741067
}

src/testRunner/unittests/tsserver/configuredProjects.ts

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import {
1212
import {
1313
baselineTsserverLogs,
1414
closeFilesForSession,
15-
logConfiguredProjectsHasOpenRefStatus,
16-
logInferredProjectsOrphanStatus,
1715
openFilesForSession,
1816
TestSession,
1917
verifyGetErrRequest,
@@ -230,8 +228,6 @@ describe("unittests:: tsserver:: ConfiguredProjects", () => {
230228
host.runQueuedTimeoutCallbacks();
231229

232230
// will not remove project 1
233-
logInferredProjectsOrphanStatus(session);
234-
235231
// Open random file and it will reuse first inferred project
236232
openFilesForSession([randomFile], session);
237233
baselineTsserverLogs("configuredProjects", "should properly handle module resolution changes in config file", session);
@@ -301,13 +297,8 @@ describe("unittests:: tsserver:: ConfiguredProjects", () => {
301297
const host = createServerHost([file1, file2, configFile, libFile]);
302298
const session = new TestSession({ host, useSingleInferredProject: true });
303299
openFilesForSession([file1], session);
304-
logConfiguredProjectsHasOpenRefStatus(session); // file1
305-
306300
closeFilesForSession([file1], session);
307-
logConfiguredProjectsHasOpenRefStatus(session); // No open files
308-
309301
openFilesForSession([file2], session);
310-
logConfiguredProjectsHasOpenRefStatus(session); // file2
311302
baselineTsserverLogs("configuredProjects", "should reuse same project if file is opened from the configured project that has no open files", session);
312303
});
313304

@@ -328,13 +319,8 @@ describe("unittests:: tsserver:: ConfiguredProjects", () => {
328319
const host = createServerHost([file1, configFile, libFile]);
329320
const session = new TestSession({ host, useSingleInferredProject: true });
330321
openFilesForSession([file1], session);
331-
logConfiguredProjectsHasOpenRefStatus(session); // file1
332-
333322
closeFilesForSession([file1], session);
334-
logConfiguredProjectsHasOpenRefStatus(session); // No files
335-
336323
openFilesForSession([libFile], session);
337-
logConfiguredProjectsHasOpenRefStatus(session); // No files + project closed
338324
baselineTsserverLogs("configuredProjects", "should not close configured project after closing last open file, but should be closed on next file open if its not the file from same project", session);
339325
});
340326

@@ -362,7 +348,6 @@ describe("unittests:: tsserver:: ConfiguredProjects", () => {
362348

363349
host.writeFile(configFile.path, configFile.content);
364350
host.runQueuedTimeoutCallbacks(); // load configured project from disk + ensureProjectsForOpenFiles
365-
logInferredProjectsOrphanStatus(session);
366351
baselineTsserverLogs("configuredProjects", "open file become a part of configured project if it is referenced from root file", session);
367352
});
368353

@@ -466,24 +451,11 @@ describe("unittests:: tsserver:: ConfiguredProjects", () => {
466451
const session = new TestSession(host);
467452
openFilesForSession([file1, file2, file3, file4], session);
468453

469-
logConfiguredProjectsHasOpenRefStatus(session); // file1 and file3
470-
471454
host.writeFile(configFile.path, "{}");
472455
host.runQueuedTimeoutCallbacks();
473-
474-
logConfiguredProjectsHasOpenRefStatus(session); // file1, file2, file3
475-
logInferredProjectsOrphanStatus(session);
476-
477456
closeFilesForSession([file1, file2, file4], session);
478-
479-
logConfiguredProjectsHasOpenRefStatus(session); // file3
480-
logInferredProjectsOrphanStatus(session);
481-
482457
openFilesForSession([file4], session);
483-
logConfiguredProjectsHasOpenRefStatus(session); // file3
484-
485458
closeFilesForSession([file3], session);
486-
logConfiguredProjectsHasOpenRefStatus(session); // No files
487459

488460
const file5: File = {
489461
path: "/file5.ts",
@@ -523,23 +495,15 @@ describe("unittests:: tsserver:: ConfiguredProjects", () => {
523495
const host = createServerHost(hostFiles);
524496
const session = new TestSession(host);
525497
openFilesForSession([file1, file2, file3], session);
526-
527-
logConfiguredProjectsHasOpenRefStatus(session); // file1 and file3
528-
529498
closeFilesForSession([file1, file3], session);
530-
logConfiguredProjectsHasOpenRefStatus(session); // No files
531499

532500
host.writeFile(configFile.path, "{}");
533501
session.host.baselineHost("configFile updated");
534502
// Time out is not yet run so there is project update pending
535-
logConfiguredProjectsHasOpenRefStatus(session); // Pending update and file2 might get into the project
536503

537504
openFilesForSession([file4], session);
538-
logConfiguredProjectsHasOpenRefStatus(session); // Pending update and F2 might get into the project
539505

540506
host.runQueuedTimeoutCallbacks();
541-
logConfiguredProjectsHasOpenRefStatus(session); // file2
542-
logInferredProjectsOrphanStatus(session);
543507
baselineTsserverLogs("configuredProjects", "Open ref of configured project when open file gets added to the project as part of configured file update buts its open file references are all closed when the update happens", session);
544508
});
545509

@@ -566,29 +530,13 @@ describe("unittests:: tsserver:: ConfiguredProjects", () => {
566530

567531
const session = new TestSession(host);
568532
openFilesForSession([f1], session);
569-
logConfiguredProjectsHasOpenRefStatus(session); // f1
570-
571533
closeFilesForSession([f1], session);
572-
logConfiguredProjectsHasOpenRefStatus(session); // No files
573-
574-
for (const f of [f1, f2, f3]) {
575-
// All the script infos should be present and contain the project since it is still alive.
576-
const scriptInfo = session.getProjectService().getScriptInfoForNormalizedPath(ts.server.toNormalizedPath(f.path))!;
577-
session.logger.log(`Containing projects for ${f.path}:: ${scriptInfo.containingProjects.map(p => p.projectName).join(",")}`);
578-
}
579-
580534
const f4 = {
581535
path: "/aa.js",
582536
content: "var x = 1",
583537
};
584538
host.writeFile(f4.path, f4.content);
585539
openFilesForSession([f4], session);
586-
logConfiguredProjectsHasOpenRefStatus(session); // No files
587-
588-
for (const f of [f1, f2, f3]) {
589-
// All the script infos should not be present since the project is closed and orphan script infos are collected
590-
assert.isUndefined(session.getProjectService().getScriptInfoForNormalizedPath(ts.server.toNormalizedPath(f.path)));
591-
}
592540
baselineTsserverLogs("configuredProjects", "files are properly detached when language service is disabled", session);
593541
});
594542

src/testRunner/unittests/tsserver/dynamicFiles.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {
66
protocolFileLocationFromSubstring,
77
setCompilerOptionsForInferredProjectsRequestForSession,
88
TestSession,
9-
verifyDynamic,
109
} from "../helpers/tsserver";
1110
import {
1211
createServerHost,
@@ -25,8 +24,6 @@ var x = 10;`,
2524
const host = createServerHost([libFile]);
2625
const session = new TestSession(host);
2726
openFilesForSession([{ file, content: file.content }], session);
28-
verifyDynamic(session, session.getProjectService().toPath(file.path));
29-
3027
baselineTsserverLogs("dynamicFiles", subscenario, session);
3128
});
3229
}
@@ -50,7 +47,6 @@ describe("unittests:: tsserver:: dynamicFiles:: Untitled files", () => {
5047
projectRootPath: "/proj",
5148
},
5249
});
53-
verifyDynamic(session, `/proj/untitled:^untitled-1`);
5450
session.executeCommandSeq<ts.server.protocol.CodeFixRequest>({
5551
command: ts.server.protocol.CommandTypes.GetCodeFixes,
5652
arguments: {
@@ -77,7 +73,6 @@ describe("unittests:: tsserver:: dynamicFiles:: Untitled files", () => {
7773
content: "const x = 10;",
7874
projectRootPath: "/user/username/projects/myproject",
7975
}], session);
80-
verifyDynamic(session, `/user/username/projects/myproject/${untitledFile}`);
8176

8277
const untitled: File = {
8378
path: `/user/username/projects/myproject/Untitled-1.ts`,
@@ -97,7 +92,6 @@ describe("unittests:: tsserver:: dynamicFiles:: Untitled files", () => {
9792
content: "const x = 10;",
9893
projectRootPath: "/user/username/projects/myproject",
9994
}], session);
100-
verifyDynamic(session, `/user/username/projects/myproject/${untitledFile}`);
10195
baselineTsserverLogs("dynamicFiles", "opening untitled files", session);
10296
});
10397

@@ -117,7 +111,6 @@ describe("unittests:: tsserver:: dynamicFiles:: Untitled files", () => {
117111
content: "const x = 10;",
118112
projectRootPath: "/user/username/projects/myproject",
119113
}], session);
120-
verifyDynamic(session, `/user/username/projects/myproject/${untitledFile}`);
121114

122115
// Close untitled file
123116
closeFilesForSession([untitledFile], session);
@@ -173,8 +166,6 @@ describe("unittests:: tsserver:: dynamicFiles:: ", () => {
173166
}, session);
174167
openFilesForSession([{ file: file.path, content: "var x = 10;" }], session);
175168

176-
verifyDynamic(session, `/${file.path}`);
177-
178169
session.executeCommandSeq<ts.server.protocol.QuickInfoRequest>({
179170
command: ts.server.protocol.CommandTypes.Quickinfo,
180171
arguments: protocolFileLocationFromSubstring(file, "x"),
@@ -202,8 +193,6 @@ describe("unittests:: tsserver:: dynamicFiles:: ", () => {
202193
const session = new TestSession({ host, useInferredProjectPerProjectRoot: true });
203194
openFilesForSession([{ file: file.path, projectRootPath: "/user/username/projects/myproject" }], session);
204195

205-
verifyDynamic(session, `/user/username/projects/myproject/${file.path}`);
206-
207196
session.executeCommandSeq<ts.server.protocol.OutliningSpansRequest>({
208197
command: ts.server.protocol.CommandTypes.GetOutliningSpans,
209198
arguments: {

0 commit comments

Comments
 (0)