@rpcbase/test 0.357.0 → 0.359.0
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/clearDatabase.js +12 -10
- package/dist/clearDatabase.js.map +1 -1
- package/dist/cli.js +556 -439
- package/dist/cli.js.map +1 -1
- package/dist/coverage/collect.js +101 -63
- package/dist/coverage/collect.js.map +1 -1
- package/dist/coverage/config-loader.js +230 -180
- package/dist/coverage/config-loader.js.map +1 -1
- package/dist/coverage/config.js +100 -76
- package/dist/coverage/config.js.map +1 -1
- package/dist/coverage/console-text-report.js +220 -175
- package/dist/coverage/console-text-report.js.map +1 -1
- package/dist/coverage/files.js +58 -45
- package/dist/coverage/files.js.map +1 -1
- package/dist/coverage/fixtures.js +38 -27
- package/dist/coverage/fixtures.js.map +1 -1
- package/dist/coverage/global-setup.js +18 -15
- package/dist/coverage/global-setup.js.map +1 -1
- package/dist/coverage/index.js +55 -38
- package/dist/coverage/index.js.map +1 -1
- package/dist/coverage/report.js +466 -341
- package/dist/coverage/report.js.map +1 -1
- package/dist/coverage/reporter.js +60 -47
- package/dist/coverage/reporter.js.map +1 -1
- package/dist/coverage/v8-tracker.js +147 -115
- package/dist/coverage/v8-tracker.js.map +1 -1
- package/dist/index.js +75 -46
- package/dist/index.js.map +1 -1
- package/dist/runners/playwright.js +563 -438
- package/dist/runners/playwright.js.map +1 -1
- package/dist/runners/process.d.ts.map +1 -1
- package/dist/runners/process.js +183 -125
- package/dist/runners/process.js.map +1 -1
- package/dist/runners/vitest.js +171 -124
- package/dist/runners/vitest.js.map +1 -1
- package/dist/serverCoverage.js +42 -28
- package/dist/serverCoverage.js.map +1 -1
- package/dist/vitest.config.d.ts +1 -1
- package/dist/vitest.config.js +74 -62
- package/dist/vitest.config.js.map +1 -1
- package/package.json +4 -4
package/dist/coverage/config.js
CHANGED
|
@@ -1,88 +1,112 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
statements: 75
|
|
2
|
+
const DEFAULT_THRESHOLDS = {
|
|
3
|
+
branches: 60,
|
|
4
|
+
functions: 75,
|
|
5
|
+
lines: 75,
|
|
6
|
+
statements: 75
|
|
8
7
|
};
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const THRESHOLD_KEYS = Object.keys(DEFAULT_THRESHOLDS);
|
|
9
|
+
const THRESHOLD_KEY_SET = new Set(THRESHOLD_KEYS);
|
|
11
10
|
function createCoverageConfig(options) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
11
|
+
const {
|
|
12
|
+
rootDir
|
|
13
|
+
} = options;
|
|
14
|
+
if (!rootDir) {
|
|
15
|
+
throw new Error("createCoverageConfig requires a rootDir");
|
|
16
|
+
}
|
|
17
|
+
const resolvedRootDir = path.resolve(rootDir);
|
|
18
|
+
const includeAllFiles = options.includeAllFiles !== false;
|
|
19
|
+
const collectCoverageFrom = Array.isArray(options.collectCoverageFrom) ? options.collectCoverageFrom.map((pattern) => String(pattern ?? "").trim()).filter((pattern) => pattern.length > 0) : [];
|
|
20
|
+
if (collectCoverageFrom.length === 0) {
|
|
21
|
+
throw new Error("createCoverageConfig requires a collectCoverageFrom option");
|
|
22
|
+
}
|
|
23
|
+
const testResultsRoot = path.join(resolvedRootDir, "build", "coverage");
|
|
24
|
+
const coverageReportDir = path.join(testResultsRoot, "report");
|
|
25
|
+
const coverageFileName = options.coverageFileName ?? "v8-coverage.json";
|
|
26
|
+
const disabledEnvVar = options.disabledEnvVar ?? "RB_DISABLE_COVERAGE";
|
|
27
|
+
const coverageEnabled = process.env[disabledEnvVar] !== "1";
|
|
28
|
+
const {
|
|
29
|
+
global: thresholds,
|
|
30
|
+
targets: thresholdTargets
|
|
31
|
+
} = normalizeThresholdOptions(options.thresholds);
|
|
32
|
+
return {
|
|
33
|
+
rootDir: resolvedRootDir,
|
|
34
|
+
collectCoverageFrom,
|
|
35
|
+
testResultsRoot,
|
|
36
|
+
coverageReportDir,
|
|
37
|
+
coverageFileName,
|
|
38
|
+
thresholds,
|
|
39
|
+
thresholdTargets,
|
|
40
|
+
coverageEnabled,
|
|
41
|
+
disabledEnvVar,
|
|
42
|
+
includeAllFiles
|
|
43
|
+
};
|
|
36
44
|
}
|
|
37
45
|
function normalizeThresholdOptions(rawThresholds) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
46
|
+
const globalThresholds = {
|
|
47
|
+
...DEFAULT_THRESHOLDS
|
|
48
|
+
};
|
|
49
|
+
const targets = [];
|
|
50
|
+
if (!isPlainObject(rawThresholds)) {
|
|
51
|
+
return {
|
|
52
|
+
global: globalThresholds,
|
|
53
|
+
targets
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const thresholdMap = rawThresholds;
|
|
57
|
+
for (const key of THRESHOLD_KEYS) {
|
|
58
|
+
const value = thresholdMap[key];
|
|
59
|
+
if (isThresholdValue(value)) {
|
|
60
|
+
globalThresholds[key] = value;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (Object.prototype.hasOwnProperty.call(thresholdMap, "global")) {
|
|
64
|
+
if (!isPlainObject(thresholdMap.global)) {
|
|
65
|
+
throw new Error("coverage thresholds: the `global` override must be an object of metric values");
|
|
66
|
+
}
|
|
67
|
+
Object.assign(globalThresholds, pickThresholdOverrides(thresholdMap.global));
|
|
68
|
+
}
|
|
69
|
+
for (const [pattern, overrides] of Object.entries(thresholdMap)) {
|
|
70
|
+
if (pattern === "global" || THRESHOLD_KEY_SET.has(pattern)) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (!isPlainObject(overrides)) {
|
|
74
|
+
throw new Error(`coverage thresholds: override for "${pattern}" must be an object containing coverage metrics`);
|
|
75
|
+
}
|
|
76
|
+
targets.push({
|
|
77
|
+
id: pattern,
|
|
78
|
+
pattern,
|
|
79
|
+
thresholds: {
|
|
80
|
+
...globalThresholds,
|
|
81
|
+
...pickThresholdOverrides(overrides)
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
global: globalThresholds,
|
|
87
|
+
targets
|
|
88
|
+
};
|
|
69
89
|
}
|
|
70
90
|
function pickThresholdOverrides(source) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
91
|
+
const overrides = {};
|
|
92
|
+
if (!isPlainObject(source)) {
|
|
93
|
+
return overrides;
|
|
94
|
+
}
|
|
95
|
+
for (const key of THRESHOLD_KEYS) {
|
|
96
|
+
const value = source[key];
|
|
97
|
+
if (isThresholdValue(value)) {
|
|
98
|
+
overrides[key] = value;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return overrides;
|
|
78
102
|
}
|
|
79
103
|
function isPlainObject(value) {
|
|
80
|
-
|
|
104
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
81
105
|
}
|
|
82
106
|
function isThresholdValue(value) {
|
|
83
|
-
|
|
107
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
84
108
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
//# sourceMappingURL=config.js.map
|
|
109
|
+
export {
|
|
110
|
+
createCoverageConfig
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../src/coverage/config.ts"],"sourcesContent":["import path from \"node:path\"\n\nimport type { CoverageConfig, CoverageHarnessOptions, CoverageThresholdMap, CoverageThresholdOption, CoverageThresholdTarget, CoverageThresholds } from \"./types\"\n\n\nconst DEFAULT_THRESHOLDS = {\n branches: 60,\n functions: 75,\n lines: 75,\n statements: 75,\n}\n\nconst THRESHOLD_KEYS = Object.keys(DEFAULT_THRESHOLDS) as Array<keyof CoverageThresholds>\nconst THRESHOLD_KEY_SET = new Set<string>(THRESHOLD_KEYS as string[])\n\nexport function createCoverageConfig(options: CoverageHarnessOptions): CoverageConfig {\n const { rootDir } = options as CoverageHarnessOptions\n if (!rootDir) {\n throw new Error(\"createCoverageConfig requires a rootDir\")\n }\n\n const resolvedRootDir = path.resolve(rootDir)\n const includeAllFiles = options.includeAllFiles !== false\n\n const collectCoverageFrom = Array.isArray(options.collectCoverageFrom)\n ? options.collectCoverageFrom\n .map((pattern) => String(pattern ?? \"\").trim())\n .filter((pattern) => pattern.length > 0)\n : []\n\n if (collectCoverageFrom.length === 0) {\n throw new Error(\"createCoverageConfig requires a collectCoverageFrom option\")\n }\n\n const testResultsRoot = path.join(resolvedRootDir, \"build\", \"coverage\")\n const coverageReportDir = path.join(testResultsRoot, \"report\")\n const coverageFileName = options.coverageFileName ?? \"v8-coverage.json\"\n const disabledEnvVar = options.disabledEnvVar ?? \"RB_DISABLE_COVERAGE\"\n const coverageEnabled = process.env[disabledEnvVar] !== \"1\"\n\n const { global: thresholds, targets: thresholdTargets } = normalizeThresholdOptions(options.thresholds)\n\n return {\n rootDir: resolvedRootDir,\n collectCoverageFrom,\n testResultsRoot,\n coverageReportDir,\n coverageFileName,\n thresholds,\n thresholdTargets,\n coverageEnabled,\n disabledEnvVar,\n includeAllFiles,\n }\n}\n\nfunction normalizeThresholdOptions(rawThresholds: CoverageThresholdOption | undefined): {\n global: CoverageThresholds\n targets: CoverageThresholdTarget[]\n} {\n const globalThresholds: CoverageThresholds = { ...DEFAULT_THRESHOLDS }\n const targets: CoverageThresholdTarget[] = []\n\n if (!isPlainObject(rawThresholds)) {\n return { global: globalThresholds, targets }\n }\n\n const thresholdMap = rawThresholds as CoverageThresholdMap\n\n for (const key of THRESHOLD_KEYS) {\n const value = thresholdMap[key]\n if (isThresholdValue(value)) {\n globalThresholds[key] = value\n }\n }\n\n if (Object.prototype.hasOwnProperty.call(thresholdMap, \"global\")) {\n if (!isPlainObject(thresholdMap.global)) {\n throw new Error(\"coverage thresholds: the `global` override must be an object of metric values\")\n }\n Object.assign(globalThresholds, pickThresholdOverrides(thresholdMap.global))\n }\n\n for (const [pattern, overrides] of Object.entries(thresholdMap)) {\n if (pattern === \"global\" || THRESHOLD_KEY_SET.has(pattern)) {\n continue\n }\n\n if (!isPlainObject(overrides)) {\n throw new Error(\n `coverage thresholds: override for \"${pattern}\" must be an object containing coverage metrics`,\n )\n }\n\n targets.push({\n id: pattern,\n pattern,\n thresholds: {\n ...globalThresholds,\n ...pickThresholdOverrides(overrides),\n },\n })\n }\n\n return { global: globalThresholds, targets }\n}\n\nfunction pickThresholdOverrides(source: unknown): Partial<CoverageThresholds> {\n const overrides: Partial<CoverageThresholds> = {}\n if (!isPlainObject(source)) {\n return overrides\n }\n\n for (const key of THRESHOLD_KEYS) {\n const value = (source as any)[key]\n if (isThresholdValue(value)) {\n overrides[key] = value\n }\n }\n\n return overrides\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value)\n}\n\nfunction isThresholdValue(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value)\n}\n"],"names":["DEFAULT_THRESHOLDS","branches","functions","lines","statements","THRESHOLD_KEYS","Object","keys","THRESHOLD_KEY_SET","Set","createCoverageConfig","options","rootDir","Error","resolvedRootDir","path","resolve","includeAllFiles","collectCoverageFrom","Array","isArray","map","pattern","String","trim","filter","length","testResultsRoot","join","coverageReportDir","coverageFileName","disabledEnvVar","coverageEnabled","process","env","global","thresholds","targets","thresholdTargets","normalizeThresholdOptions","rawThresholds","globalThresholds","isPlainObject","thresholdMap","key","value","isThresholdValue","prototype","hasOwnProperty","call","assign","pickThresholdOverrides","overrides","entries","has","push","id","source","Number","isFinite"],"mappings":"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"}
|