Skip to content

Commit a32234c

Browse files
authored
Convert getErrorBaseline to use canonical diagnostic formatting (#9708)
* Convert getErrorBaseline to use canonical diagnostic formatting * Fix lint * Found another clone of format diagnostic - consolidate * Fully declone
1 parent e9240a8 commit a32234c

File tree

2 files changed

+4
-30
lines changed

2 files changed

+4
-30
lines changed

src/harness/harness.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1210,18 +1210,7 @@ namespace Harness {
12101210
}
12111211

12121212
export function minimalDiagnosticsToString(diagnostics: ts.Diagnostic[]) {
1213-
// This is basically copied from tsc.ts's reportError to replicate what tsc does
1214-
let errorOutput = "";
1215-
ts.forEach(diagnostics, diagnostic => {
1216-
if (diagnostic.file) {
1217-
const lineAndCharacter = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
1218-
errorOutput += diagnostic.file.fileName + "(" + (lineAndCharacter.line + 1) + "," + (lineAndCharacter.character + 1) + "): ";
1219-
}
1220-
1221-
errorOutput += ts.DiagnosticCategory[diagnostic.category].toLowerCase() + " TS" + diagnostic.code + ": " + ts.flattenDiagnosticMessageText(diagnostic.messageText, Harness.IO.newLine()) + Harness.IO.newLine();
1222-
});
1223-
1224-
return errorOutput;
1213+
return ts.formatDiagnostics(diagnostics, { getCanonicalFileName, getCurrentDirectory: () => "", getNewLine: () => Harness.IO.newLine() });
12251214
}
12261215

12271216
export function getErrorBaseline(inputFiles: TestFile[], diagnostics: ts.Diagnostic[]) {

src/harness/unittests/moduleResolution.ts

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,6 @@
11
/// <reference path="..\harness.ts" />
22

33
namespace ts {
4-
function diagnosticToString(diagnostic: Diagnostic) {
5-
let output = "";
6-
7-
if (diagnostic.file) {
8-
const loc = getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
9-
10-
output += `${diagnostic.file.fileName}(${loc.line + 1},${loc.character + 1}): `;
11-
}
12-
13-
const category = DiagnosticCategory[diagnostic.category].toLowerCase();
14-
output += `${category} TS${diagnostic.code}: ${flattenDiagnosticMessageText(diagnostic.messageText, sys.newLine)}${sys.newLine}`;
15-
16-
return output;
17-
}
18-
194
interface File {
205
name: string;
216
content?: string;
@@ -322,9 +307,9 @@ namespace ts {
322307

323308
assert.equal(program.getSourceFiles().length, expectedFilesCount);
324309
const syntacticDiagnostics = program.getSyntacticDiagnostics();
325-
assert.equal(syntacticDiagnostics.length, 0, `expect no syntactic diagnostics, got: ${JSON.stringify(syntacticDiagnostics.map(diagnosticToString))}`);
310+
assert.equal(syntacticDiagnostics.length, 0, `expect no syntactic diagnostics, got: ${JSON.stringify(Harness.Compiler.minimalDiagnosticsToString(syntacticDiagnostics))}`);
326311
const semanticDiagnostics = program.getSemanticDiagnostics();
327-
assert.equal(semanticDiagnostics.length, 0, `expect no semantic diagnostics, got: ${JSON.stringify(semanticDiagnostics.map(diagnosticToString))}`);
312+
assert.equal(semanticDiagnostics.length, 0, `expect no semantic diagnostics, got: ${JSON.stringify(Harness.Compiler.minimalDiagnosticsToString(semanticDiagnostics))}`);
328313

329314
// try to get file using a relative name
330315
for (const relativeFileName of relativeNamesToCheck) {
@@ -403,7 +388,7 @@ export = C;
403388
};
404389
const program = createProgram(rootFiles, options, host);
405390
const diagnostics = sortAndDeduplicateDiagnostics(program.getSemanticDiagnostics().concat(program.getOptionsDiagnostics()));
406-
assert.equal(diagnostics.length, diagnosticCodes.length, `Incorrect number of expected diagnostics, expected ${diagnosticCodes.length}, got '${map(diagnostics, diagnosticToString).join("\r\n")}'`);
391+
assert.equal(diagnostics.length, diagnosticCodes.length, `Incorrect number of expected diagnostics, expected ${diagnosticCodes.length}, got '${Harness.Compiler.minimalDiagnosticsToString(diagnostics)}'`);
407392
for (let i = 0; i < diagnosticCodes.length; i++) {
408393
assert.equal(diagnostics[i].code, diagnosticCodes[i], `Expected diagnostic code ${diagnosticCodes[i]}, got '${diagnostics[i].code}': '${diagnostics[i].messageText}'`);
409394
}

0 commit comments

Comments
 (0)