mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
43 lines
1.5 KiB
JavaScript
43 lines
1.5 KiB
JavaScript
// oxlint-disable no-console
|
|
|
|
import { join as pathJoin } from "path";
|
|
import { JsonReporter } from "vitest/node";
|
|
|
|
const currentDir = pathJoin(import.meta.dirname, "./"),
|
|
rootDir = pathJoin(currentDir, "../../"),
|
|
vitestPath = pathJoin(rootDir, "node_modules/.pnpm/@vitest+runner@");
|
|
|
|
export default class CustomReporter extends JsonReporter {
|
|
async writeReport(report) {
|
|
const { testResults, numPassedTestSuites, numTotalTestSuites } = JSON.parse(report);
|
|
|
|
const percentPassed = ((numPassedTestSuites * 100) / numTotalTestSuites).toFixed(2);
|
|
console.log(`\nPassed: ${numPassedTestSuites} of ${numTotalTestSuites} (${percentPassed}%)`);
|
|
|
|
if (numPassedTestSuites === numTotalTestSuites) return;
|
|
|
|
console.log("\nFailures:");
|
|
|
|
for (const testResult of testResults) {
|
|
if (testResult.status === "passed") continue;
|
|
|
|
const name = testResult.name.replace(currentDir, "./");
|
|
const message = testResult.message
|
|
? testResult.message.replace(rootDir, "./")
|
|
: testResult.assertionResults
|
|
.flatMap((result) => result.failureMessages.map(formatMessage))
|
|
.join("\n");
|
|
console.log();
|
|
console.log(name);
|
|
console.log(message);
|
|
}
|
|
}
|
|
}
|
|
|
|
function formatMessage(message) {
|
|
const lines = message.split("\n");
|
|
const index = lines.findIndex((line) => line.includes(vitestPath));
|
|
if (index !== -1) lines.length = index;
|
|
return lines.map((line) => line.replace("file://", "").replace(rootDir, "./")).join("\n");
|
|
}
|