aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/vitest/dist/chunks/index.C5r1PdPD.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
commit76cb9c2a39d477a64824a985ade40507e3bbade1 (patch)
tree41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/vitest/dist/chunks/index.C5r1PdPD.js
parent819a39a21ac992b1393244a4c283bbb125208c69 (diff)
downloadneko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/vitest/dist/chunks/index.C5r1PdPD.js')
-rw-r--r--vanilla/node_modules/vitest/dist/chunks/index.C5r1PdPD.js231
1 files changed, 231 insertions, 0 deletions
diff --git a/vanilla/node_modules/vitest/dist/chunks/index.C5r1PdPD.js b/vanilla/node_modules/vitest/dist/chunks/index.C5r1PdPD.js
new file mode 100644
index 0000000..77cbe3b
--- /dev/null
+++ b/vanilla/node_modules/vitest/dist/chunks/index.C5r1PdPD.js
@@ -0,0 +1,231 @@
+import fs from 'node:fs';
+import { getTasks, getFullName, getTests } from '@vitest/runner/utils';
+import * as pathe from 'pathe';
+import c from 'tinyrainbow';
+import { g as getStateSymbol, t as truncateString, F as F_RIGHT, D as DefaultReporter, f as formatProjectName, s as separator } from './index.M8mOzt4Y.js';
+import { stripVTControlCharacters } from 'node:util';
+import { notNullish } from '@vitest/utils/helpers';
+
+function createBenchmarkJsonReport(files) {
+ const report = { files: [] };
+ for (const file of files) {
+ const groups = [];
+ for (const task of getTasks(file)) if (task?.type === "suite") {
+ const benchmarks = [];
+ for (const t of task.tasks) {
+ const benchmark = t.meta.benchmark && t.result?.benchmark;
+ if (benchmark) benchmarks.push({
+ id: t.id,
+ ...benchmark,
+ samples: []
+ });
+ }
+ if (benchmarks.length) groups.push({
+ fullName: getFullName(task, " > "),
+ benchmarks
+ });
+ }
+ report.files.push({
+ filepath: file.filepath,
+ groups
+ });
+ }
+ return report;
+}
+function flattenFormattedBenchmarkReport(report) {
+ const flat = {};
+ for (const file of report.files) for (const group of file.groups) for (const t of group.benchmarks) flat[t.id] = t;
+ return flat;
+}
+
+const outputMap = /* @__PURE__ */ new WeakMap();
+function formatNumber(number) {
+ const res = String(number.toFixed(number < 100 ? 4 : 2)).split(".");
+ return res[0].replace(/(?=(?:\d{3})+$)\B/g, ",") + (res[1] ? `.${res[1]}` : "");
+}
+const tableHead = [
+ "name",
+ "hz",
+ "min",
+ "max",
+ "mean",
+ "p75",
+ "p99",
+ "p995",
+ "p999",
+ "rme",
+ "samples"
+];
+function renderBenchmarkItems(result) {
+ return [
+ result.name,
+ formatNumber(result.hz || 0),
+ formatNumber(result.min || 0),
+ formatNumber(result.max || 0),
+ formatNumber(result.mean || 0),
+ formatNumber(result.p75 || 0),
+ formatNumber(result.p99 || 0),
+ formatNumber(result.p995 || 0),
+ formatNumber(result.p999 || 0),
+ `±${(result.rme || 0).toFixed(2)}%`,
+ (result.sampleCount || 0).toString()
+ ];
+}
+function computeColumnWidths(results) {
+ const rows = [tableHead, ...results.map((v) => renderBenchmarkItems(v))];
+ return Array.from(tableHead, (_, i) => Math.max(...rows.map((row) => stripVTControlCharacters(row[i]).length)));
+}
+function padRow(row, widths) {
+ return row.map((v, i) => i ? v.padStart(widths[i], " ") : v.padEnd(widths[i], " "));
+}
+function renderTableHead(widths) {
+ return " ".repeat(3) + padRow(tableHead, widths).map(c.bold).join(" ");
+}
+function renderBenchmark(result, widths) {
+ const padded = padRow(renderBenchmarkItems(result), widths);
+ return [
+ padded[0],
+ c.blue(padded[1]),
+ c.cyan(padded[2]),
+ c.cyan(padded[3]),
+ c.cyan(padded[4]),
+ c.cyan(padded[5]),
+ c.cyan(padded[6]),
+ c.cyan(padded[7]),
+ c.cyan(padded[8]),
+ c.dim(padded[9]),
+ c.dim(padded[10])
+ ].join(" ");
+}
+function renderTable(options) {
+ const output = [];
+ const benchMap = {};
+ for (const task of options.tasks) if (task.meta.benchmark && task.result?.benchmark) benchMap[task.id] = {
+ current: task.result.benchmark,
+ baseline: options.compare?.[task.id]
+ };
+ const benchCount = Object.entries(benchMap).length;
+ const columnWidths = computeColumnWidths(Object.values(benchMap).flatMap((v) => [v.current, v.baseline]).filter(notNullish));
+ let idx = 0;
+ const padding = " ".repeat(1 );
+ for (const task of options.tasks) {
+ const duration = task.result?.duration;
+ const bench = benchMap[task.id];
+ let prefix = "";
+ if (idx === 0 && task.meta?.benchmark) prefix += `${renderTableHead(columnWidths)}\n${padding}`;
+ prefix += ` ${getStateSymbol(task)} `;
+ let suffix = "";
+ if (task.type === "suite") suffix += c.dim(` (${getTests(task).length})`);
+ if (task.mode === "skip" || task.mode === "todo") suffix += c.dim(c.gray(" [skipped]"));
+ if (duration != null) {
+ const color = duration > options.slowTestThreshold ? c.yellow : c.green;
+ suffix += color(` ${Math.round(duration)}${c.dim("ms")}`);
+ }
+ if (options.showHeap && task.result?.heap != null) suffix += c.magenta(` ${Math.floor(task.result.heap / 1024 / 1024)} MB heap used`);
+ if (bench) {
+ let body = renderBenchmark(bench.current, columnWidths);
+ if (options.compare && bench.baseline) {
+ if (bench.current.hz) {
+ const diff = bench.current.hz / bench.baseline.hz;
+ const diffFixed = diff.toFixed(2);
+ if (diffFixed === "1.0.0") body += c.gray(` [${diffFixed}x]`);
+ if (diff > 1) body += c.blue(` [${diffFixed}x] ⇑`);
+ else body += c.red(` [${diffFixed}x] ⇓`);
+ }
+ output.push(padding + prefix + body + suffix);
+ const bodyBaseline = renderBenchmark(bench.baseline, columnWidths);
+ output.push(`${padding} ${bodyBaseline} ${c.dim("(baseline)")}`);
+ } else {
+ if (bench.current.rank === 1 && benchCount > 1) body += c.bold(c.green(" fastest"));
+ if (bench.current.rank === benchCount && benchCount > 2) body += c.bold(c.gray(" slowest"));
+ output.push(padding + prefix + body + suffix);
+ }
+ } else output.push(padding + prefix + task.name + suffix);
+ if (task.result?.state !== "pass" && outputMap.get(task) != null) {
+ let data = outputMap.get(task);
+ if (typeof data === "string") {
+ data = stripVTControlCharacters(data.trim().split("\n").filter(Boolean).pop());
+ if (data === "") data = void 0;
+ }
+ if (data != null) {
+ const out = ` ${" ".repeat(options.level)}${F_RIGHT} ${data}`;
+ output.push(c.gray(truncateString(out, options.columns)));
+ }
+ }
+ idx++;
+ }
+ return output.filter(Boolean).join("\n");
+}
+
+class BenchmarkReporter extends DefaultReporter {
+ compare;
+ async onInit(ctx) {
+ super.onInit(ctx);
+ if (this.ctx.config.benchmark?.compare) {
+ const compareFile = pathe.resolve(this.ctx.config.root, this.ctx.config.benchmark?.compare);
+ try {
+ this.compare = flattenFormattedBenchmarkReport(JSON.parse(await fs.promises.readFile(compareFile, "utf-8")));
+ } catch (e) {
+ this.error(`Failed to read '${compareFile}'`, e);
+ }
+ }
+ }
+ onTaskUpdate(packs) {
+ for (const pack of packs) {
+ const task = this.ctx.state.idMap.get(pack[0]);
+ if (task?.type === "suite" && task.result?.state !== "run") task.tasks.filter((task) => task.result?.benchmark).sort((benchA, benchB) => benchA.result.benchmark.mean - benchB.result.benchmark.mean).forEach((bench, idx) => {
+ bench.result.benchmark.rank = Number(idx) + 1;
+ });
+ }
+ }
+ onTestSuiteResult(testSuite) {
+ super.onTestSuiteResult(testSuite);
+ this.printSuiteTable(testSuite);
+ }
+ printTestModule(testModule) {
+ this.printSuiteTable(testModule);
+ }
+ printSuiteTable(testTask) {
+ const state = testTask.state();
+ if (state === "pending" || state === "queued") return;
+ const benches = testTask.task.tasks.filter((t) => t.meta.benchmark);
+ const duration = testTask.task.result?.duration || 0;
+ if (benches.length > 0 && benches.every((t) => t.result?.state !== "run" && t.result?.state !== "queued")) {
+ let title = `\n ${getStateSymbol(testTask.task)} ${formatProjectName(testTask.project)}${getFullName(testTask.task, separator)}`;
+ if (duration != null && duration > this.ctx.config.slowTestThreshold) title += c.yellow(` ${Math.round(duration)}${c.dim("ms")}`);
+ this.log(title);
+ this.log(renderTable({
+ tasks: benches,
+ level: 1,
+ columns: this.ctx.logger.getColumns(),
+ compare: this.compare,
+ showHeap: this.ctx.config.logHeapUsage,
+ slowTestThreshold: this.ctx.config.slowTestThreshold
+ }));
+ }
+ }
+ async onTestRunEnd(testModules, unhandledErrors, reason) {
+ super.onTestRunEnd(testModules, unhandledErrors, reason);
+ // write output for future comparison
+ let outputFile = this.ctx.config.benchmark?.outputJson;
+ if (outputFile) {
+ outputFile = pathe.resolve(this.ctx.config.root, outputFile);
+ const outputDirectory = pathe.dirname(outputFile);
+ if (!fs.existsSync(outputDirectory)) await fs.promises.mkdir(outputDirectory, { recursive: true });
+ const output = createBenchmarkJsonReport(testModules.map((t) => t.task.file));
+ await fs.promises.writeFile(outputFile, JSON.stringify(output, null, 2));
+ this.log(`Benchmark report written to ${outputFile}`);
+ }
+ }
+}
+
+class VerboseBenchmarkReporter extends BenchmarkReporter {
+ verbose = true;
+}
+
+const BenchmarkReportsMap = {
+ default: BenchmarkReporter,
+ verbose: VerboseBenchmarkReporter
+};
+
+export { BenchmarkReporter as B, VerboseBenchmarkReporter as V, BenchmarkReportsMap as a };