diff --git a/src/harness/loggedIO.ts b/src/harness/loggedIO.ts index fcc163e77f3..c5d428f3095 100644 --- a/src/harness/loggedIO.ts +++ b/src/harness/loggedIO.ts @@ -159,7 +159,7 @@ namespace Playback { } const canonicalizeForHarness = ts.createGetCanonicalFileName(/*caseSensitive*/ false); // This is done so tests work on windows _and_ linux - function sanitizeTestFilePath(name: string) { + export function sanitizeTestFilePath(name: string) { const path = ts.toPath(ts.normalizeSlashes(name.replace(/[\^<>:"|?*%]/g, "_")).replace(/\.\.\//g, "__dotdot/"), "", canonicalizeForHarness); if (ts.startsWith(path, "/")) { return path.substring(1); diff --git a/src/harness/rwcRunner.ts b/src/harness/rwcRunner.ts index 2b4fc7b24e4..9e17aa84b0c 100644 --- a/src/harness/rwcRunner.ts +++ b/src/harness/rwcRunner.ts @@ -70,10 +70,11 @@ namespace RWC { opts.options.noEmitOnError = false; }); + let tsconfigFile: IOLogFile; runWithIOLog(ioLog, oldIO => { let fileNames = opts.fileNames; - const tsconfigFile = ts.forEach(ioLog.filesRead, f => isTsConfigFile(f) ? f : undefined); + tsconfigFile = ts.forEach(ioLog.filesRead, f => isTsConfigFile(f) ? f : undefined); if (tsconfigFile) { const tsconfigFileContents = getHarnessCompilerInputUnit(tsconfigFile.path); tsconfigFiles.push({ unitName: tsconfigFile.path, content: tsconfigFileContents.content }); @@ -155,6 +156,11 @@ namespace RWC { compilerResult = output.result; }); + if (!tsconfigFile) { + const files = inputFiles.map(f => Playback.sanitizeTestFilePath(f.unitName)); + Harness.IO.writeFile(`internal/cases/rwc/${baseName}/read/tsconfig.json`, JSON.stringify({ compilerOptions, files })); + } + function getHarnessCompilerInputUnit(fileName: string): Harness.Compiler.TestFile { const unitName = ts.normalizeSlashes(Harness.IO.resolvePath(fileName)); let content: string;