UNPKG

2.32 kBJavaScriptView Raw
1/**
2 * @fileoverview jUnit Reporter
3 * @author Jamund Ferguson
4 */
5"use strict";
6
7const xmlEscape = require("../util/xml-escape");
8
9//------------------------------------------------------------------------------
10// Helper Functions
11//------------------------------------------------------------------------------
12
13/**
14 * Returns the severity of warning or error
15 * @param {Object} message message object to examine
16 * @returns {string} severity level
17 * @private
18 */
19function getMessageType(message) {
20 if (message.fatal || message.severity === 2) {
21 return "Error";
22 }
23 return "Warning";
24
25}
26
27//------------------------------------------------------------------------------
28// Public Interface
29//------------------------------------------------------------------------------
30
31module.exports = function(results) {
32
33 let output = "";
34
35 output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
36 output += "<testsuites>\n";
37
38 results.forEach(result => {
39
40 const messages = result.messages;
41
42 if (messages.length > 0) {
43 output += `<testsuite package="org.eslint" time="0" tests="${messages.length}" errors="${messages.length}" name="${result.filePath}">\n`;
44 messages.forEach(message => {
45 const type = message.fatal ? "error" : "failure";
46
47 output += `<testcase time="0" name="org.eslint.${message.ruleId || "unknown"}">`;
48 output += `<${type} message="${xmlEscape(message.message || "")}">`;
49 output += "<![CDATA[";
50 output += `line ${message.line || 0}, col `;
51 output += `${message.column || 0}, ${getMessageType(message)}`;
52 output += ` - ${xmlEscape(message.message || "")}`;
53 output += (message.ruleId ? ` (${message.ruleId})` : "");
54 output += "]]>";
55 output += `</${type}>`;
56 output += "</testcase>\n";
57 });
58 output += "</testsuite>\n";
59 } else {
60 output += `<testsuite package="org.eslint" time="0" tests="1" errors="0" name="${result.filePath}">\n`;
61 output += `<testcase time="0" name="${result.filePath}" />\n`;
62 output += "</testsuite>\n";
63 }
64
65 });
66
67 output += "</testsuites>\n";
68
69 return output;
70};