summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/lib/formatters/junit.js
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2017-12-22 16:53:42 +0100
committerMichaël Zasso <targos@protonmail.com>2018-01-11 09:48:05 +0100
commit3dc30632755713179f345f4af024bd904c6162d0 (patch)
treef28c4f6dd6dfc5992edf301449d1a371d229755b /tools/node_modules/eslint/lib/formatters/junit.js
parenta2c7085dd4a8e60d1a47572aca8bb6fcb7a32f88 (diff)
downloadandroid-node-v8-3dc30632755713179f345f4af024bd904c6162d0.tar.gz
android-node-v8-3dc30632755713179f345f4af024bd904c6162d0.tar.bz2
android-node-v8-3dc30632755713179f345f4af024bd904c6162d0.zip
tools: move eslint from tools to tools/node_modules
This is required because we need to add the babel-eslint dependency and it has to be able to resolve "eslint". babel-eslint is required to support future ES features such as async iterators and import.meta. Refs: https://github.com/nodejs/node/pull/17755 PR-URL: https://github.com/nodejs/node/pull/17820 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Diffstat (limited to 'tools/node_modules/eslint/lib/formatters/junit.js')
-rw-r--r--tools/node_modules/eslint/lib/formatters/junit.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/tools/node_modules/eslint/lib/formatters/junit.js b/tools/node_modules/eslint/lib/formatters/junit.js
new file mode 100644
index 0000000000..ca666bb14c
--- /dev/null
+++ b/tools/node_modules/eslint/lib/formatters/junit.js
@@ -0,0 +1,70 @@
+/**
+ * @fileoverview jUnit Reporter
+ * @author Jamund Ferguson
+ */
+"use strict";
+
+const xmlEscape = require("../util/xml-escape");
+
+//------------------------------------------------------------------------------
+// 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";
+
+}
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+module.exports = function(results) {
+
+ let output = "";
+
+ output += "<?xml version=\"1.1\" encoding=\"utf-8\"?>\n";
+ output += "<testsuites>\n";
+
+ results.forEach(result => {
+
+ const messages = result.messages;
+
+ 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"}">`;
+ 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}" />\n`;
+ output += "</testsuite>\n";
+ }
+
+ });
+
+ output += "</testsuites>\n";
+
+ return output;
+};