@isentinel/jest-roblox 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.mts +1 -1
- package/dist/cli.mjs +118 -28
- package/dist/{executor-D6BzDfQ_.d.mts → executor-CNz6_04-.d.mts} +1 -0
- package/dist/{game-output-BU-9pJ93.mjs → game-output-71ciORUU.mjs} +13 -14
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/sea/jest-roblox +0 -0
- package/dist/sea-entry.cjs +2534 -2654
- package/package.json +10 -10
package/dist/cli.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as ResolvedProjectConfig, n as ExecuteResult, v as CliOptions } from "./executor-
|
|
1
|
+
import { _ as ResolvedProjectConfig, n as ExecuteResult, v as CliOptions } from "./executor-CNz6_04-.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/cli.d.ts
|
|
4
4
|
declare function parseArgs(args: Array<string>): CliOptions;
|
package/dist/cli.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as hashBuffer, C as resolveNestedProjects, D as createStudioBackend, F as VALID_BACKENDS, P as ROOT_ONLY_KEYS, R as isValidBackend, S as collectPaths, _ as formatResult, a as formatAnnotations, b as formatBanner, c as execute, d as findFormatterOptions, g as formatMultiProjectResult, i as runTypecheck, k as createOpenCloudBackend, l as formatExecuteOutput, m as
|
|
1
|
+
import { A as hashBuffer, C as resolveNestedProjects, D as createStudioBackend, F as VALID_BACKENDS, P as ROOT_ONLY_KEYS, R as isValidBackend, S as collectPaths, _ as formatResult, a as formatAnnotations, b as formatBanner, c as execute, d as findFormatterOptions, g as formatMultiProjectResult, i as runTypecheck, k as createOpenCloudBackend, l as formatExecuteOutput, m as formatAgentMultiProject, n as parseGameOutput, o as formatJobSummary, p as writeJsonFile, r as writeGameOutput, s as resolveGitHubActionsOptions, t as formatGameOutputNotice, u as loadCoverageManifest, w as loadConfig$1, x as rojoProjectSchema, y as formatTypecheckSummary, z as LuauScriptError } from "./game-output-71ciORUU.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { type } from "arktype";
|
|
4
4
|
import assert from "node:assert";
|
|
@@ -23,7 +23,7 @@ import istanbulCoverage from "istanbul-lib-coverage";
|
|
|
23
23
|
import istanbulReport from "istanbul-lib-report";
|
|
24
24
|
import istanbulReports from "istanbul-reports";
|
|
25
25
|
//#region package.json
|
|
26
|
-
var version = "0.1.
|
|
26
|
+
var version = "0.1.5";
|
|
27
27
|
//#endregion
|
|
28
28
|
//#region src/backends/auto.ts
|
|
29
29
|
var StudioWithFallback = class {
|
|
@@ -929,6 +929,46 @@ function buildResult(pending, pendingFunctions, pendingBranches) {
|
|
|
929
929
|
return { files };
|
|
930
930
|
}
|
|
931
931
|
//#endregion
|
|
932
|
+
//#region src/coverage/merge-raw-coverage.ts
|
|
933
|
+
/**
|
|
934
|
+
* Additively merge two raw coverage datasets. Overlapping files have their
|
|
935
|
+
* hit counts summed (matching istanbul-lib-coverage's semantics).
|
|
936
|
+
*/
|
|
937
|
+
function mergeRawCoverage(target, source) {
|
|
938
|
+
if (target === void 0) return source;
|
|
939
|
+
if (source === void 0) return target;
|
|
940
|
+
const result = { ...target };
|
|
941
|
+
for (const [filePath, fileCoverage] of Object.entries(source)) {
|
|
942
|
+
const existing = result[filePath];
|
|
943
|
+
result[filePath] = existing === void 0 ? { ...fileCoverage } : mergeFileCoverage(existing, fileCoverage);
|
|
944
|
+
}
|
|
945
|
+
return result;
|
|
946
|
+
}
|
|
947
|
+
function sumScalars(a, b) {
|
|
948
|
+
const result = { ...a };
|
|
949
|
+
for (const [key, value] of Object.entries(b)) result[key] = (result[key] ?? 0) + value;
|
|
950
|
+
return result;
|
|
951
|
+
}
|
|
952
|
+
function sumBranches(a, b) {
|
|
953
|
+
const result = { ...a };
|
|
954
|
+
for (const [key, bArms] of Object.entries(b)) {
|
|
955
|
+
const aArms = result[key];
|
|
956
|
+
if (aArms === void 0) {
|
|
957
|
+
result[key] = [...bArms];
|
|
958
|
+
continue;
|
|
959
|
+
}
|
|
960
|
+
const length = Math.max(aArms.length, bArms.length);
|
|
961
|
+
result[key] = Array.from({ length }, (_, index) => (aArms[index] ?? 0) + (bArms[index] ?? 0));
|
|
962
|
+
}
|
|
963
|
+
return result;
|
|
964
|
+
}
|
|
965
|
+
function mergeFileCoverage(a, b) {
|
|
966
|
+
const merged = { s: sumScalars(a.s, b.s) };
|
|
967
|
+
if (a.f !== void 0 || b.f !== void 0) merged.f = sumScalars(a.f ?? {}, b.f ?? {});
|
|
968
|
+
if (a.b !== void 0 || b.b !== void 0) merged.b = sumBranches(a.b ?? {}, b.b ?? {});
|
|
969
|
+
return merged;
|
|
970
|
+
}
|
|
971
|
+
//#endregion
|
|
932
972
|
//#region src/luau/visitor.ts
|
|
933
973
|
function visitExpression(expression, visitor) {
|
|
934
974
|
if (visitor.visitExpr?.(expression) === false) return;
|
|
@@ -1935,19 +1975,35 @@ function printCoverageHeader() {
|
|
|
1935
1975
|
const header = ` ${color.blue("%")} ${color.dim("Coverage report from")} ${color.yellow("istanbul")}`;
|
|
1936
1976
|
process.stdout.write(`\n${header}\n`);
|
|
1937
1977
|
}
|
|
1978
|
+
const TEXT_REPORTERS = new Set(["text", "text-summary"]);
|
|
1938
1979
|
function generateReports(options) {
|
|
1939
|
-
const coverageMap = buildCoverageMap(options.mapped);
|
|
1980
|
+
const coverageMap = buildCoverageMap(filterMappedFiles(options.mapped, options.collectCoverageFrom));
|
|
1940
1981
|
const context = istanbulReport.createContext({
|
|
1941
1982
|
coverageMap,
|
|
1983
|
+
defaultSummarizer: options.agentMode === true ? "flat" : "pkg",
|
|
1942
1984
|
dir: options.coverageDirectory
|
|
1943
1985
|
});
|
|
1986
|
+
const terminalColumns = getTerminalColumns();
|
|
1987
|
+
const allFilesFull = options.agentMode === true && isAllFilesFull(coverageMap);
|
|
1944
1988
|
for (const reporterName of options.reporters) {
|
|
1945
1989
|
if (!isValidReporter(reporterName)) throw new Error(`Unknown coverage reporter: ${reporterName}`);
|
|
1946
|
-
|
|
1990
|
+
if (allFilesFull && TEXT_REPORTERS.has(reporterName)) {
|
|
1991
|
+
const fileCount = coverageMap.files().length;
|
|
1992
|
+
const label = fileCount === 1 ? "file" : "files";
|
|
1993
|
+
process.stdout.write(`Coverage: 100% (${fileCount} ${label})\n`);
|
|
1994
|
+
continue;
|
|
1995
|
+
}
|
|
1996
|
+
let reporterOptions = {};
|
|
1997
|
+
if (reporterName === "text") reporterOptions = {
|
|
1998
|
+
maxCols: terminalColumns,
|
|
1999
|
+
skipFull: options.agentMode === true
|
|
2000
|
+
};
|
|
2001
|
+
else if (TEXT_REPORTERS.has(reporterName)) reporterOptions = { skipFull: options.agentMode === true };
|
|
2002
|
+
istanbulReports.create(reporterName, reporterOptions).execute(context);
|
|
1947
2003
|
}
|
|
1948
2004
|
}
|
|
1949
|
-
function checkThresholds(mapped, thresholds) {
|
|
1950
|
-
const summary = buildCoverageMap(mapped).getCoverageSummary();
|
|
2005
|
+
function checkThresholds(mapped, thresholds, collectCoverageFrom) {
|
|
2006
|
+
const summary = buildCoverageMap(filterMappedFiles(mapped, collectCoverageFrom)).getCoverageSummary();
|
|
1951
2007
|
const failures = [];
|
|
1952
2008
|
const checks = [
|
|
1953
2009
|
{
|
|
@@ -1984,6 +2040,21 @@ function checkThresholds(mapped, thresholds) {
|
|
|
1984
2040
|
passed: failures.length === 0
|
|
1985
2041
|
};
|
|
1986
2042
|
}
|
|
2043
|
+
function getTerminalColumns() {
|
|
2044
|
+
if (process.stdout.columns !== void 0) return process.stdout.columns;
|
|
2045
|
+
const columnsEnvironment = process.env["COLUMNS"];
|
|
2046
|
+
if (columnsEnvironment === void 0) return;
|
|
2047
|
+
const parsed = Number(columnsEnvironment);
|
|
2048
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : void 0;
|
|
2049
|
+
}
|
|
2050
|
+
function isAllFilesFull(coverageMap) {
|
|
2051
|
+
const files = coverageMap.files();
|
|
2052
|
+
if (files.length === 0) return false;
|
|
2053
|
+
return files.every((file) => {
|
|
2054
|
+
const summary = coverageMap.fileCoverageFor(file).toSummary();
|
|
2055
|
+
return summary.statements.pct === 100 && summary.branches.pct === 100 && summary.functions.pct === 100 && summary.lines.pct === 100;
|
|
2056
|
+
});
|
|
2057
|
+
}
|
|
1987
2058
|
function buildCoverageMap(mapped) {
|
|
1988
2059
|
const coverageMap = istanbulCoverage.createCoverageMap({});
|
|
1989
2060
|
for (const [filePath, fileCoverage] of Object.entries(mapped.files)) {
|
|
@@ -2014,6 +2085,26 @@ function buildCoverageMap(mapped) {
|
|
|
2014
2085
|
}
|
|
2015
2086
|
return coverageMap;
|
|
2016
2087
|
}
|
|
2088
|
+
function createGlobMatcher(patterns) {
|
|
2089
|
+
const withPath = patterns.filter((pattern) => pattern.includes("/"));
|
|
2090
|
+
const withoutPath = patterns.filter((pattern) => !pattern.includes("/"));
|
|
2091
|
+
const matchers = [];
|
|
2092
|
+
if (withPath.length > 0) matchers.push(picomatch(withPath));
|
|
2093
|
+
if (withoutPath.length > 0) matchers.push(picomatch(withoutPath, { matchBase: true }));
|
|
2094
|
+
return (filePath) => matchers.some((matcher) => matcher(filePath));
|
|
2095
|
+
}
|
|
2096
|
+
function filterMappedFiles(mapped, collectCoverageFrom) {
|
|
2097
|
+
if (collectCoverageFrom === void 0 || collectCoverageFrom.length === 0) return mapped;
|
|
2098
|
+
const includePatterns = collectCoverageFrom.filter((pattern) => !pattern.startsWith("!"));
|
|
2099
|
+
const excludePatterns = collectCoverageFrom.filter((pattern) => pattern.startsWith("!")).map((pattern) => pattern.slice(1));
|
|
2100
|
+
const isIncluded = includePatterns.length > 0 ? createGlobMatcher(includePatterns) : () => true;
|
|
2101
|
+
const isExcluded = excludePatterns.length > 0 ? createGlobMatcher(excludePatterns) : () => false;
|
|
2102
|
+
const cwd = process.cwd();
|
|
2103
|
+
return { files: Object.fromEntries(Object.entries(mapped.files).filter(([filePath]) => {
|
|
2104
|
+
const relativePath = path$1.isAbsolute(filePath) ? path$1.relative(cwd, filePath).replaceAll("\\", "/") : filePath;
|
|
2105
|
+
return isIncluded(relativePath) && !isExcluded(relativePath);
|
|
2106
|
+
})) };
|
|
2107
|
+
}
|
|
2017
2108
|
function isValidReporter(name) {
|
|
2018
2109
|
return VALID_REPORTERS.has(name);
|
|
2019
2110
|
}
|
|
@@ -2065,6 +2156,7 @@ Options:
|
|
|
2065
2156
|
--no-color Disable colored output
|
|
2066
2157
|
-u, --updateSnapshot Update snapshot files
|
|
2067
2158
|
--coverage Enable coverage collection
|
|
2159
|
+
--collectCoverageFrom <glob> Globs for files to include in coverage (repeatable)
|
|
2068
2160
|
--coverageDirectory <path> Directory for coverage output (default: coverage)
|
|
2069
2161
|
--coverageReporters <r...> Coverage reporters (default: text, lcov)
|
|
2070
2162
|
--formatters <name...> Output formatters (default, agent, json, github-actions)
|
|
@@ -2100,6 +2192,10 @@ function parseArgs(args) {
|
|
|
2100
2192
|
options: {
|
|
2101
2193
|
"backend": { type: "string" },
|
|
2102
2194
|
"cache": { type: "boolean" },
|
|
2195
|
+
"collectCoverageFrom": {
|
|
2196
|
+
multiple: true,
|
|
2197
|
+
type: "string"
|
|
2198
|
+
},
|
|
2103
2199
|
"color": { type: "boolean" },
|
|
2104
2200
|
"config": { type: "string" },
|
|
2105
2201
|
"coverage": { type: "boolean" },
|
|
@@ -2168,6 +2264,7 @@ function parseArgs(args) {
|
|
|
2168
2264
|
backend: validateBackend(values.backend),
|
|
2169
2265
|
cache: values["no-cache"] === true ? false : values.cache,
|
|
2170
2266
|
collectCoverage: values.coverage,
|
|
2267
|
+
collectCoverageFrom: values.collectCoverageFrom,
|
|
2171
2268
|
color: values["no-color"] === true ? false : values.color,
|
|
2172
2269
|
config: values.config,
|
|
2173
2270
|
coverageDirectory: values.coverageDirectory,
|
|
@@ -2239,10 +2336,7 @@ function mergeProjectResults(results) {
|
|
|
2239
2336
|
totalMs += result.timing.totalMs;
|
|
2240
2337
|
uploadMs += result.timing.uploadMs ?? 0;
|
|
2241
2338
|
coverageMs += result.timing.coverageMs ?? 0;
|
|
2242
|
-
if (result.coverageData !== void 0) mergedCoverage =
|
|
2243
|
-
...mergedCoverage,
|
|
2244
|
-
...result.coverageData
|
|
2245
|
-
};
|
|
2339
|
+
if (result.coverageData !== void 0) mergedCoverage = mergeRawCoverage(mergedCoverage, result.coverageData);
|
|
2246
2340
|
}
|
|
2247
2341
|
return {
|
|
2248
2342
|
coverageData: mergedCoverage,
|
|
@@ -2323,6 +2417,12 @@ function printFinalStatus(passed) {
|
|
|
2323
2417
|
const badge = passed ? color.bgGreen(color.black(color.bold(" PASS "))) : color.bgRed(color.white(color.bold(" FAIL ")));
|
|
2324
2418
|
process.stdout.write(`${badge}\n`);
|
|
2325
2419
|
}
|
|
2420
|
+
function hasFormatter(config, name) {
|
|
2421
|
+
return config.formatters?.some((entry) => Array.isArray(entry) ? entry[0] === name : entry === name) === true;
|
|
2422
|
+
}
|
|
2423
|
+
function usesAgentFormatter(config) {
|
|
2424
|
+
return hasFormatter(config, "agent") && !config.verbose;
|
|
2425
|
+
}
|
|
2326
2426
|
function processCoverage(config, coverageData) {
|
|
2327
2427
|
if (!config.collectCoverage) return true;
|
|
2328
2428
|
if (coverageData === void 0) {
|
|
@@ -2338,12 +2438,14 @@ function processCoverage(config, coverageData) {
|
|
|
2338
2438
|
const coverageDirectory = path$1.resolve(config.rootDir, config.coverageDirectory);
|
|
2339
2439
|
if (!config.silent) printCoverageHeader();
|
|
2340
2440
|
generateReports({
|
|
2441
|
+
agentMode: usesAgentFormatter(config),
|
|
2442
|
+
collectCoverageFrom: config.collectCoverageFrom,
|
|
2341
2443
|
coverageDirectory,
|
|
2342
2444
|
mapped,
|
|
2343
2445
|
reporters: config.coverageReporters
|
|
2344
2446
|
});
|
|
2345
2447
|
if (config.coverageThreshold !== void 0) {
|
|
2346
|
-
const result = checkThresholds(mapped, config.coverageThreshold);
|
|
2448
|
+
const result = checkThresholds(mapped, config.coverageThreshold, config.collectCoverageFrom);
|
|
2347
2449
|
if (!result.passed) {
|
|
2348
2450
|
for (const failure of result.failures) process.stderr.write(`Coverage threshold not met for ${failure.metric}: ${String(failure.actual.toFixed(2))}% < ${String(failure.threshold)}%\n`);
|
|
2349
2451
|
return false;
|
|
@@ -2370,18 +2472,12 @@ function runGitHubActionsFormatter(config, result, sourceMapper) {
|
|
|
2370
2472
|
}
|
|
2371
2473
|
}
|
|
2372
2474
|
}
|
|
2373
|
-
function
|
|
2374
|
-
return config.formatters?.some((entry) => Array.isArray(entry) ? entry[0] === name : entry === name) === true;
|
|
2375
|
-
}
|
|
2376
|
-
function getCompactMaxFailures(config) {
|
|
2475
|
+
function getAgentMaxFailures(config) {
|
|
2377
2476
|
assert(config.formatters !== void 0, "formatters is set by resolveFormatters");
|
|
2378
2477
|
const options = findFormatterOptions(config.formatters, "agent");
|
|
2379
2478
|
if (options !== void 0 && typeof options["maxFailures"] === "number") return options["maxFailures"];
|
|
2380
2479
|
return 10;
|
|
2381
2480
|
}
|
|
2382
|
-
function usesAgentFormatter(config) {
|
|
2383
|
-
return hasFormatter(config, "agent") && !config.verbose;
|
|
2384
|
-
}
|
|
2385
2481
|
function usesDefaultFormatter(config) {
|
|
2386
2482
|
return !hasFormatter(config, "json") && !usesAgentFormatter(config);
|
|
2387
2483
|
}
|
|
@@ -2460,9 +2556,9 @@ function printMultiProjectOutput(options) {
|
|
|
2460
2556
|
const { config, merged, preCoverageMs, projectResults, typecheckResult } = options;
|
|
2461
2557
|
const timing = addCoverageTiming(merged.timing, preCoverageMs);
|
|
2462
2558
|
if (usesAgentFormatter(config)) {
|
|
2463
|
-
printOutput(
|
|
2559
|
+
printOutput(formatAgentMultiProject(toProjectEntries(projectResults), {
|
|
2464
2560
|
gameOutput: config.gameOutput,
|
|
2465
|
-
maxFailures:
|
|
2561
|
+
maxFailures: getAgentMaxFailures(config),
|
|
2466
2562
|
outputFile: config.outputFile,
|
|
2467
2563
|
rootDir: config.rootDir,
|
|
2468
2564
|
sourceMapper: merged.sourceMapper,
|
|
@@ -2741,16 +2837,9 @@ function validateBackend(value) {
|
|
|
2741
2837
|
function getLuauErrorHint(message) {
|
|
2742
2838
|
for (const [pattern, hint] of LUAU_ERROR_HINTS) if (pattern.test(message)) return hint;
|
|
2743
2839
|
}
|
|
2744
|
-
function normalizeFormatterName(name) {
|
|
2745
|
-
return name === "compact" ? "agent" : name;
|
|
2746
|
-
}
|
|
2747
|
-
function normalizeFormatterEntry(entry) {
|
|
2748
|
-
if (Array.isArray(entry)) return [normalizeFormatterName(entry[0]), entry[1]];
|
|
2749
|
-
return normalizeFormatterName(entry);
|
|
2750
|
-
}
|
|
2751
2840
|
function resolveFormatters(cli, config) {
|
|
2752
2841
|
const explicit = cli.formatters ?? config.formatters;
|
|
2753
|
-
if (explicit !== void 0) return explicit
|
|
2842
|
+
if (explicit !== void 0) return explicit;
|
|
2754
2843
|
const defaults = isAgent ? ["agent"] : ["default"];
|
|
2755
2844
|
if (process.env["GITHUB_ACTIONS"] === "true") defaults.push("github-actions");
|
|
2756
2845
|
return defaults;
|
|
@@ -2761,6 +2850,7 @@ function mergeCliWithConfig(cli, config) {
|
|
|
2761
2850
|
backend: cli.backend ?? config.backend,
|
|
2762
2851
|
cache: cli.cache ?? config.cache,
|
|
2763
2852
|
collectCoverage: cli.collectCoverage ?? config.collectCoverage,
|
|
2853
|
+
collectCoverageFrom: cli.collectCoverageFrom ?? config.collectCoverageFrom,
|
|
2764
2854
|
color: cli.color ?? config.color,
|
|
2765
2855
|
coverageDirectory: cli.coverageDirectory ?? config.coverageDirectory,
|
|
2766
2856
|
coverageReporters: cli.coverageReporters ?? config.coverageReporters,
|
|
@@ -2039,8 +2039,8 @@ function formatSnapshotLine(snapshot, styles) {
|
|
|
2039
2039
|
return `${styles.dim(" Snapshots")} ${styles.summary.failed(`${snapshot.unmatched} failed`)}`;
|
|
2040
2040
|
}
|
|
2041
2041
|
//#endregion
|
|
2042
|
-
//#region src/formatters/
|
|
2043
|
-
function
|
|
2042
|
+
//#region src/formatters/agent.ts
|
|
2043
|
+
function formatAgent(result, options) {
|
|
2044
2044
|
const lines = [];
|
|
2045
2045
|
const execErrors = result.testResults.filter(hasExecError);
|
|
2046
2046
|
if (result.numFailedTests > 0 || execErrors.length > 0) {
|
|
@@ -2052,15 +2052,15 @@ function formatCompact(result, options) {
|
|
|
2052
2052
|
lines.push(...failureLines);
|
|
2053
2053
|
}
|
|
2054
2054
|
for (const file of execErrors) lines.push(...formatExecError(file, options));
|
|
2055
|
-
const hints =
|
|
2055
|
+
const hints = formatAgentLogHints(options);
|
|
2056
2056
|
if (hints !== "") lines.push(hints);
|
|
2057
2057
|
}
|
|
2058
2058
|
lines.push(...formatSummarySection(result, options));
|
|
2059
2059
|
return lines.join("\n");
|
|
2060
2060
|
}
|
|
2061
|
-
function
|
|
2061
|
+
function formatAgentMultiProject(projects, options) {
|
|
2062
2062
|
const lines = [];
|
|
2063
|
-
for (const { displayName, result } of projects) lines.push(...
|
|
2063
|
+
for (const { displayName, result } of projects) lines.push(...formatAgentProjectHeader(displayName, result, options));
|
|
2064
2064
|
const stats = collectMultiProjectStats(projects);
|
|
2065
2065
|
if (stats.totalFailed + stats.allExecErrors.length > 0) lines.push(...formatMultiProjectFailures(projects, stats, options));
|
|
2066
2066
|
lines.push(...formatMultiProjectSummary(stats, options));
|
|
@@ -2139,7 +2139,7 @@ function formatSize(bytes) {
|
|
|
2139
2139
|
if (bytes < 1024) return `${bytes}b`;
|
|
2140
2140
|
return `${Math.round(bytes / 1024)}kb`;
|
|
2141
2141
|
}
|
|
2142
|
-
function
|
|
2142
|
+
function formatAgentLogHints(options) {
|
|
2143
2143
|
const lines = [];
|
|
2144
2144
|
if (options.outputFile !== void 0) {
|
|
2145
2145
|
const size = options.outputFileSize !== void 0 ? ` (${formatSize(options.outputFileSize)})` : "";
|
|
@@ -2249,7 +2249,7 @@ function getFailureSnippets(mappedLocations, location, snippetLevel, rootDirecto
|
|
|
2249
2249
|
if (location !== void 0) return getFallbackSnippet(location);
|
|
2250
2250
|
return [];
|
|
2251
2251
|
}
|
|
2252
|
-
function
|
|
2252
|
+
function formatAgentFailure(test, filePath, options, snippetLevel) {
|
|
2253
2253
|
const lines = [];
|
|
2254
2254
|
for (const originalMessage of test.failureMessages) {
|
|
2255
2255
|
let mappedLocations = [];
|
|
@@ -2278,11 +2278,11 @@ function formatFailures(result, totalFailures, options) {
|
|
|
2278
2278
|
lines.push(`... ${result.numFailedTests - index} more failures omitted`, "");
|
|
2279
2279
|
break;
|
|
2280
2280
|
}
|
|
2281
|
-
lines.push(
|
|
2281
|
+
lines.push(formatAgentFailure(test, filePath, options, snippetLevel));
|
|
2282
2282
|
}
|
|
2283
2283
|
return lines;
|
|
2284
2284
|
}
|
|
2285
|
-
function
|
|
2285
|
+
function formatAgentProjectHeader(displayName, result, options) {
|
|
2286
2286
|
const execErrors = result.testResults.filter(hasExecError);
|
|
2287
2287
|
const hasFailures = result.numFailedTests > 0 || execErrors.length > 0;
|
|
2288
2288
|
const failedFiles = result.testResults.filter((file) => file.numFailingTests > 0 || hasExecError(file)).length;
|
|
@@ -2330,7 +2330,7 @@ function formatMultiProjectFailures(projects, stats, options) {
|
|
|
2330
2330
|
];
|
|
2331
2331
|
for (const { result } of projects) if (result.numFailedTests > 0) lines.push(...formatFailures(result, totalFailures, options));
|
|
2332
2332
|
for (const file of stats.allExecErrors) lines.push(...formatExecError(file, options));
|
|
2333
|
-
const hints =
|
|
2333
|
+
const hints = formatAgentLogHints(options);
|
|
2334
2334
|
if (hints !== "") lines.push(hints);
|
|
2335
2335
|
return lines;
|
|
2336
2336
|
}
|
|
@@ -2442,7 +2442,7 @@ function formatExecuteOutput(options) {
|
|
|
2442
2442
|
const resolvedOutputFile = config.outputFile !== void 0 ? path$1.resolve(config.outputFile) : void 0;
|
|
2443
2443
|
const resolvedGameOutput = config.gameOutput !== void 0 ? path$1.resolve(config.gameOutput) : void 0;
|
|
2444
2444
|
const agentOptions = findFormatterOptions(config.formatters ?? [], "agent");
|
|
2445
|
-
if (agentOptions !== void 0 && !config.verbose) return
|
|
2445
|
+
if (agentOptions !== void 0 && !config.verbose) return formatAgent(result, {
|
|
2446
2446
|
gameOutput: resolvedGameOutput,
|
|
2447
2447
|
maxFailures: agentOptions.maxFailures ?? 10,
|
|
2448
2448
|
outputFile: resolvedOutputFile,
|
|
@@ -2806,8 +2806,7 @@ function createFileLink(options) {
|
|
|
2806
2806
|
//#endregion
|
|
2807
2807
|
//#region src/typecheck/collect.ts
|
|
2808
2808
|
const TEST_FUNCTIONS = new Set(["it", "test"]);
|
|
2809
|
-
const
|
|
2810
|
-
const ALL_FUNCTIONS = new Set([...SUITE_FUNCTIONS, ...TEST_FUNCTIONS]);
|
|
2809
|
+
const ALL_FUNCTIONS = new Set([...new Set(["describe", "suite"]), ...TEST_FUNCTIONS]);
|
|
2811
2810
|
function collectTestDefinitions(source) {
|
|
2812
2811
|
const result = parseSync("test.ts", source);
|
|
2813
2812
|
const raw = [];
|
|
@@ -3083,4 +3082,4 @@ function writeGameOutput(filePath, entries) {
|
|
|
3083
3082
|
fs$1.writeFileSync(absolutePath, JSON.stringify(entries, null, 2));
|
|
3084
3083
|
}
|
|
3085
3084
|
//#endregion
|
|
3086
|
-
export { hashBuffer as A, extractJsonFromOutput as B, resolveNestedProjects as C, createStudioBackend as D, StudioBackend as E, VALID_BACKENDS as F, defineConfig as I, defineProject as L, generateTestScript as M, DEFAULT_CONFIG as N, OpenCloudBackend as O, ROOT_ONLY_KEYS as P, isValidBackend as R, collectPaths as S, resolveConfig as T, parseJestOutput as V, formatResult as _, formatAnnotations as a, formatBanner as b, execute as c, findFormatterOptions as d, formatJson as f, formatMultiProjectResult as g, formatFailure as h, runTypecheck as i, buildJestArgv as j, createOpenCloudBackend as k, formatExecuteOutput as l,
|
|
3085
|
+
export { hashBuffer as A, extractJsonFromOutput as B, resolveNestedProjects as C, createStudioBackend as D, StudioBackend as E, VALID_BACKENDS as F, defineConfig as I, defineProject as L, generateTestScript as M, DEFAULT_CONFIG as N, OpenCloudBackend as O, ROOT_ONLY_KEYS as P, isValidBackend as R, collectPaths as S, resolveConfig as T, parseJestOutput as V, formatResult as _, formatAnnotations as a, formatBanner as b, execute as c, findFormatterOptions as d, formatJson as f, formatMultiProjectResult as g, formatFailure as h, runTypecheck as i, buildJestArgv as j, createOpenCloudBackend as k, formatExecuteOutput as l, formatAgentMultiProject as m, parseGameOutput as n, formatJobSummary as o, writeJsonFile as p, writeGameOutput as r, resolveGitHubActionsOptions as s, formatGameOutputNotice as t, loadCoverageManifest as u, formatTestSummary as v, loadConfig$1 as w, rojoProjectSchema as x, formatTypecheckSummary as y, LuauScriptError as z };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as defineConfig, C as FormatterEntry, D as ROOT_ONLY_KEYS, E as ProjectTestConfig, M as Argv, O as ResolvedConfig, S as DisplayName, T as ProjectEntry, _ as ResolvedProjectConfig, a as formatExecuteOutput, b as ConfigInput, c as Backend, d as extractJsonFromOutput, f as parseJestOutput, g as TestStatus, h as TestFileResult, i as execute, j as defineProject, k as SnapshotFormatOptions, l as BackendOptions, m as TestCaseResult, n as ExecuteResult, o as TimingResult, p as JestResult, r as FormatOutputOptions, s as SourceMapper, t as ExecuteOptions, u as BackendResult, v as CliOptions, w as InlineProjectConfig, x as DEFAULT_CONFIG, y as Config } from "./executor-
|
|
1
|
+
import { A as defineConfig, C as FormatterEntry, D as ROOT_ONLY_KEYS, E as ProjectTestConfig, M as Argv, O as ResolvedConfig, S as DisplayName, T as ProjectEntry, _ as ResolvedProjectConfig, a as formatExecuteOutput, b as ConfigInput, c as Backend, d as extractJsonFromOutput, f as parseJestOutput, g as TestStatus, h as TestFileResult, i as execute, j as defineProject, k as SnapshotFormatOptions, l as BackendOptions, m as TestCaseResult, n as ExecuteResult, o as TimingResult, p as JestResult, r as FormatOutputOptions, s as SourceMapper, t as ExecuteOptions, u as BackendResult, v as CliOptions, w as InlineProjectConfig, x as DEFAULT_CONFIG, y as Config } from "./executor-CNz6_04-.mjs";
|
|
2
2
|
import { WebSocket, WebSocketServer } from "ws";
|
|
3
3
|
import buffer from "node:buffer";
|
|
4
4
|
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { B as extractJsonFromOutput, D as createStudioBackend, E as StudioBackend, I as defineConfig, L as defineProject, M as generateTestScript, N as DEFAULT_CONFIG, O as OpenCloudBackend, P as ROOT_ONLY_KEYS, T as resolveConfig, V as parseJestOutput, _ as formatResult, a as formatAnnotations, c as execute, f as formatJson, h as formatFailure, i as runTypecheck, j as buildJestArgv, k as createOpenCloudBackend, l as formatExecuteOutput, n as parseGameOutput, o as formatJobSummary, p as writeJsonFile, r as writeGameOutput, t as formatGameOutputNotice, v as formatTestSummary, w as loadConfig } from "./game-output-
|
|
1
|
+
import { B as extractJsonFromOutput, D as createStudioBackend, E as StudioBackend, I as defineConfig, L as defineProject, M as generateTestScript, N as DEFAULT_CONFIG, O as OpenCloudBackend, P as ROOT_ONLY_KEYS, T as resolveConfig, V as parseJestOutput, _ as formatResult, a as formatAnnotations, c as execute, f as formatJson, h as formatFailure, i as runTypecheck, j as buildJestArgv, k as createOpenCloudBackend, l as formatExecuteOutput, n as parseGameOutput, o as formatJobSummary, p as writeJsonFile, r as writeGameOutput, t as formatGameOutputNotice, v as formatTestSummary, w as loadConfig } from "./game-output-71ciORUU.mjs";
|
|
2
2
|
export { DEFAULT_CONFIG, OpenCloudBackend, ROOT_ONLY_KEYS, StudioBackend, buildJestArgv, createOpenCloudBackend, createStudioBackend, defineConfig, defineProject, execute, extractJsonFromOutput, formatAnnotations, formatExecuteOutput, formatFailure, formatGameOutputNotice, formatJobSummary, formatJson, formatResult, formatTestSummary, generateTestScript, loadConfig, parseGameOutput, parseJestOutput, resolveConfig, runTypecheck, writeGameOutput, writeJsonFile };
|
package/dist/sea/jest-roblox
CHANGED
|
Binary file
|