Skip to content
This repository has been archived by the owner on Mar 25, 2021. It is now read-only.

Add junit output for files which are successfully linted. #4566

Merged
merged 5 commits into from Mar 10, 2019
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
20 changes: 19 additions & 1 deletion src/formatters/junitFormatter.ts
Expand Up @@ -41,7 +41,7 @@ export class Formatter extends AbstractFormatter {
};
/* tslint:enable:object-literal-sort-keys */

public format(failures: RuleFailure[]): string {
public format(failures: RuleFailure[], _fixes?: RuleFailure[], fileNames?: string[]): string {
let output = '<?xml version="1.0" encoding="utf-8"?><testsuites package="tslint">';

if (failures.length !== 0) {
Expand Down Expand Up @@ -76,6 +76,24 @@ export class Formatter extends AbstractFormatter {
}
}

if (fileNames !== undefined && fileNames.length !== 0) {
// Filter out files which have had a failure associated with them.
const filteredFileNames = fileNames.filter(fileName => {
for (const failure of failures) {
if (fileName === failure.getFileName()) {
JoshuaKGoldberg marked this conversation as resolved.
Show resolved Hide resolved
return false;
}
}
return true;
});

for (const fileName of filteredFileNames) {
output += `<testsuite name="${this.escapeXml(fileName)}" errors="0">`;
output += `<testcase name="${this.escapeXml(fileName)}" />`;
output += `</testsuite>`;
}
}

output += "</testsuites>";
return output;
}
Expand Down
22 changes: 16 additions & 6 deletions test/formatters/junitFormatterTests.ts
Expand Up @@ -106,14 +106,24 @@ describe("JUnit Formatter", () => {
</testsuite>
</testsuites>`.replace(/>\s+/g, ">"); // Remove whitespace between tags;

assert.equal(formatter.format(failures), expectedResult);
assert.equal(formatter.format(failures, [], [TEST_FILE_1, TEST_FILE_2]), expectedResult);
});
JoshuaKGoldberg marked this conversation as resolved.
Show resolved Hide resolved

it("handles no failures", () => {
const result = formatter.format([]);
assert.deepEqual(
result,
'<?xml version="1.0" encoding="utf-8"?><testsuites package="tslint"></testsuites>',
);
const result = formatter.format([], [], ["test1.ts", "test2.ts", "test3.ts"]);
const expectedResult = `<?xml version="1.0" encoding="utf-8"?>
<testsuites package="tslint">
<testsuite name="test1.ts" errors="0">
<testcase name="test1.ts" />
</testsuite>
<testsuite name="test2.ts" errors="0">
<testcase name="test2.ts" />
</testsuite>
<testsuite name="test3.ts" errors="0">
<testcase name="test3.ts" />
</testsuite>
</testsuites>`.replace(/>\s+/g, ">");

assert.equal(result, expectedResult);
});
});