%PDF- %PDF-
Direktori : /var/www/html/node_modules/eslint/lib/cli-engine/formatters/ |
Current File : /var/www/html/node_modules/eslint/lib/cli-engine/formatters/junit.js |
/** * @fileoverview jUnit Reporter * @author Jamund Ferguson */ "use strict"; const xmlEscape = require("../xml-escape"); const path = require("path"); //------------------------------------------------------------------------------ // Helper Functions //------------------------------------------------------------------------------ /** * Returns the severity of warning or error * @param {Object} message message object to examine * @returns {string} severity level * @private */ function getMessageType(message) { if (message.fatal || message.severity === 2) { return "Error"; } return "Warning"; } /** * Returns a full file path without extension * @param {string} filePath input file path * @returns {string} file path without extension * @private */ function pathWithoutExt(filePath) { return path.join(path.dirname(filePath), path.basename(filePath, path.extname(filePath))); } //------------------------------------------------------------------------------ // Public Interface //------------------------------------------------------------------------------ module.exports = function(results) { let output = ""; output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; output += "<testsuites>\n"; results.forEach(result => { const messages = result.messages; const classname = pathWithoutExt(result.filePath); if (messages.length > 0) { output += `<testsuite package="org.eslint" time="0" tests="${messages.length}" errors="${messages.length}" name="${result.filePath}">\n`; messages.forEach(message => { const type = message.fatal ? "error" : "failure"; output += `<testcase time="0" name="org.eslint.${message.ruleId || "unknown"}" classname="${classname}">`; output += `<${type} message="${xmlEscape(message.message || "")}">`; output += "<![CDATA["; output += `line ${message.line || 0}, col `; output += `${message.column || 0}, ${getMessageType(message)}`; output += ` - ${xmlEscape(message.message || "")}`; output += (message.ruleId ? ` (${message.ruleId})` : ""); output += "]]>"; output += `</${type}>`; output += "</testcase>\n"; }); output += "</testsuite>\n"; } else { output += `<testsuite package="org.eslint" time="0" tests="1" errors="0" name="${result.filePath}">\n`; output += `<testcase time="0" name="${result.filePath}" classname="${classname}" />\n`; output += "</testsuite>\n"; } }); output += "</testsuites>\n"; return output; };