From 6099b09a6ebf73dbd6ce9c10ef6f1e6b70c0e9b1 Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 13 Oct 2017 07:17:17 -0700 Subject: [PATCH] Create source files lazily in tests (#19143) --- src/harness/harness.ts | 10 +++++++--- src/harness/unittests/moduleResolution.ts | 5 ++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index a0fb88213ed..a3789eb9ebf 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -844,9 +844,7 @@ namespace Harness { export const es2015DefaultLibFileName = "lib.es2015.d.ts"; // Cache of lib files from "built/local" - const libFileNameSourceFileMap = ts.createMapFromTemplate({ - [defaultLibFileName]: createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + "lib.es5.d.ts"), /*languageVersion*/ ts.ScriptTarget.Latest) - }); + let libFileNameSourceFileMap: ts.Map | undefined; // Cache of lib files from "tests/lib/" const testLibFileNameSourceFileMap = ts.createMap(); @@ -857,6 +855,12 @@ namespace Harness { return undefined; } + if (!libFileNameSourceFileMap) { + libFileNameSourceFileMap = ts.createMapFromTemplate({ + [defaultLibFileName]: createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + "lib.es5.d.ts"), /*languageVersion*/ ts.ScriptTarget.Latest) + }); + } + let sourceFile = libFileNameSourceFileMap.get(fileName); if (!sourceFile) { libFileNameSourceFileMap.set(fileName, sourceFile = createSourceFileAndAssertInvariants(fileName, IO.readFile(libFolder + fileName), ts.ScriptTarget.Latest)); diff --git a/src/harness/unittests/moduleResolution.ts b/src/harness/unittests/moduleResolution.ts index 0acbe9450bb..32301d6dccf 100644 --- a/src/harness/unittests/moduleResolution.ts +++ b/src/harness/unittests/moduleResolution.ts @@ -392,7 +392,7 @@ export = C; }); describe("Files with different casing", () => { - const library = createSourceFile("lib.d.ts", "", ScriptTarget.ES5); + let library: SourceFile; function test(files: Map, options: CompilerOptions, currentDirectory: string, useCaseSensitiveFileNames: boolean, rootFiles: string[], diagnosticCodes: number[]): void { const getCanonicalFileName = createGetCanonicalFileName(useCaseSensitiveFileNames); if (!useCaseSensitiveFileNames) { @@ -406,6 +406,9 @@ export = C; const host: CompilerHost = { getSourceFile: (fileName: string, languageVersion: ScriptTarget) => { if (fileName === "lib.d.ts") { + if (!library) { + library = createSourceFile("lib.d.ts", "", ScriptTarget.ES5); + } return library; } const path = getCanonicalFileName(normalizePath(combinePaths(currentDirectory, fileName)));