challenge-algorithms-v2.0-u.../node_modules/@jest/reporters/build/GitHubActionsReporter.js

83 lines
2.5 KiB
JavaScript

'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.default = void 0;
function _stripAnsi() {
const data = _interopRequireDefault(require('strip-ansi'));
_stripAnsi = function () {
return data;
};
return data;
}
function _jestMessageUtil() {
const data = require('jest-message-util');
_jestMessageUtil = function () {
return data;
};
return data;
}
var _BaseReporter = _interopRequireDefault(require('./BaseReporter'));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {default: obj};
}
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const titleSeparator = ' \u203A ';
class GitHubActionsReporter extends _BaseReporter.default {
static filename = __filename;
onTestFileResult({context}, {testResults}) {
testResults.forEach(result => {
const title = [...result.ancestorTitles, result.title].join(
titleSeparator
);
result.retryReasons?.forEach((retryReason, index) => {
this.#createAnnotation({
...this.#getMessageDetails(retryReason, context.config),
title: `RETRY ${index + 1}: ${title}`,
type: 'warning'
});
});
result.failureMessages.forEach(failureMessage => {
this.#createAnnotation({
...this.#getMessageDetails(failureMessage, context.config),
title,
type: 'error'
});
});
});
}
#getMessageDetails(failureMessage, config) {
const {message, stack} = (0, _jestMessageUtil().separateMessageFromStack)(
failureMessage
);
const stackLines = (0, _jestMessageUtil().getStackTraceLines)(stack);
const topFrame = (0, _jestMessageUtil().getTopFrame)(stackLines);
const normalizedStackLines = stackLines.map(line =>
(0, _jestMessageUtil().formatPath)(line, config)
);
const messageText = [message, ...normalizedStackLines].join('\n');
return {
file: topFrame?.file,
line: topFrame?.line,
message: messageText
};
}
#createAnnotation({file, line, message, title, type}) {
message = (0, _stripAnsi().default)(
// copied from: https://github.com/actions/toolkit/blob/main/packages/core/src/command.ts
message.replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A')
);
this.log(
`\n::${type} file=${file},line=${line},title=${title}::${message}`
);
}
}
exports.default = GitHubActionsReporter;