From 29ba4012ad2f4adababbfdc7eed65770948461d0 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 6 Sep 2022 15:09:27 -0700 Subject: [PATCH 1/8] Some more formatting to have baselines similar to what we have in tsserver.log --- .../tsserver/cachingFileSystemInformation.ts | 10 +- .../unittests/tsserver/configFileSearch.ts | 8 +- .../unittests/tsserver/configuredProjects.ts | 20 +- .../events/projectLanguageServiceState.ts | 2 +- .../events/projectUpdatedInBackground.ts | 2 +- .../forceConsistentCasingInFileNames.ts | 4 +- src/testRunner/unittests/tsserver/helpers.ts | 51 +- .../unittests/tsserver/inferredProjects.ts | 2 +- .../unittests/tsserver/moduleResolution.ts | 2 +- .../tsserver/moduleSpecifierCache.ts | 6 +- src/testRunner/unittests/tsserver/navTo.ts | 4 +- src/testRunner/unittests/tsserver/openFile.ts | 2 +- .../tsserver/partialSemanticServer.ts | 6 +- .../unittests/tsserver/projectErrors.ts | 28 +- .../unittests/tsserver/projectReferences.ts | 30 +- .../tsserver/projectReferencesSourcemap.ts | 12 +- src/testRunner/unittests/tsserver/projects.ts | 12 +- .../tsserver/projectsWithReferences.ts | 6 +- .../unittests/tsserver/resolutionCache.ts | 30 +- src/testRunner/unittests/tsserver/symLinks.ts | 4 +- .../unittests/tsserver/syntacticServer.ts | 2 +- .../unittests/tsserver/typingsInstaller.ts | 6 +- .../unittests/tsserver/watchEnvironment.ts | 33 +- .../loads-missing-files-from-disk.js | 96 +- ...-when-timeout-occurs-after-installation.js | 1268 +++++++-------- ...n-timeout-occurs-inbetween-installation.js | 1356 ++++++++--------- ...-file-with-case-insensitive-file-system.js | 150 +- ...ig-file-with-case-sensitive-file-system.js | 150 +- .../when-calling-goto-definition-of-module.js | 104 +- .../works-using-legacy-resolution-logic.js | 158 +- ...-searching-for-inferred-project-again-2.js | 130 +- ...en-searching-for-inferred-project-again.js | 134 +- .../tsconfig-for-the-file-does-not-exist.js | 234 +-- .../tsconfig-for-the-file-exists.js | 236 +-- .../when-projectRootPath-is-not-present.js | 56 +- ...esent-but-file-is-not-from-project-root.js | 56 +- ...oject-as-part-of-configured-file-update.js | 588 +++---- ...onfig-file-in-a-folder-with-loose-files.js | 322 ++-- ...-a-configured-project-without-file-list.js | 98 +- ...on-reflected-when-specifying-files-list.js | 132 +- ...e-configured-project-with-the-file-list.js | 48 +- ...te-configured-project-without-file-list.js | 48 +- ...er-old-one-without-file-being-in-config.js | 150 +- ...invoked,-ask-errors-on-it-after-old-one.js | 120 +- ...re-old-one-without-file-being-in-config.js | 150 +- ...nvoked,-ask-errors-on-it-before-old-one.js | 120 +- ...er-old-one-without-file-being-in-config.js | 150 +- ...invoked,-ask-errors-on-it-after-old-one.js | 172 +-- ...re-old-one-without-file-being-in-config.js | 150 +- ...nvoked,-ask-errors-on-it-before-old-one.js | 172 +-- ...uses-parent-most-node_modules-directory.js | 62 +- ...the-extended-configs-of-closed-projects.js | 396 ++--- ...e-extended-configs-of-multiple-projects.js | 430 +++--- ...re-open-detects-correct-default-project.js | 150 +- ...nging-module-name-with-different-casing.js | 94 +- ...hen-renaming-file-with-different-casing.js | 176 +-- .../create-inferred-project.js | 46 +- ...en-package-json-with-type-module-exists.js | 654 ++++---- .../package-json-file-is-edited.js | 642 ++++---- ...n-in-contained-node_modules-directories.js | 216 +-- ...ate-symbols-when-searching-all-projects.js | 114 +- .../navTo/should-de-duplicate-symbols.js | 120 +- ...-directives,-they-are-handled-correcrly.js | 100 +- .../files-are-added-to-inferred-project.js | 92 +- ...ternal-module-name-resolution-is-reused.js | 98 +- ...-include-auto-type-reference-directives.js | 30 +- ...de-referenced-files-from-unopened-files.js | 30 +- ...t-go-to-definition-on-module-specifiers.js | 34 +- ...-diagnostics-are-returned-with-no-error.js | 42 +- .../throws-unsupported-commands.js | 36 +- ...-generated-when-the-config-file-changes.js | 184 +-- ...when-the-config-file-doesnt-have-errors.js | 58 +- ...nerated-when-the-config-file-has-errors.js | 58 +- ...-file-opened-and-config-file-has-errors.js | 168 +- ...le-opened-and-doesnt-contain-any-errors.js | 168 +- ...rs-but-suppressDiagnosticEvents-is-true.js | 56 +- ...s-contains-the-project-reference-errors.js | 58 +- ...-same-ambient-module-and-is-also-module.js | 100 +- ...project-structure-and-reports-no-errors.js | 176 +-- .../getting-errors-before-opening-file.js | 8 +- ...-when-timeout-occurs-after-installation.js | 438 +++--- ...n-timeout-occurs-inbetween-installation.js | 478 +++--- ...pened-right-after-closing-the-root-file.js | 218 +-- ...hen-json-is-root-file-found-by-tsconfig.js | 80 +- ...json-is-not-root-file-found-by-tsconfig.js | 80 +- ...esnt-exist-on-disk-yet-with-projectRoot.js | 56 +- ...t-exist-on-disk-yet-without-projectRoot.js | 52 +- ...-global-error-gerErr-with-sync-commands.js | 62 +- ...or-returns-includes-global-error-getErr.js | 70 +- ...-includes-global-error-geterrForProject.js | 70 +- ...large-file-size-is-determined-correctly.js | 44 +- ...t-is-not-open-gerErr-with-sync-commands.js | 120 +- ...n-dependency-project-is-not-open-getErr.js | 92 +- ...cy-project-is-not-open-geterrForProject.js | 116 +- ...-file-is-open-gerErr-with-sync-commands.js | 190 +-- ...-when-the-depedency-file-is-open-getErr.js | 164 +- ...depedency-file-is-open-geterrForProject.js | 176 +-- ...t-is-not-open-gerErr-with-sync-commands.js | 116 +- ...n-dependency-project-is-not-open-getErr.js | 88 +- ...cy-project-is-not-open-geterrForProject.js | 112 +- ...-file-is-open-gerErr-with-sync-commands.js | 186 +-- ...-when-the-depedency-file-is-open-getErr.js | 160 +- ...depedency-file-is-open-geterrForProject.js | 172 +-- .../ancestor-and-project-ref-management.js | 552 +++---- ...disableSourceOfProjectReferenceRedirect.js | 118 +- ...port-with-referenced-project-when-built.js | 118 +- .../auto-import-with-referenced-project.js | 118 +- ...ssfully-find-references-with-out-option.js | 152 +- ...indirect-project-but-not-in-another-one.js | 504 +++--- ...dProjectLoad-is-set-in-indirect-project.js | 502 +++--- ...-if-disableReferencedProjectLoad-is-set.js | 506 +++--- ...oes-not-error-on-container-only-project.js | 174 +-- ...-are-disabled-and-a-decl-map-is-missing.js | 144 +- ...-are-disabled-and-a-decl-map-is-present.js | 154 +- ...s-are-enabled-and-a-decl-map-is-missing.js | 150 +- ...s-are-enabled-and-a-decl-map-is-present.js | 150 +- ...-are-disabled-and-a-decl-map-is-missing.js | 144 +- ...-are-disabled-and-a-decl-map-is-present.js | 154 +- ...s-are-enabled-and-a-decl-map-is-missing.js | 150 +- ...s-are-enabled-and-a-decl-map-is-present.js | 150 +- ...-are-disabled-and-a-decl-map-is-missing.js | 80 +- ...-are-disabled-and-a-decl-map-is-present.js | 90 +- ...s-are-enabled-and-a-decl-map-is-missing.js | 86 +- ...s-are-enabled-and-a-decl-map-is-present.js | 86 +- ...-are-disabled-and-a-decl-map-is-missing.js | 80 +- ...-are-disabled-and-a-decl-map-is-present.js | 122 +- ...s-are-enabled-and-a-decl-map-is-missing.js | 118 +- ...s-are-enabled-and-a-decl-map-is-present.js | 118 +- .../sibling-projects.js | 142 +- ...ding-references-in-overlapping-projects.js | 348 ++--- ...solution-is-built-with-preserveSymlinks.js | 134 +- ...-and-has-index.ts-and-solution-is-built.js | 134 +- ...tion-is-not-built-with-preserveSymlinks.js | 134 +- ...-has-index.ts-and-solution-is-not-built.js | 134 +- ...solution-is-built-with-preserveSymlinks.js | 134 +- ...th-scoped-package-and-solution-is-built.js | 134 +- ...tion-is-not-built-with-preserveSymlinks.js | 134 +- ...coped-package-and-solution-is-not-built.js | 134 +- ...solution-is-built-with-preserveSymlinks.js | 134 +- ...le-from-subFolder-and-solution-is-built.js | 134 +- ...tion-is-not-built-with-preserveSymlinks.js | 134 +- ...rom-subFolder-and-solution-is-not-built.js | 134 +- ...solution-is-built-with-preserveSymlinks.js | 134 +- ...th-scoped-package-and-solution-is-built.js | 134 +- ...tion-is-not-built-with-preserveSymlinks.js | 134 +- ...coped-package-and-solution-is-not-built.js | 134 +- ...disableSourceOfProjectReferenceRedirect.js | 312 ++-- ...ect-when-referenced-project-is-not-open.js | 142 +- ...disableSourceOfProjectReferenceRedirect.js | 470 +++--- ...project-when-referenced-project-is-open.js | 240 +-- ...ject-is-directly-referenced-by-solution.js | 876 +++++------ ...ct-is-indirectly-referenced-by-solution.js | 1088 ++++++------- ...nced-project-and-using-declaration-maps.js | 160 +- ...ot-file-is-file-from-referenced-project.js | 168 +- ...indirect-project-but-not-in-another-one.js | 536 +++---- ...dProjectLoad-is-set-in-indirect-project.js | 526 +++---- ...-if-disableReferencedProjectLoad-is-set.js | 374 ++--- ...ces-open-file-through-project-reference.js | 950 ++++++------ ...ct-is-indirectly-referenced-by-solution.js | 1194 +++++++-------- ...nction-as-object-literal-property-types.js | 186 +-- ...row-function-as-object-literal-property.js | 124 +- ...ss-when-using-arrow-function-assignment.js | 186 +-- ...s-when-using-method-of-class-expression.js | 186 +-- ...ness-when-using-object-literal-property.js | 186 +-- ...cts-are-open-and-one-project-references.js | 354 ++--- ...ts-have-allowJs-and-emitDeclarationOnly.js | 112 +- ...ng-solution-and-siblings-are-not-loaded.js | 58 +- ...dts-changes-with-timeout-before-request.js | 210 +-- .../dependency-dts-changes.js | 158 +- .../dependency-dts-created.js | 320 ++-- .../dependency-dts-deleted.js | 312 ++-- .../dependency-dts-not-present.js | 288 ++-- ...Map-changes-with-timeout-before-request.js | 210 +-- .../dependency-dtsMap-changes.js | 158 +- .../dependency-dtsMap-created.js | 312 ++-- .../dependency-dtsMap-deleted.js | 312 ++-- .../dependency-dtsMap-not-present.js | 292 ++-- .../configHasNoReference/rename-locations.js | 292 ++-- ...ile-changes-with-timeout-before-request.js | 156 +- .../usage-file-changes.js | 156 +- ...dts-changes-with-timeout-before-request.js | 210 +-- .../dependency-dts-changes.js | 158 +- .../dependency-dts-created.js | 320 ++-- .../dependency-dts-deleted.js | 312 ++-- .../dependency-dts-not-present.js | 288 ++-- ...Map-changes-with-timeout-before-request.js | 210 +-- .../dependency-dtsMap-changes.js | 158 +- .../dependency-dtsMap-created.js | 312 ++-- .../dependency-dtsMap-deleted.js | 312 ++-- .../dependency-dtsMap-not-present.js | 292 ++-- ...rce-changes-with-timeout-before-request.js | 156 +- .../dependency-source-changes.js | 156 +- .../configWithReference/rename-locations.js | 292 ++-- ...ile-changes-with-timeout-before-request.js | 156 +- .../configWithReference/usage-file-changes.js | 156 +- .../when-projects-are-not-built.js | 288 ++-- ...dts-changes-with-timeout-before-request.js | 210 +-- .../dependency-dts-changes.js | 158 +- .../dependency-dts-created.js | 320 ++-- .../dependency-dts-deleted.js | 312 ++-- .../dependency-dts-not-present.js | 288 ++-- ...Map-changes-with-timeout-before-request.js | 210 +-- .../dependency-dtsMap-changes.js | 158 +- .../dependency-dtsMap-created.js | 312 ++-- .../dependency-dtsMap-deleted.js | 312 ++-- .../dependency-dtsMap-not-present.js | 292 ++-- .../disabledSourceRef/rename-locations.js | 292 ++-- ...ile-changes-with-timeout-before-request.js | 156 +- .../disabledSourceRef/usage-file-changes.js | 156 +- ...dts-changes-with-timeout-before-request.js | 368 ++--- .../dependency-dts-changes.js | 294 ++-- .../dependency-dts-created.js | 554 +++---- .../dependency-dts-deleted.js | 532 +++---- .../dependency-dts-not-present.js | 480 +++--- ...Map-changes-with-timeout-before-request.js | 366 ++--- .../dependency-dtsMap-changes.js | 292 ++-- .../dependency-dtsMap-created.js | 540 +++---- .../dependency-dtsMap-deleted.js | 524 +++---- .../dependency-dtsMap-not-present.js | 484 +++--- .../goToDef-and-rename-locations.js | 504 +++--- ...ile-changes-with-timeout-before-request.js | 292 ++-- .../usage-file-changes.js | 292 ++-- ...dts-changes-with-timeout-before-request.js | 370 ++--- .../dependency-dts-changes.js | 296 ++-- .../dependency-dts-created.js | 550 +++---- .../dependency-dts-deleted.js | 550 +++---- .../dependency-dts-not-present.js | 504 +++--- ...Map-changes-with-timeout-before-request.js | 370 ++--- .../dependency-dtsMap-changes.js | 296 ++-- .../dependency-dtsMap-created.js | 548 +++---- .../dependency-dtsMap-deleted.js | 548 +++---- .../dependency-dtsMap-not-present.js | 508 +++--- ...rce-changes-with-timeout-before-request.js | 292 ++-- .../dependency-source-changes.js | 292 ++-- .../gotoDef-and-rename-locations.js | 508 +++--- ...ile-changes-with-timeout-before-request.js | 296 ++-- .../configWithReference/usage-file-changes.js | 296 ++-- .../when-projects-are-not-built.js | 504 +++--- ...dts-changes-with-timeout-before-request.js | 368 ++--- .../dependency-dts-changes.js | 294 ++-- .../dependency-dts-created.js | 554 +++---- .../dependency-dts-deleted.js | 532 +++---- .../dependency-dts-not-present.js | 480 +++--- ...Map-changes-with-timeout-before-request.js | 366 ++--- .../dependency-dtsMap-changes.js | 292 ++-- .../dependency-dtsMap-created.js | 540 +++---- .../dependency-dtsMap-deleted.js | 524 +++---- .../dependency-dtsMap-not-present.js | 484 +++--- .../gotoDef-and-rename-locations.js | 504 +++--- ...ile-changes-with-timeout-before-request.js | 292 ++-- .../disabledSourceRef/usage-file-changes.js | 292 ++-- .../can-go-to-definition-correctly.js | 304 ++-- ...dts-changes-with-timeout-before-request.js | 218 +-- .../dependency-dts-changes.js | 166 +- .../dependency-dts-created.js | 350 ++--- .../dependency-dts-deleted.js | 356 ++--- .../dependency-dts-not-present.js | 292 ++-- ...Map-changes-with-timeout-before-request.js | 216 +-- .../dependency-dtsMap-changes.js | 164 +- .../dependency-dtsMap-created.js | 328 ++-- .../dependency-dtsMap-deleted.js | 328 ++-- .../dependency-dtsMap-not-present.js | 300 ++-- ...ile-changes-with-timeout-before-request.js | 162 +- .../usage-file-changes.js | 162 +- .../can-go-to-definition-correctly.js | 310 ++-- ...dts-changes-with-timeout-before-request.js | 156 +- .../dependency-dts-changes.js | 156 +- .../dependency-dts-created.js | 320 ++-- .../dependency-dts-deleted.js | 320 ++-- .../dependency-dts-not-present.js | 310 ++-- ...Map-changes-with-timeout-before-request.js | 156 +- .../dependency-dtsMap-changes.js | 156 +- .../dependency-dtsMap-created.js | 318 ++-- .../dependency-dtsMap-deleted.js | 318 ++-- .../dependency-dtsMap-not-present.js | 310 ++-- ...rce-changes-with-timeout-before-request.js | 222 +-- .../dependency-source-changes.js | 170 +-- ...ile-changes-with-timeout-before-request.js | 166 +- .../configWithReference/usage-file-changes.js | 166 +- .../when-projects-are-not-built.js | 310 ++-- .../can-go-to-definition-correctly.js | 318 ++-- ...dts-changes-with-timeout-before-request.js | 226 +-- .../dependency-dts-changes.js | 174 +-- .../dependency-dts-created.js | 340 ++--- .../dependency-dts-deleted.js | 346 ++--- .../dependency-dts-not-present.js | 306 ++-- ...Map-changes-with-timeout-before-request.js | 224 +-- .../dependency-dtsMap-changes.js | 172 +-- .../dependency-dtsMap-created.js | 342 ++--- .../dependency-dtsMap-deleted.js | 342 ++--- .../dependency-dtsMap-not-present.js | 314 ++-- ...ile-changes-with-timeout-before-request.js | 170 +-- .../disabledSourceRef/usage-file-changes.js | 170 +-- ...he-session-and-project-is-at-root-level.js | 98 +- ...ession-and-project-is-not-at-root-level.js | 188 +-- ...oundUpdate-and-project-is-at-root-level.js | 110 +- ...Update-and-project-is-not-at-root-level.js | 204 +-- ...oundUpdate-and-project-is-at-root-level.js | 112 +- ...Update-and-project-is-not-at-root-level.js | 200 +-- ...configured-project-that-will-be-removed.js | 232 +-- ...-and-closed-affecting-multiple-projects.js | 222 +-- ...ith-mixed-content-are-handled-correctly.js | 52 +- ...getting-project-from-orphan-script-info.js | 68 +- ...directory-watch-invoke-on-file-creation.js | 410 ++--- ...issing-files-added-with-tripleslash-ref.js | 104 +- .../projectsWithReferences/sample-project.js | 212 +-- ...es-with-deleting-referenced-config-file.js | 206 +-- ...ing-transitively-referenced-config-file.js | 184 +-- ...ces-with-edit-in-referenced-config-file.js | 202 +-- ...ive-references-with-edit-on-config-file.js | 290 ++-- ...ansitive-references-with-non-local-edit.js | 122 +- ...es-with-deleting-referenced-config-file.js | 240 +-- ...ing-transitively-referenced-config-file.js | 210 +-- ...les-with-edit-in-referenced-config-file.js | 214 +-- ...-without-files-with-edit-on-config-file.js | 302 ++-- ...ences-without-files-with-non-local-edit.js | 134 +- ...unnecessary-lookup-invalidation-on-save.js | 126 +- ...an-load-typings-that-are-proper-modules.js | 72 +- .../disable-suggestion-diagnostics.js | 56 +- ...le-name-from-files-in-different-folders.js | 270 ++-- ...e-module-name-from-files-in-same-folder.js | 170 +-- ...ative-module-name-from-inferred-project.js | 332 ++-- .../npm-install-@types-works.js | 170 +-- ...le-name-from-files-in-different-folders.js | 232 +-- ...e-module-name-from-files-in-same-folder.js | 130 +- ...tore-the-states-for-configured-projects.js | 206 +-- ...estore-the-states-for-inferred-projects.js | 188 +-- ...hould-remove-the-module-not-found-error.js | 92 +- .../resolutionCache/suggestion-diagnostics.js | 48 +- .../suppressed-diagnostic-events.js | 48 +- .../resolutionCache/when-resolution-fails.js | 78 +- .../when-resolves-to-ambient-module.js | 68 +- ...tion-when-project-compiles-from-sources.js | 320 ++-- ...s-in-typings-folder-and-then-recompiles.js | 116 +- ...mpiles-after-deleting-generated-folders.js | 188 +-- ...ping-when-project-compiles-from-sources.js | 346 ++--- ...s-in-typings-folder-and-then-recompiles.js | 216 +-- ...mpiles-after-deleting-generated-folders.js | 288 ++-- ...name-in-common-file-renames-all-project.js | 190 +-- ...ed-project-and-semantic-operations-fail.js | 196 +-- ...-include-auto-type-reference-directives.js | 30 +- .../throws-on-unsupported-commands.js | 36 +- ...projects-discover-from-bower_components.js | 142 +- .../typingsInstaller/configured-projects.js | 92 +- ...utions-pointing-to-js-on-typing-install.js | 84 +- ...ect-watch-options-in-host-configuration.js | 63 +- .../external-project-watch-options.js | 67 +- .../watchEnvironment/files-at-root.js | 79 +- .../files-at-windows-style-root.js | 79 +- .../watchEnvironment/files-not-at-root.js | 87 +- .../files-not-at-windows-style-root.js | 87 +- ...ect-watch-options-in-host-configuration.js | 87 +- .../inferred-project-watch-options.js | 91 +- .../project-with-ascii-file-names-with-i.js | 75 +- .../project-with-ascii-file-names.js | 75 +- .../project-with-unicode-file-names.js | 75 +- ...files-starting-with-dot-in-node_modules.js | 337 ++-- ...polling-when-file-is-added-to-subfolder.js | 139 +- ...rectory-when-file-is-added-to-subfolder.js | 193 +-- ...tchFile-when-file-is-added-to-subfolder.js | 165 +- ...watching-files-with-network-style-paths.js | 359 ++--- ...en-watchFile-is-single-watcher-per-file.js | 99 +- ...excludeDirectories-option-in-configFile.js | 85 +- ...ludeDirectories-option-in-configuration.js | 81 +- ...ackPolling-option-as-host-configuration.js | 91 +- ...th-fallbackPolling-option-in-configFile.js | 91 +- ...hDirectory-option-as-host-configuration.js | 91 +- ...ith-watchDirectory-option-in-configFile.js | 87 +- ...-watchFile-option-as-host-configuration.js | 91 +- .../with-watchFile-option-in-configFile.js | 87 +- 370 files changed, 40434 insertions(+), 40375 deletions(-) diff --git a/src/testRunner/unittests/tsserver/cachingFileSystemInformation.ts b/src/testRunner/unittests/tsserver/cachingFileSystemInformation.ts index e6048f6c7a6c6..0f042ba32abee 100644 --- a/src/testRunner/unittests/tsserver/cachingFileSystemInformation.ts +++ b/src/testRunner/unittests/tsserver/cachingFileSystemInformation.ts @@ -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]; @@ -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); @@ -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); @@ -273,7 +273,7 @@ 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); @@ -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); diff --git a/src/testRunner/unittests/tsserver/configFileSearch.ts b/src/testRunner/unittests/tsserver/configFileSearch.ts index 39ba56ced2127..a81bedb6431e0 100644 --- a/src/testRunner/unittests/tsserver/configFileSearch.ts +++ b/src/testRunner/unittests/tsserver/configFileSearch.ts @@ -38,7 +38,7 @@ 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 @@ -67,7 +67,7 @@ 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); @@ -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 }; } @@ -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); }); diff --git a/src/testRunner/unittests/tsserver/configuredProjects.ts b/src/testRunner/unittests/tsserver/configuredProjects.ts index d8246838c0756..f6fb173d282e6 100644 --- a/src/testRunner/unittests/tsserver/configuredProjects.ts +++ b/src/testRunner/unittests/tsserver/configuredProjects.ts @@ -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"); @@ -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"); @@ -84,7 +84,7 @@ 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); @@ -105,7 +105,7 @@ 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 @@ -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); @@ -793,7 +793,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); @@ -851,7 +851,7 @@ declare var console: { ]); const session = createSession(host, { canUseEvents: true, - logger: createLoggerWithInMemoryLogs(), + logger: createLoggerWithInMemoryLogs(host), }); session.executeCommandSeq({ command: protocol.CommandTypes.Open, @@ -1017,7 +1017,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 }; } @@ -1178,7 +1178,7 @@ 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); @@ -1217,7 +1217,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); }); diff --git a/src/testRunner/unittests/tsserver/events/projectLanguageServiceState.ts b/src/testRunner/unittests/tsserver/events/projectLanguageServiceState.ts index 08d66db76a16c..953233e084da4 100644 --- a/src/testRunner/unittests/tsserver/events/projectLanguageServiceState.ts +++ b/src/testRunner/unittests/tsserver/events/projectLanguageServiceState.ts @@ -68,7 +68,7 @@ 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}`); diff --git a/src/testRunner/unittests/tsserver/events/projectUpdatedInBackground.ts b/src/testRunner/unittests/tsserver/events/projectUpdatedInBackground.ts index 248fd25e95ca3..951c7215872d2 100644 --- a/src/testRunner/unittests/tsserver/events/projectUpdatedInBackground.ts +++ b/src/testRunner/unittests/tsserver/events/projectUpdatedInBackground.ts @@ -437,7 +437,7 @@ namespace ts.projectSystem { const openFiles = [file1.path]; const host = createServerHost([file1, file3, libFile, configFile]); - const { session, verifyInitialOpen, verifyProjectsUpdatedInBackgroundEventHandler } = createSession(host, createLoggerWithInMemoryLogs()); + const { session, verifyInitialOpen, verifyProjectsUpdatedInBackgroundEventHandler } = createSession(host, createLoggerWithInMemoryLogs(host)); verifyInitialOpen(file1); file3.content += "export class d {}"; diff --git a/src/testRunner/unittests/tsserver/forceConsistentCasingInFileNames.ts b/src/testRunner/unittests/tsserver/forceConsistentCasingInFileNames.ts index 674556e8cf135..2e834a43ad402 100644 --- a/src/testRunner/unittests/tsserver/forceConsistentCasingInFileNames.ts +++ b/src/testRunner/unittests/tsserver/forceConsistentCasingInFileNames.ts @@ -59,7 +59,7 @@ namespace ts.projectSystem { }; const host = createServerHost([loggerFile, anotherFile, tsconfig, libFile, tsconfig]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([{ file: loggerFile, projectRootPath: tscWatch.projectRoot }], session); verifyGetErrRequest({ session, host, files: [loggerFile] }); @@ -108,7 +108,7 @@ namespace ts.projectSystem { }; const host = createServerHost([loggerFile, anotherFile, tsconfig, libFile, tsconfig]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([{ file: anotherFile, projectRootPath: tscWatch.projectRoot }], session); verifyGetErrRequest({ session, host, files: [anotherFile] }); diff --git a/src/testRunner/unittests/tsserver/helpers.ts b/src/testRunner/unittests/tsserver/helpers.ts index f87355f7491f9..c056879c49340 100644 --- a/src/testRunner/unittests/tsserver/helpers.ts +++ b/src/testRunner/unittests/tsserver/helpers.ts @@ -53,6 +53,7 @@ namespace ts.projectSystem { export interface Logger extends server.Logger { logs: string[]; + host?: TestServerHost; } export function nullLogger(): Logger { @@ -77,20 +78,52 @@ namespace ts.projectSystem { }; } - export function createLoggerWritingToConsole(): Logger { - return { + function handleLoggerGroup(logger: Logger, host: TestServerHost | undefined): Logger { + let inGroup = false; + let firstInGroup = false; + let seq = 0; + logger.startGroup = () => { + inGroup = true; + firstInGroup = true; + }; + logger.endGroup = () => inGroup = false; + logger.host = host; + const originalInfo = logger.info; + logger.info = s => msg(s, server.Msg.Info, s => originalInfo.call(logger, s)); + return logger; + + function msg(s: string, type = server.Msg.Err, write: (s: string) => void) { + s = `[${nowString()}] ${s}`; + if (!inGroup || firstInGroup) s = padStringRight(type + " " + seq.toString(), " ") + s; + write(s); + if (!inGroup) seq++; + } + + function padStringRight(str: string, padding: string) { + return (str + padding).slice(0, padding.length); + } + + function nowString() { + // E.g. "12:34:56.789" + const d = logger.host!.now(); + return `${padLeft(d.getHours().toString(), 2, "0")}:${padLeft(d.getMinutes().toString(), 2, "0")}:${padLeft(d.getSeconds().toString(), 2, "0")}.${padLeft(d.getMilliseconds().toString(), 3, "0")}`; + } + } + + export function createLoggerWritingToConsole(host: TestServerHost): Logger { + return handleLoggerGroup({ ...nullLogger(), hasLevel: returnTrue, loggingEnabled: returnTrue, perftrc: s => console.log(s), info: s => console.log(s), msg: (s, type) => console.log(`${type}:: ${s}`), - }; + }, host); } - export function createLoggerWithInMemoryLogs(): Logger { + export function createLoggerWithInMemoryLogs(host: TestServerHost): Logger { const logger = createHasErrorMessageLogger(); - return { + return handleLoggerGroup({ ...logger, hasLevel: returnTrue, loggingEnabled: returnTrue, @@ -111,7 +144,7 @@ namespace ts.projectSystem { .replace(/dependencies in \d+(?:\.\d+)?/g, `dependencies in *`) .replace(/\"exportMapKey\"\:\"[_$a-zA-Z][_$_$a-zA-Z0-9]*\|\d+\|/g, match => match.replace(/\|\d+\|/, `|*|`)) ) - }; + }, host); } export function baselineTsserverLogs(scenario: string, subScenario: string, sessionOrService: { logger: Logger; }) { @@ -765,7 +798,7 @@ namespace ts.projectSystem { function verifyErrorsUsingGeterr({scenario, subScenario, allFiles, openFiles, getErrRequest }: VerifyGetErrScenario) { it("verifies the errors in open file", () => { const host = createServerHost([...allFiles(), libFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession(openFiles(), session); verifyGetErrRequest({ session, host, files: getErrRequest() }); @@ -776,7 +809,7 @@ namespace ts.projectSystem { function verifyErrorsUsingGeterrForProject({ scenario, subScenario, allFiles, openFiles, getErrForProjectRequest }: VerifyGetErrScenario) { it("verifies the errors in projects", () => { const host = createServerHost([...allFiles(), libFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession(openFiles(), session); for (const expected of getErrForProjectRequest()) { @@ -793,7 +826,7 @@ namespace ts.projectSystem { function verifyErrorsUsingSyncMethods({ scenario, subScenario, allFiles, openFiles, syncDiagnostics }: VerifyGetErrScenario) { it("verifies the errors using sync commands", () => { const host = createServerHost([...allFiles(), libFile]); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession(openFiles(), session); for (const { file, project } of syncDiagnostics()) { const reqArgs = { file: filePath(file), projectFileName: project && filePath(project) }; diff --git a/src/testRunner/unittests/tsserver/inferredProjects.ts b/src/testRunner/unittests/tsserver/inferredProjects.ts index d4390e111add0..ce1747ee4fa5c 100644 --- a/src/testRunner/unittests/tsserver/inferredProjects.ts +++ b/src/testRunner/unittests/tsserver/inferredProjects.ts @@ -14,7 +14,7 @@ namespace ts.projectSystem { content: `export let x: number` }; const host = createServerHost([appFile, moduleFile, libFile]); - const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() }); + const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs(host) }); projectService.openClientFile(appFile.path); baselineTsserverLogs("inferredProjects", "create inferred project", projectService); }); diff --git a/src/testRunner/unittests/tsserver/moduleResolution.ts b/src/testRunner/unittests/tsserver/moduleResolution.ts index ec3535c5d73ab..914de1b3a22d3 100644 --- a/src/testRunner/unittests/tsserver/moduleResolution.ts +++ b/src/testRunner/unittests/tsserver/moduleResolution.ts @@ -32,7 +32,7 @@ namespace ts.projectSystem { ` }; const host = createServerHost([configFile, fileA, fileB, packageFile, { ...libFile, path: "/a/lib/lib.es2016.full.d.ts" }]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([fileA], session); return { host, session, packageFile, diff --git a/src/testRunner/unittests/tsserver/moduleSpecifierCache.ts b/src/testRunner/unittests/tsserver/moduleSpecifierCache.ts index a89d9d56fdd43..b9423ec98dd96 100644 --- a/src/testRunner/unittests/tsserver/moduleSpecifierCache.ts +++ b/src/testRunner/unittests/tsserver/moduleSpecifierCache.ts @@ -59,7 +59,7 @@ namespace ts.projectSystem { }); it("invalidates module specifiers when changes happen in contained node_modules directories", () => { - const { host, session, moduleSpecifierCache, triggerCompletions } = setup(createLoggerWithInMemoryLogs()); + const { host, session, moduleSpecifierCache, triggerCompletions } = setup(host => createLoggerWithInMemoryLogs(host)); // Completion at an import statement will calculate and cache module specifiers triggerCompletions({ file: cTs.path, line: 1, offset: cTs.content.length + 1 }); host.writeFile("/node_modules/.staging/mobx-12345678/package.json", "{}"); @@ -123,9 +123,9 @@ namespace ts.projectSystem { }); }); - function setup(logger?: Logger) { + function setup(createLogger?: (host: TestServerHost) => Logger) { const host = createServerHost([aTs, bTs, cTs, bSymlink, ambientDeclaration, tsconfig, packageJson, mobxPackageJson, mobxDts]); - const session = createSession(host, logger && { logger }); + const session = createSession(host, createLogger && { logger: createLogger(host) }); openFilesForSession([aTs, bTs, cTs], session); const projectService = session.getProjectService(); const project = configuredProjectAt(projectService, 0); diff --git a/src/testRunner/unittests/tsserver/navTo.ts b/src/testRunner/unittests/tsserver/navTo.ts index eeebca75263fd..e484afaeab9c5 100644 --- a/src/testRunner/unittests/tsserver/navTo.ts +++ b/src/testRunner/unittests/tsserver/navTo.ts @@ -61,7 +61,7 @@ namespace ts.projectSystem { export const ghijkl = a.abcdef;` }; const host = createServerHost([configFile1, file1, configFile2, file2]); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file1, file2], session); const request = makeSessionRequest(CommandNames.Navto, { searchValue: "abcdef", file: file1.path }); @@ -107,7 +107,7 @@ export const ghijkl = a.abcdef;` export const ghijkl = a.abcdef;` }; const host = createServerHost([configFile1, file1, configFile2, file2, solutionConfig]); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file1], session); const request = makeSessionRequest(CommandNames.Navto, { searchValue: "abcdef" }); diff --git a/src/testRunner/unittests/tsserver/openFile.ts b/src/testRunner/unittests/tsserver/openFile.ts index 362c6ae16f005..de791a3e495a5 100644 --- a/src/testRunner/unittests/tsserver/openFile.ts +++ b/src/testRunner/unittests/tsserver/openFile.ts @@ -147,7 +147,7 @@ foo(); bar();` }; const host = createServerHost([file, libFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file], session); verifyGetErrRequest({ session, host, files: [file] }); diff --git a/src/testRunner/unittests/tsserver/partialSemanticServer.ts b/src/testRunner/unittests/tsserver/partialSemanticServer.ts index 621c4db5c5374..2a7a4157c6ff1 100644 --- a/src/testRunner/unittests/tsserver/partialSemanticServer.ts +++ b/src/testRunner/unittests/tsserver/partialSemanticServer.ts @@ -29,7 +29,7 @@ import { something } from "something"; const session = createSession(host, { serverMode: LanguageServiceMode.PartialSemantic, useSingleInferredProject: true, - logger: createLoggerWithInMemoryLogs(), + logger: createLoggerWithInMemoryLogs(host), }); return { host, session, file1, file2, file3, something, configFile }; } @@ -98,7 +98,7 @@ import { something } from "something"; const session = createSession(host, { serverMode: LanguageServiceMode.PartialSemantic, useSingleInferredProject: true, - logger: createLoggerWithInMemoryLogs() + logger: createLoggerWithInMemoryLogs(host) }); const service = session.getProjectService(); @@ -163,7 +163,7 @@ function fooB() { }` const session = createSession(host, { serverMode: LanguageServiceMode.PartialSemantic, useSingleInferredProject: true, - logger: createLoggerWithInMemoryLogs(), + logger: createLoggerWithInMemoryLogs(host), }); openFilesForSession([file1], session); baselineTsserverLogs("partialSemanticServer", "should not include referenced files from unopened files", session); diff --git a/src/testRunner/unittests/tsserver/projectErrors.ts b/src/testRunner/unittests/tsserver/projectErrors.ts index f721a27cf316f..750b968b6c0f8 100644 --- a/src/testRunner/unittests/tsserver/projectErrors.ts +++ b/src/testRunner/unittests/tsserver/projectErrors.ts @@ -232,7 +232,7 @@ namespace ts.projectSystem { content: "class c { }" }; const host = createServerHost([libFile, fileInRoot, fileInProjectRoot]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(), useInferredProjectPerProjectRoot: true }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host), useInferredProjectPerProjectRoot: true }); const untitledFile = "untitled:Untitled-1"; const refPathNotFound1 = "../../../../../../typings/@epic/Core.d.ts"; @@ -280,7 +280,7 @@ namespace ts.projectSystem { content: JSON.stringify({ compilerOptions: { module: "none", targer: "es5" }, exclude: ["node_modules"] }) }; const host = createServerHost([app, foo, configFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); session.executeCommandSeq({ command: server.CommandNames.Open, @@ -301,7 +301,7 @@ namespace ts.projectSystem { content: "let x: number = false;" }; const host = createServerHost([file, libFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); session.executeCommandSeq({ command: server.CommandNames.Geterr, arguments: { @@ -329,7 +329,7 @@ namespace ts.projectSystem { }; const files = [libFile, app, serverUtilities, backendTest]; const host = createServerHost(files); - const session = createSession(host, { useInferredProjectPerProjectRoot: true, canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { useInferredProjectPerProjectRoot: true, canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([{ file: app, projectRootPath: tscWatch.projectRoot }], session); openFilesForSession([{ file: backendTest, projectRootPath: tscWatch.projectRoot }], session); verifyGetErrRequest({ session, host, files: [backendTest.path, app.path] }); @@ -367,7 +367,7 @@ declare module '@custom/plugin' { }; const files = [libFile, aFile, config, plugin, pluginProposed]; const host = createServerHost(files); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([aFile], session); checkErrors(); @@ -430,7 +430,7 @@ declare module '@custom/plugin' { }` }; const host = createServerHost([file, libFile, configFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file], session); baselineTsserverLogs("projectErrors", "configFileDiagnostic events are generated when the config file has errors", session); }); @@ -447,7 +447,7 @@ declare module '@custom/plugin' { }` }; const host = createServerHost([file, libFile, configFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file], session); baselineTsserverLogs("projectErrors", "configFileDiagnostic events are generated when the config file doesnt have errors", session); }); @@ -465,7 +465,7 @@ declare module '@custom/plugin' { }; const host = createServerHost([file, libFile, configFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file], session); configFile.content = `{ @@ -508,7 +508,7 @@ declare module '@custom/plugin' { }` }; const host = createServerHost([file, libFile, configFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file2], session); openFilesForSession([file], session); // We generate only if project is created when opening file from the project @@ -531,7 +531,7 @@ declare module '@custom/plugin' { }` }; const host = createServerHost([file, libFile, configFile]); - const session = createSession(host, { canUseEvents: true, suppressDiagnosticEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, suppressDiagnosticEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file], session); baselineTsserverLogs("projectErrors", "configFileDiagnostic events are not generated when the config file has errors but suppressDiagnosticEvents is true", session); }); @@ -557,7 +557,7 @@ declare module '@custom/plugin' { }; const host = createServerHost([file, file2, file3, libFile, configFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file2], session); openFilesForSession([file], session); // We generate only if project is created when opening file from the project @@ -580,7 +580,7 @@ declare module '@custom/plugin' { }; const host = createServerHost([file, libFile, configFile]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file], session); baselineTsserverLogs("projectErrors", "configFileDiagnostic events contains the project reference errors", session); }); @@ -788,7 +788,7 @@ console.log(blabla);` }; const host = createServerHost([test, blabla, libFile, tsconfig]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([test], session); return { host, session, test, blabla, tsconfig }; } @@ -827,7 +827,7 @@ console.log(blabla);` }; const projectFiles = [main, libFile, config]; const host = createServerHost(projectFiles); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([{ file: main, projectRootPath: tscWatch.projectRoot }], session); verifyGetErrRequest({ session, host, files: [main] }); diff --git a/src/testRunner/unittests/tsserver/projectReferences.ts b/src/testRunner/unittests/tsserver/projectReferences.ts index d5f2cf6339c74..1d1300b6a0f57 100644 --- a/src/testRunner/unittests/tsserver/projectReferences.ts +++ b/src/testRunner/unittests/tsserver/projectReferences.ts @@ -26,7 +26,7 @@ namespace ts.projectSystem { const host = createHostWithSolutionBuild(files, [containerConfig.path]); // Open external project for the folder - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); const service = session.getProjectService(); service.openExternalProjects([{ projectFileName: TestFSWithWatch.getTsBuildProjectFilePath(project, project), @@ -57,7 +57,7 @@ namespace ts.projectSystem { it("can successfully find references with --out options", () => { const host = createHostWithSolutionBuild(files, [containerConfig.path]); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([containerCompositeExec[1]], session); const myConstStart = protocolLocationFromSubstring(containerCompositeExec[1].content, "myConst"); session.executeCommandSeq({ @@ -74,7 +74,7 @@ namespace ts.projectSystem { content: "let x = 10" }; const host = createHostWithSolutionBuild(files.concat([tempFile]), [containerConfig.path]); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([containerCompositeExec[1]], session); const service = session.getProjectService(); @@ -164,7 +164,7 @@ function foo() { [commonConfig, keyboardTs, keyboardTestTs, srcConfig, terminalTs, libFile], [srcConfig.path] ); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([keyboardTs, terminalTs], session); const searchStr = "evaluateKeyboardEvent"; @@ -341,7 +341,7 @@ function foo() { createServerHost(files); // Create symlink in node module - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([aTest], session); verifyGetErrRequest({ session, host, files: [aTest] }); session.executeCommandSeq({ @@ -492,7 +492,7 @@ testCompositeFunction('why hello there', 42);` symLink: `${tscWatch.projectRoot}/packages/emit-composite` }; const host = createServerHost([libFile, compositeConfig, compositePackageJson, compositeIndex, compositeTestModule, consumerConfig, consumerIndex, symlink], { useCaseSensitiveFileNames: true }); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([consumerIndex], session); verifyGetErrRequest({ host, session, files: [consumerIndex] }); baselineTsserverLogs("projectReferences", `when the referenced projects have allowJs and emitDeclarationOnly`, session); @@ -562,7 +562,7 @@ testCompositeFunction('why hello there', 42);` const files = [libFile, solution, compilerConfig, typesFile, programFile, servicesConfig, servicesFile, libFile]; const host = createServerHost(files); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([programFile], session); // Find all references for getSourceFile @@ -682,7 +682,7 @@ testCompositeFunction('why hello there', 42);` const files = [libFile, solutionConfig, aConfig, aFile, bConfig, bFile, cConfig, cFile, dConfig, dFile, libFile]; const host = createServerHost(files); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([bFile], session); // The first search will trigger project loads @@ -756,7 +756,7 @@ ${usage}` content: definition }; const host = createServerHost([libFile, solution, libFile, apiConfig, apiFile, appConfig, appFile, sharedConfig, sharedFile]); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([apiFile], session); // Find all references @@ -874,7 +874,7 @@ export const foo = local;`, const files = [libFile, solution, compilerConfig, typesFile, programFile, servicesConfig, servicesFile, libFile]; const host = createServerHost(files); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([programFile], session); // Find all references @@ -969,7 +969,7 @@ export function bar() {}` mainDts, mainDtsMap, helperDts, helperDtsMap, tsconfigIndirect3, fileResolvingToMainDts, ...additionalFiles]); - const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { canUseEvents: true, logger: createLoggerWithInMemoryLogs(host) }); const service = session.getProjectService(); service.openClientFile(main.path); return { session, service, host }; @@ -1246,7 +1246,7 @@ bar;` content: `class class2 {}` }; const host = createServerHost([config1, class1, class1Dts, config2, class2, libFile]); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([class2], session); return { host, session, class1 }; } @@ -1401,7 +1401,7 @@ bar;` tscWatch.solutionBuildWithBaseline(host, [solnConfig.path]); host.clearOutput(); } - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([appIndex], session); session.executeCommandSeq({ command: protocol.CommandTypes.GetCodeFixes, @@ -1464,7 +1464,7 @@ bar;` refToCoreRef3File, refToCoreRef3Config, indirectNoCoreRefFile, indirectNoCoreRefConfig, noCoreRef2File, noCoreRef2Config ], { useCaseSensitiveFileNames: true }); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([mainFile, coreFile], session); // Find all refs in coreFile @@ -1549,7 +1549,7 @@ const b: B = new B();` }; const host = createServerHost([configA, indexA, configB, indexB, helperB, dtsB, ...(dtsMapPresent ? [dtsMapB] : [])]); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([indexA, ...(projectAlreadyLoaded ? [helperB] : [])], session); session.executeCommandSeq({ diff --git a/src/testRunner/unittests/tsserver/projectReferencesSourcemap.ts b/src/testRunner/unittests/tsserver/projectReferencesSourcemap.ts index b0f2c2a15b85a..d951b02058c2c 100644 --- a/src/testRunner/unittests/tsserver/projectReferencesSourcemap.ts +++ b/src/testRunner/unittests/tsserver/projectReferencesSourcemap.ts @@ -216,14 +216,14 @@ fn5(); compilerOptions: { composite: true, declarationMap: true } })); onHostCreate?.(host); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); return { host, session }; } function createSessionWithProjectReferences(onHostCreate?: OnHostCreate) { const host = createHostWithSolutionBuild(files, [mainConfig.path]); onHostCreate?.(host); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); return { host, session }; } @@ -239,7 +239,7 @@ fn5(); references: [{ path: "../dependency" }] })); onHostCreate?.(host); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); return { host, session }; } @@ -815,7 +815,7 @@ ${dependencyTs.content}`); it("when projects are not built", () => { const host = createServerHost(files); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([mainTs, randomFile], session); verifyAllFnAction( session, @@ -1619,7 +1619,7 @@ ${dependencyTs.content}`); it("when projects are not built", () => { const host = createServerHost(files); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([dependencyTs, randomFile], session); verifyAllFnAction( session, @@ -2659,7 +2659,7 @@ ${dependencyTs.content}`); it("when projects are not built", () => { const host = createServerHost(files); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([mainTs, dependencyTs, randomFile], session); verifyAllFnAction( session, diff --git a/src/testRunner/unittests/tsserver/projects.ts b/src/testRunner/unittests/tsserver/projects.ts index 7a166dc1abbb2..84d09a3dbda25 100644 --- a/src/testRunner/unittests/tsserver/projects.ts +++ b/src/testRunner/unittests/tsserver/projects.ts @@ -7,7 +7,7 @@ namespace ts.projectSystem { let x = y` }; const host = createServerHost([file1, libFile]); - const session = createSession(host, { logger: createLoggerWithInMemoryLogs() }); + const session = createSession(host, { logger: createLoggerWithInMemoryLogs(host) }); openFilesForSession([file1], session); const getErrRequest = makeSessionRequest( @@ -861,7 +861,7 @@ namespace ts.projectSystem { content: `