Skip to content

Commit 8e2365b

Browse files
committed
Merge pull request microsoft#1606 from Microsoft/harnessDtsEmit
Fix harness issues with recompiling emitted .d.ts
2 parents 7459c87 + 7518d15 commit 8e2365b

File tree

3 files changed

+28
-49
lines changed

3 files changed

+28
-49
lines changed

src/harness/compilerRunner.ts

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,6 @@ class CompilerBaselineRunner extends RunnerBase {
6161
var otherFiles: { unitName: string; content: string }[];
6262
var harnessCompiler: Harness.Compiler.HarnessCompiler;
6363

64-
var declFileCompilationResult: {
65-
declInputFiles: { unitName: string; content: string }[];
66-
declOtherFiles: { unitName: string; content: string }[];
67-
declResult: Harness.Compiler.CompilerResult;
68-
};
69-
7064
var createNewInstance = false;
7165

7266
before(() => {
@@ -143,7 +137,6 @@ class CompilerBaselineRunner extends RunnerBase {
143137
toBeCompiled = undefined;
144138
otherFiles = undefined;
145139
harnessCompiler = undefined;
146-
declFileCompilationResult = undefined;
147140
});
148141

149142
function getByteOrderMarkText(file: Harness.Compiler.GeneratedFile): string {
@@ -179,13 +172,6 @@ class CompilerBaselineRunner extends RunnerBase {
179172
}
180173
});
181174

182-
// Compile .d.ts files
183-
it('Correct compiler generated.d.ts for ' + fileName, () => {
184-
declFileCompilationResult = harnessCompiler.compileDeclarationFiles(toBeCompiled, otherFiles, result, function (settings) {
185-
harnessCompiler.setCompilerSettings(tcSettings);
186-
}, options);
187-
});
188-
189175

190176
it('Correct JS output for ' + fileName, () => {
191177
if (!ts.fileExtensionIs(lastUnit.name, '.d.ts') && this.emit) {
@@ -223,6 +209,10 @@ class CompilerBaselineRunner extends RunnerBase {
223209
}
224210
}
225211

212+
var declFileCompilationResult = harnessCompiler.compileDeclarationFiles(toBeCompiled, otherFiles, result, function (settings) {
213+
harnessCompiler.setCompilerSettings(tcSettings);
214+
}, options);
215+
226216
if (declFileCompilationResult && declFileCompilationResult.declResult.errors.length) {
227217
jsCode += '\r\n\r\n//// [DtsFileErrors]\r\n';
228218
jsCode += '\r\n\r\n';

src/harness/harness.ts

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,29 +1127,27 @@ module Harness {
11271127
}
11281128

11291129
function findResultCodeFile(fileName: string) {
1130-
var dTsFileName = ts.forEach(result.program.getSourceFiles(), sourceFile => {
1131-
if (sourceFile.filename === fileName) {
1132-
// Is this file going to be emitted separately
1133-
var sourceFileName: string;
1134-
if (ts.isExternalModule(sourceFile) || !options.out) {
1135-
if (options.outDir) {
1136-
var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.filename, result.currentDirectoryForProgram);
1137-
sourceFilePath = sourceFilePath.replace(result.program.getCommonSourceDirectory(), "");
1138-
sourceFileName = ts.combinePaths(options.outDir, sourceFilePath);
1139-
}
1140-
else {
1141-
sourceFileName = sourceFile.filename;
1142-
}
1143-
}
1144-
else {
1145-
// Goes to single --out file
1146-
sourceFileName = options.out;
1147-
}
1148-
1149-
return ts.removeFileExtension(sourceFileName) + ".d.ts";
1130+
var sourceFile = result.program.getSourceFile(fileName);
1131+
assert(sourceFile, "Program has no source file with name '" + fileName + "'");
1132+
// Is this file going to be emitted separately
1133+
var sourceFileName: string;
1134+
if (ts.isExternalModule(sourceFile) || !options.out) {
1135+
if (options.outDir) {
1136+
var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.filename, result.currentDirectoryForProgram);
1137+
sourceFilePath = sourceFilePath.replace(result.program.getCommonSourceDirectory(), "");
1138+
sourceFileName = ts.combinePaths(options.outDir, sourceFilePath);
11501139
}
1151-
});
1140+
else {
1141+
sourceFileName = sourceFile.filename;
1142+
}
1143+
}
1144+
else {
1145+
// Goes to single --out file
1146+
sourceFileName = options.out;
1147+
}
11521148

1149+
var dTsFileName = ts.removeFileExtension(sourceFileName) + ".d.ts";
1150+
11531151
return ts.forEach(result.declFilesCode, declFile => declFile.fileName === dTsFileName ? declFile : undefined);
11541152
}
11551153

src/harness/rwcRunner.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,6 @@ module RWC {
2828
var compilerOptions: ts.CompilerOptions;
2929
var baselineOpts: Harness.Baseline.BaselineOptions = { Subfolder: 'rwc' };
3030
var baseName = /(.*)\/(.*).json/.exec(ts.normalizeSlashes(jsonPath))[2];
31-
// Compile .d.ts files
32-
var declFileCompilationResult: {
33-
declInputFiles: { unitName: string; content: string }[];
34-
declOtherFiles: { unitName: string; content: string }[];
35-
declResult: Harness.Compiler.CompilerResult;
36-
};
3731

3832
after(() => {
3933
// Mocha holds onto the closure environment of the describe callback even after the test is done.
@@ -44,7 +38,6 @@ module RWC {
4438
compilerOptions = undefined;
4539
baselineOpts = undefined;
4640
baseName = undefined;
47-
declFileCompilationResult = undefined;
4841
});
4942

5043
it('can compile', () => {
@@ -103,11 +96,6 @@ module RWC {
10396
}
10497
});
10598

106-
// Baselines
107-
it('Correct compiler generated.d.ts', () => {
108-
declFileCompilationResult = Harness.Compiler.getCompiler().compileDeclarationFiles(inputFiles, otherFiles, compilerResult, /*settingscallback*/ undefined, compilerOptions);
109-
});
110-
11199

112100
it('has the expected emitted code', () => {
113101
Harness.Baseline.runBaseline('has the expected emitted code', baseName + '.output.js', () => {
@@ -152,9 +140,12 @@ module RWC {
152140
}, false, baselineOpts);
153141
});
154142

155-
it('has no errors in generated declaration files', () => {
143+
// Ideally, a generated declaration file will have no errors. But we allow generated
144+
// declaration file errors as part of the baseline.
145+
it('has the expected errors in generated declaration files', () => {
156146
if (compilerOptions.declaration && !compilerResult.errors.length) {
157-
Harness.Baseline.runBaseline('has no errors in generated declaration files', baseName + '.dts.errors.txt', () => {
147+
Harness.Baseline.runBaseline('has the expected errors in generated declaration files', baseName + '.dts.errors.txt', () => {
148+
var declFileCompilationResult = Harness.Compiler.getCompiler().compileDeclarationFiles(inputFiles, otherFiles, compilerResult, /*settingscallback*/ undefined, compilerOptions);
158149
if (declFileCompilationResult.declResult.errors.length === 0) {
159150
return null;
160151
}

0 commit comments

Comments
 (0)