Skip to content

Commit

Permalink
Baseline host state when baselining tsserver tests (#50678)
Browse files Browse the repository at this point in the history
* 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 <typescriptbot@microsoft.com>
  • Loading branch information
sheetalkamat and typescript-bot committed Sep 8, 2022
1 parent 2f1ba45 commit 7c918fb
Show file tree
Hide file tree
Showing 419 changed files with 336,503 additions and 43,072 deletions.
22 changes: 11 additions & 11 deletions src/testRunner/unittests/tsserver/cachingFileSystemInformation.ts
Expand Up @@ -76,7 +76,7 @@ namespace ts.projectSystem {
};

const host = createServerHost([root, imported]);
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
projectService.setCompilerOptionsForInferredProjects({ module: ModuleKind.AMD, noLib: true });
projectService.openClientFile(root.path);
const project = projectService.inferredProjects[0];
Expand Down Expand Up @@ -134,7 +134,7 @@ namespace ts.projectSystem {
};

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

host.writeFile(imported.path, imported.content);
host.runQueuedTimeoutCallbacks();
projectService.runQueuedTimeoutCallbacks();
logSemanticDiagnostics(projectService, project, root);
logCacheAndClear(projectService.logger);
baselineTsserverLogs("cachingFileSystemInformation", "loads missing files from disk", projectService);
Expand Down Expand Up @@ -195,7 +195,7 @@ namespace ts.projectSystem {
};
const projectFiles = [clientFile, anotherModuleFile, moduleFile, tsconfigFile];
const host = createServerHost(projectFiles);
const session = createSession(host, { logger: createLoggerWithInMemoryLogs() });
const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) });
openFilesForSession([clientFile], session);
const logCacheAndClear = createLoggerTrackingHostCalls(host);

Expand Down Expand Up @@ -273,14 +273,14 @@ namespace ts.projectSystem {
};
const projectFiles = [file1, file2, es2016LibFile, tsconfigFile];
const host = createServerHost(projectFiles, { useCaseSensitiveFileNames });
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
projectService.openClientFile(file1.path);

const logCacheAndClear = createLoggerTrackingHostCalls(host);

// Create file cookie.ts
host.writeFile(file3.path, file3.content);
host.runQueuedTimeoutCallbacks();
projectService.runQueuedTimeoutCallbacks();
logCacheAndClear(projectService.logger);

projectService.openClientFile(file3.path);
Expand Down Expand Up @@ -383,7 +383,7 @@ namespace ts.projectSystem {
`
});
const host = createServerHost([app, libFile, tsconfigJson, packageJson]);
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
projectService.setHostConfiguration({ preferences: { includePackageJsonAutoImports: "off" } });
projectService.openClientFile(app.path);

Expand Down Expand Up @@ -479,15 +479,15 @@ namespace ts.projectSystem {
if (npmInstallComplete || timeoutDuringPartialInstallation) {
if (timeoutQueueLengthWhenRunningTimeouts) {
// Expected project update
host.checkTimeoutQueueLengthAndRun(timeoutQueueLengthWhenRunningTimeouts + 1); // Scheduled invalidation of resolutions
host.runQueuedTimeoutCallbacks(); // Actual update
projectService.checkTimeoutQueueLengthAndRun(timeoutQueueLengthWhenRunningTimeouts + 1); // Scheduled invalidation of resolutions
projectService.runQueuedTimeoutCallbacks(); // Actual update
}
else {
host.checkTimeoutQueueLengthAndRun(timeoutQueueLengthWhenRunningTimeouts);
projectService.checkTimeoutQueueLengthAndRun(timeoutQueueLengthWhenRunningTimeouts);
}
}
else {
host.checkTimeoutQueueLength(3);
projectService.checkTimeoutQueueLength(3);
}
}
}
Expand Down
20 changes: 10 additions & 10 deletions src/testRunner/unittests/tsserver/configFileSearch.ts
Expand Up @@ -38,12 +38,12 @@ namespace ts.projectSystem {
content: "{}"
};
const host = createServerHost([f1, libFile, configFile, configFile2]);
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
service.openClientFile(f1.path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectDir);

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

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

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

host.deleteFile(tsconfig.path);
host.runQueuedTimeoutCallbacks();
projectService.runQueuedTimeoutCallbacks();

host.writeFile(tsconfig.path, tsconfig.content);
host.runQueuedTimeoutCallbacks();
projectService.runQueuedTimeoutCallbacks();

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

host.writeFile(tsconfig.path, tsconfig.content);
host.runQueuedTimeoutCallbacks();
projectService.runQueuedTimeoutCallbacks();

host.deleteFile(tsconfig.path);
host.runQueuedTimeoutCallbacks();
projectService.runQueuedTimeoutCallbacks();

baselineTsserverLogs("configFileSearch", "tsconfig for the file does not exist", projectService);
});
Expand All @@ -124,7 +124,7 @@ namespace ts.projectSystem {
it(scenario, () => {
const path = `/root/teams/VSCode68/Shared Documents/General/jt-ts-test-workspace/x.js`;
const host = createServerHost([libFile, { path, content: "const x = 10" }], { useCaseSensitiveFileNames: true });
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
service.openClientFile(path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectRootPath);
baselineTsserverLogs("configFileSearch", scenario, service);
});
Expand Down
41 changes: 21 additions & 20 deletions src/testRunner/unittests/tsserver/configuredProjects.ts
Expand Up @@ -25,7 +25,7 @@ namespace ts.projectSystem {
};

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

assert(configFileName, "should find config file");
Expand Down Expand Up @@ -57,7 +57,7 @@ namespace ts.projectSystem {
};

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

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

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

const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
projectService.openClientFile(commonFile1.path);
projectService.openClientFile(commonFile2.path);

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

// remove the tsconfig file
host.deleteFile(configFile.path);
host.checkTimeoutQueueLengthAndRun(1); // Refresh inferred projects
projectService.checkTimeoutQueueLengthAndRun(1); // Refresh inferred projects

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

// add a new ts file
host.writeFile(commonFile2.path, commonFile2.content);
host.checkTimeoutQueueLengthAndRun(2);
projectService.checkTimeoutQueueLengthAndRun(2);
baselineTsserverLogs("configuredProjects", "add new files to a configured project without file list", projectService);
});

Expand Down Expand Up @@ -537,7 +537,7 @@ namespace ts.projectSystem {

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

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

host.writeFile(configFile.path, "{}");
host.runQueuedTimeoutCallbacks();
projectService.runQueuedTimeoutCallbacks();

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

baselineTsserverLogs("configuredProjects", "Open ref of configured project when open file gets added to the project as part of configured file update", projectService);
Expand Down Expand Up @@ -793,7 +794,7 @@ declare var console: {
};`
};
const host = createServerHost([barConfig, barIndex, fooConfig, fooIndex, barSymLink, lib2017, libDom]);
const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() });
const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) });
openFilesForSession([fooIndex, barIndex], session);
verifyGetErrRequest({ session, host, files: [barIndex, fooIndex] });
baselineTsserverLogs("configuredProjects", "when multiple projects are open detects correct default project", session);
Expand Down Expand Up @@ -851,7 +852,7 @@ declare var console: {
]);
const session = createSession(host, {
canUseEvents: true,
logger: createLoggerWithInMemoryLogs(),
logger: createLoggerWithInMemoryLogs(host),
});
session.executeCommandSeq<protocol.OpenRequest>({
command: protocol.CommandTypes.Open,
Expand Down Expand Up @@ -1017,7 +1018,7 @@ foo();`
};

const host = createServerHost([alphaExtendedConfig, aConfig, aFile, bravoExtendedConfig, bConfig, bFile, ...(additionalFiles || emptyArray)]);
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
return { host, projectService, aFile, bFile, aConfig, bConfig, alphaExtendedConfig, bravoExtendedConfig };
}

Expand All @@ -1032,23 +1033,23 @@ foo();`
strict: true
}
}));
host.checkTimeoutQueueLengthAndRun(3);
projectService.checkTimeoutQueueLengthAndRun(3);

host.writeFile(bravoExtendedConfig.path, JSON.stringify({
extends: "./alpha.tsconfig.json",
compilerOptions: {
strict: false
}
}));
host.checkTimeoutQueueLengthAndRun(2);
projectService.checkTimeoutQueueLengthAndRun(2);

host.writeFile(bConfig.path, JSON.stringify({
extends: "../extended/alpha.tsconfig.json",
}));
host.checkTimeoutQueueLengthAndRun(2);
projectService.checkTimeoutQueueLengthAndRun(2);

host.writeFile(alphaExtendedConfig.path, "{}");
host.checkTimeoutQueueLengthAndRun(3);
projectService.checkTimeoutQueueLengthAndRun(3);
baselineTsserverLogs("configuredProjects", "should watch the extended configs of multiple projects", projectService);
});

Expand Down Expand Up @@ -1178,12 +1179,12 @@ foo();`
};
const files = [file1, file2a, configFile, libFile];
const host = createServerHost(files);
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
projectService.openClientFile(file1.path);

host.writeFile(file2.path, file2.content);
host.runQueuedTimeoutCallbacks(); // Scheduled invalidation of resolutions
host.runQueuedTimeoutCallbacks(); // Actual update
projectService.runQueuedTimeoutCallbacks(); // Scheduled invalidation of resolutions
projectService.runQueuedTimeoutCallbacks(); // Actual update

// On next file open the files file2a should be closed and not watched any more
projectService.openClientFile(file2.path);
Expand Down Expand Up @@ -1217,7 +1218,7 @@ foo();`
nonLibFiles.forEach(f => f.path = root + f.path);
const files = nonLibFiles.concat(libFile);
const host = createServerHost(files);
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
projectService.openClientFile(file1.path);
baselineTsserverLogs("configuredProjects", "failed lookup locations uses parent most node_modules directory", projectService);
});
Expand Down
Expand Up @@ -68,11 +68,11 @@ namespace ts.projectSystem {
content: "{}"
};
const host = createServerHost([f1, f2, f3, libFile, config]);
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) });
service.openClientFile(f1.path);
const project = service.configuredProjects.get(config.path)!;
service.logger.logs.push(`languageServiceEnabled: ${project.languageServiceEnabled}`);
service.logger.logs.push(`lastFileExceededProgramSize: ${project.lastFileExceededProgramSize}`);
service.logger.info(`languageServiceEnabled: ${project.languageServiceEnabled}`);
service.logger.info(`lastFileExceededProgramSize: ${project.lastFileExceededProgramSize}`);
baselineTsserverLogs("projectLanguageServiceStateEvent", "large file size is determined correctly", service);
});
});
Expand Down

0 comments on commit 7c918fb

Please sign in to comment.