From 99721e51db6b8c7db7f119fb50a457d2a1945f4d Mon Sep 17 00:00:00 2001 From: Samuel Levy Date: Tue, 31 Oct 2017 08:06:15 +1000 Subject: [PATCH] Files with no failures get a "passing" testcase This fixes JUnit parsing errors which treat no testcases as a failure (e.g. Atlassian bamboo). --- lib/formatters/junit.js | 36 ++++++++++++++++++++--------------- tests/lib/formatters/junit.js | 15 ++++++++++++++- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/lib/formatters/junit.js b/lib/formatters/junit.js index 069ed5ff8f07..77d548f380e2 100644 --- a/lib/formatters/junit.js +++ b/lib/formatters/junit.js @@ -39,22 +39,28 @@ module.exports = function(results) { const messages = result.messages; - output += `\n`; - messages.forEach(message => { - const type = message.fatal ? "error" : "failure"; + if (messages.length > 0) { + output += `\n`; + messages.forEach(message => { + const type = message.fatal ? "error" : "failure"; - output += ``; - output += `<${type} message="${xmlEscape(message.message || "")}">`; - output += ""; - output += ``; - output += "\n"; - }); - output += "\n"; + output += ``; + output += `<${type} message="${xmlEscape(message.message || "")}">`; + output += ""; + output += ``; + output += "\n"; + }); + output += "\n"; + } else { + output += `\n`; + output += `\n`; + output += "\n"; + } }); diff --git a/tests/lib/formatters/junit.js b/tests/lib/formatters/junit.js index e0e0bfc37f00..c6995755d6fd 100644 --- a/tests/lib/formatters/junit.js +++ b/tests/lib/formatters/junit.js @@ -195,7 +195,20 @@ describe("formatter:junit", () => { it("should return 2 ", () => { const result = formatter(code); - assert.strictEqual(result.replace(/\n/g, ""), ""); + assert.strictEqual(result.replace(/\n/g, ""), ""); + }); + }); + + describe("when passed a file with no errors", () => { + const code = [{ + filePath: "foo.js", + messages: [] + }]; + + it("should print a passing ", () => { + const result = formatter(code); + + assert.strictEqual(result.replace(/\n/g, ""), ""); }); }); });