This change modifies the build scripts to use --legacy-peer-deps flag when installing npm dependencies to resolve potential peer dependency conflicts during the build process. The change is applied to both bash (build.sh) and batch (build.bat) build scripts.
96 lines
3.0 KiB
JavaScript
96 lines
3.0 KiB
JavaScript
/**
|
|
* @fileoverview TAP reporter
|
|
* @author Jonathan Kingston
|
|
*/
|
|
"use strict";
|
|
|
|
const yaml = require("js-yaml");
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Helper Functions
|
|
//------------------------------------------------------------------------------
|
|
|
|
/**
|
|
* Returns a canonical error level string based upon the error message passed in.
|
|
* @param {Object} message Individual error message provided by eslint
|
|
* @returns {string} Error level string
|
|
*/
|
|
function getMessageType(message) {
|
|
if (message.fatal || message.severity === 2) {
|
|
return "error";
|
|
}
|
|
return "warning";
|
|
}
|
|
|
|
/**
|
|
* Takes in a JavaScript object and outputs a TAP diagnostics string
|
|
* @param {Object} diagnostic JavaScript object to be embedded as YAML into output.
|
|
* @returns {string} diagnostics string with YAML embedded - TAP version 13 compliant
|
|
*/
|
|
function outputDiagnostics(diagnostic) {
|
|
const prefix = " ";
|
|
let output = `${prefix}---\n`;
|
|
|
|
output += prefix + yaml.dump(diagnostic).split("\n").join(`\n${prefix}`);
|
|
output += "...\n";
|
|
return output;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Public Interface
|
|
//------------------------------------------------------------------------------
|
|
|
|
module.exports = function(results) {
|
|
let output = `TAP version 13\n1..${results.length}\n`;
|
|
|
|
results.forEach((result, id) => {
|
|
const messages = result.messages;
|
|
let testResult = "ok";
|
|
let diagnostics = {};
|
|
|
|
if (messages.length > 0) {
|
|
messages.forEach(message => {
|
|
const severity = getMessageType(message);
|
|
const diagnostic = {
|
|
message: message.message,
|
|
severity,
|
|
data: {
|
|
line: message.line || 0,
|
|
column: message.column || 0,
|
|
ruleId: message.ruleId || ""
|
|
}
|
|
};
|
|
|
|
// This ensures a warning message is not flagged as error
|
|
if (severity === "error") {
|
|
testResult = "not ok";
|
|
}
|
|
|
|
/*
|
|
* If we have multiple messages place them under a messages key
|
|
* The first error will be logged as message key
|
|
* This is to adhere to TAP 13 loosely defined specification of having a message key
|
|
*/
|
|
if ("message" in diagnostics) {
|
|
if (typeof diagnostics.messages === "undefined") {
|
|
diagnostics.messages = [];
|
|
}
|
|
diagnostics.messages.push(diagnostic);
|
|
} else {
|
|
diagnostics = diagnostic;
|
|
}
|
|
});
|
|
}
|
|
|
|
output += `${testResult} ${id + 1} - ${result.filePath}\n`;
|
|
|
|
// If we have an error include diagnostics
|
|
if (messages.length > 0) {
|
|
output += outputDiagnostics(diagnostics);
|
|
}
|
|
|
|
});
|
|
|
|
return output;
|
|
};
|