Files
codeql-action/node_modules/supertap/dist/index.js
Henry Mercer bea5e4b220 Update ava to 4.3.3
The [release notes](https://github.com/avajs/ava/releases/tag/v4.3.3)
mention compatibility with Node 18.8.
2022-09-02 18:02:07 +01:00

68 lines
2.3 KiB
JavaScript

import { serializeError } from 'serialize-error';
import indentString from 'indent-string';
import stripAnsi from 'strip-ansi';
import yaml from 'js-yaml';
const serializeErrorForTap = (error) => {
var _a;
const object = serializeError(error);
object['at'] = ((_a = object.stack) !== null && _a !== void 0 ? _a : '')
.split('\n')
.slice(1, 2)
.map((line) => line.replace(/at/, '').trim())
.shift();
delete object.stack;
return object;
};
export const start = () => 'TAP version 13';
export const test = (title, options) => {
const { error } = options;
let { passed } = options;
let directive = '';
if (!error) {
if (options.todo) {
directive = '# TODO';
passed = false;
}
else if (options.skip) {
directive = '# SKIP';
passed = true;
}
}
let comment = '';
if (options.comment) {
const comments = Array.isArray(options.comment)
? options.comment
: [options.comment];
comment = comments
.map(line => indentString(line, 4).replace(/^ {4}/gm, '# '))
.join('\n');
}
const output = [
`${passed ? 'ok' : 'not ok'} ${options.index} - ${stripAnsi(title)} ${directive}`.trim(),
comment,
];
if (error) {
const object = error instanceof Error ? serializeErrorForTap(error) : error;
output.push([' ---', indentString(yaml.safeDump(object).trim(), 4), ' ...'].join('\n'));
}
return output.filter(Boolean).join('\n');
};
export const finish = (stats) => {
var _a, _b, _c, _d, _e;
stats = stats !== null && stats !== void 0 ? stats : {};
const passed = (_a = stats.passed) !== null && _a !== void 0 ? _a : 0;
const failed = (_b = stats.failed) !== null && _b !== void 0 ? _b : 0;
const skipped = (_c = stats.skipped) !== null && _c !== void 0 ? _c : 0;
const todo = (_d = stats.todo) !== null && _d !== void 0 ? _d : 0;
const crashed = (_e = stats.crashed) !== null && _e !== void 0 ? _e : 0;
return [
`\n1..${passed + failed + skipped + todo}`,
`# tests ${passed + failed + skipped}`,
`# pass ${passed}`,
skipped > 0 ? `# skip ${skipped}` : null,
`# fail ${failed + crashed + todo}\n`,
]
.filter(Boolean)
.join('\n');
};