@descryy/runtime-test-runner 0.4.12 → 0.4.14

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.
Files changed (278) hide show
  1. package/dist/bounded-file.d.ts +18 -0
  2. package/dist/bounded-file.d.ts.map +1 -0
  3. package/dist/bounded-file.js +77 -0
  4. package/dist/bounded-file.js.map +1 -0
  5. package/dist/child-environment.d.ts +12 -0
  6. package/dist/child-environment.d.ts.map +1 -0
  7. package/dist/child-environment.js +124 -0
  8. package/dist/child-environment.js.map +1 -0
  9. package/dist/coverage-capture.d.ts +23 -0
  10. package/dist/coverage-capture.d.ts.map +1 -0
  11. package/dist/coverage-capture.js +165 -0
  12. package/dist/coverage-capture.js.map +1 -0
  13. package/dist/executed-coverage.d.ts +45 -0
  14. package/dist/executed-coverage.d.ts.map +1 -0
  15. package/dist/executed-coverage.js +143 -0
  16. package/dist/executed-coverage.js.map +1 -0
  17. package/dist/go-cover-profile.d.ts +29 -0
  18. package/dist/go-cover-profile.d.ts.map +1 -0
  19. package/dist/go-cover-profile.js +162 -0
  20. package/dist/go-cover-profile.js.map +1 -0
  21. package/dist/go-test.d.ts +29 -2
  22. package/dist/go-test.d.ts.map +1 -1
  23. package/dist/go-test.js +149 -30
  24. package/dist/go-test.js.map +1 -1
  25. package/dist/graph-mapping.d.ts +1 -0
  26. package/dist/graph-mapping.d.ts.map +1 -1
  27. package/dist/graph-mapping.js +78 -1
  28. package/dist/graph-mapping.js.map +1 -1
  29. package/dist/index.d.ts +21 -3
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +11 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/lexers/c-family.d.ts +4 -0
  34. package/dist/lexers/c-family.d.ts.map +1 -0
  35. package/dist/lexers/c-family.js +221 -0
  36. package/dist/lexers/c-family.js.map +1 -0
  37. package/dist/lexers/chars.d.ts +7 -0
  38. package/dist/lexers/chars.d.ts.map +1 -0
  39. package/dist/lexers/chars.js +49 -0
  40. package/dist/lexers/chars.js.map +1 -0
  41. package/dist/lexers/index.d.ts +7 -0
  42. package/dist/lexers/index.d.ts.map +1 -0
  43. package/dist/lexers/index.js +5 -0
  44. package/dist/lexers/index.js.map +1 -0
  45. package/dist/lexers/python.d.ts +3 -0
  46. package/dist/lexers/python.d.ts.map +1 -0
  47. package/dist/lexers/python.js +101 -0
  48. package/dist/lexers/python.js.map +1 -0
  49. package/dist/quality/annotations.d.ts +14 -0
  50. package/dist/quality/annotations.d.ts.map +1 -0
  51. package/dist/quality/annotations.js +147 -0
  52. package/dist/quality/annotations.js.map +1 -0
  53. package/dist/quality/assertion-kinds.d.ts +18 -0
  54. package/dist/quality/assertion-kinds.d.ts.map +1 -0
  55. package/dist/quality/assertion-kinds.js +25 -0
  56. package/dist/quality/assertion-kinds.js.map +1 -0
  57. package/dist/quality/chains.d.ts +25 -0
  58. package/dist/quality/chains.d.ts.map +1 -0
  59. package/dist/quality/chains.js +129 -0
  60. package/dist/quality/chains.js.map +1 -0
  61. package/dist/quality/common.d.ts +31 -0
  62. package/dist/quality/common.d.ts.map +1 -0
  63. package/dist/quality/common.js +211 -0
  64. package/dist/quality/common.js.map +1 -0
  65. package/dist/quality/csharp-family.d.ts +9 -0
  66. package/dist/quality/csharp-family.d.ts.map +1 -0
  67. package/dist/quality/csharp-family.js +560 -0
  68. package/dist/quality/csharp-family.js.map +1 -0
  69. package/dist/quality/detect.d.ts +3 -0
  70. package/dist/quality/detect.d.ts.map +1 -0
  71. package/dist/quality/detect.js +348 -0
  72. package/dist/quality/detect.js.map +1 -0
  73. package/dist/quality/durations.d.ts +4 -0
  74. package/dist/quality/durations.d.ts.map +1 -0
  75. package/dist/quality/durations.js +177 -0
  76. package/dist/quality/durations.js.map +1 -0
  77. package/dist/quality/expressions.d.ts +7 -0
  78. package/dist/quality/expressions.d.ts.map +1 -0
  79. package/dist/quality/expressions.js +123 -0
  80. package/dist/quality/expressions.js.map +1 -0
  81. package/dist/quality/facts.d.ts +5 -0
  82. package/dist/quality/facts.d.ts.map +1 -0
  83. package/dist/quality/facts.js +183 -0
  84. package/dist/quality/facts.js.map +1 -0
  85. package/dist/quality/failure-of.d.ts +4 -0
  86. package/dist/quality/failure-of.d.ts.map +1 -0
  87. package/dist/quality/failure-of.js +233 -0
  88. package/dist/quality/failure-of.js.map +1 -0
  89. package/dist/quality/frameworks.d.ts +5 -0
  90. package/dist/quality/frameworks.d.ts.map +1 -0
  91. package/dist/quality/frameworks.js +20 -0
  92. package/dist/quality/frameworks.js.map +1 -0
  93. package/dist/quality/go-family.d.ts +6 -0
  94. package/dist/quality/go-family.d.ts.map +1 -0
  95. package/dist/quality/go-family.js +393 -0
  96. package/dist/quality/go-family.js.map +1 -0
  97. package/dist/quality/index.d.ts +10 -0
  98. package/dist/quality/index.d.ts.map +1 -0
  99. package/dist/quality/index.js +19 -0
  100. package/dist/quality/index.js.map +1 -0
  101. package/dist/quality/java-family.d.ts +12 -0
  102. package/dist/quality/java-family.d.ts.map +1 -0
  103. package/dist/quality/java-family.js +529 -0
  104. package/dist/quality/java-family.js.map +1 -0
  105. package/dist/quality/js-assertions.d.ts +11 -0
  106. package/dist/quality/js-assertions.d.ts.map +1 -0
  107. package/dist/quality/js-assertions.js +297 -0
  108. package/dist/quality/js-assertions.js.map +1 -0
  109. package/dist/quality/js-family.d.ts +3 -0
  110. package/dist/quality/js-family.d.ts.map +1 -0
  111. package/dist/quality/js-family.js +470 -0
  112. package/dist/quality/js-family.js.map +1 -0
  113. package/dist/quality/python-family.d.ts +6 -0
  114. package/dist/quality/python-family.d.ts.map +1 -0
  115. package/dist/quality/python-family.js +786 -0
  116. package/dist/quality/python-family.js.map +1 -0
  117. package/dist/quality/scope.d.ts +26 -0
  118. package/dist/quality/scope.d.ts.map +1 -0
  119. package/dist/quality/scope.js +33 -0
  120. package/dist/quality/scope.js.map +1 -0
  121. package/dist/quality/selectors.d.ts +14 -0
  122. package/dist/quality/selectors.d.ts.map +1 -0
  123. package/dist/quality/selectors.js +137 -0
  124. package/dist/quality/selectors.js.map +1 -0
  125. package/dist/quality/statuses.d.ts +7 -0
  126. package/dist/quality/statuses.d.ts.map +1 -0
  127. package/dist/quality/statuses.js +143 -0
  128. package/dist/quality/statuses.js.map +1 -0
  129. package/dist/quality/stream.d.ts +23 -0
  130. package/dist/quality/stream.d.ts.map +1 -0
  131. package/dist/quality/stream.js +194 -0
  132. package/dist/quality/stream.js.map +1 -0
  133. package/dist/quality/types.d.ts +88 -0
  134. package/dist/quality/types.d.ts.map +1 -0
  135. package/dist/quality/types.js +2 -0
  136. package/dist/quality/types.js.map +1 -0
  137. package/dist/run-timeout.d.ts +25 -0
  138. package/dist/run-timeout.d.ts.map +1 -0
  139. package/dist/run-timeout.js +52 -0
  140. package/dist/run-timeout.js.map +1 -0
  141. package/dist/runner-wrappers.d.ts +74 -0
  142. package/dist/runner-wrappers.d.ts.map +1 -0
  143. package/dist/runner-wrappers.js +604 -0
  144. package/dist/runner-wrappers.js.map +1 -0
  145. package/dist/swift-xctest.d.ts +15 -2
  146. package/dist/swift-xctest.d.ts.map +1 -1
  147. package/dist/swift-xctest.js +143 -20
  148. package/dist/swift-xctest.js.map +1 -1
  149. package/dist/test-runner-collector.d.ts +56 -6
  150. package/dist/test-runner-collector.d.ts.map +1 -1
  151. package/dist/test-runner-collector.js +265 -113
  152. package/dist/test-runner-collector.js.map +1 -1
  153. package/dist/testgen/csharp-facts.d.ts +3 -0
  154. package/dist/testgen/csharp-facts.d.ts.map +1 -0
  155. package/dist/testgen/csharp-facts.js +306 -0
  156. package/dist/testgen/csharp-facts.js.map +1 -0
  157. package/dist/testgen/csharp-profile.d.ts +14 -0
  158. package/dist/testgen/csharp-profile.d.ts.map +1 -0
  159. package/dist/testgen/csharp-profile.js +233 -0
  160. package/dist/testgen/csharp-profile.js.map +1 -0
  161. package/dist/testgen/declarations.d.ts +10 -0
  162. package/dist/testgen/declarations.d.ts.map +1 -0
  163. package/dist/testgen/declarations.js +110 -0
  164. package/dist/testgen/declarations.js.map +1 -0
  165. package/dist/testgen/facts-common.d.ts +33 -0
  166. package/dist/testgen/facts-common.d.ts.map +1 -0
  167. package/dist/testgen/facts-common.js +76 -0
  168. package/dist/testgen/facts-common.js.map +1 -0
  169. package/dist/testgen/failure.d.ts +4 -0
  170. package/dist/testgen/failure.d.ts.map +1 -0
  171. package/dist/testgen/failure.js +106 -0
  172. package/dist/testgen/failure.js.map +1 -0
  173. package/dist/testgen/frameworks.d.ts +6 -0
  174. package/dist/testgen/frameworks.d.ts.map +1 -0
  175. package/dist/testgen/frameworks.js +516 -0
  176. package/dist/testgen/frameworks.js.map +1 -0
  177. package/dist/testgen/go-facts.d.ts +11 -0
  178. package/dist/testgen/go-facts.d.ts.map +1 -0
  179. package/dist/testgen/go-facts.js +237 -0
  180. package/dist/testgen/go-facts.js.map +1 -0
  181. package/dist/testgen/go-profile.d.ts +6 -0
  182. package/dist/testgen/go-profile.d.ts.map +1 -0
  183. package/dist/testgen/go-profile.js +155 -0
  184. package/dist/testgen/go-profile.js.map +1 -0
  185. package/dist/testgen/index.d.ts +28 -0
  186. package/dist/testgen/index.d.ts.map +1 -0
  187. package/dist/testgen/index.js +21 -0
  188. package/dist/testgen/index.js.map +1 -0
  189. package/dist/testgen/java-build.d.ts +13 -0
  190. package/dist/testgen/java-build.d.ts.map +1 -0
  191. package/dist/testgen/java-build.js +250 -0
  192. package/dist/testgen/java-build.js.map +1 -0
  193. package/dist/testgen/java-facts.d.ts +3 -0
  194. package/dist/testgen/java-facts.d.ts.map +1 -0
  195. package/dist/testgen/java-facts.js +349 -0
  196. package/dist/testgen/java-facts.js.map +1 -0
  197. package/dist/testgen/java-profile.d.ts +13 -0
  198. package/dist/testgen/java-profile.d.ts.map +1 -0
  199. package/dist/testgen/java-profile.js +194 -0
  200. package/dist/testgen/java-profile.js.map +1 -0
  201. package/dist/testgen/languages.d.ts +11 -0
  202. package/dist/testgen/languages.d.ts.map +1 -0
  203. package/dist/testgen/languages.js +63 -0
  204. package/dist/testgen/languages.js.map +1 -0
  205. package/dist/testgen/lexer.d.ts +19 -0
  206. package/dist/testgen/lexer.d.ts.map +1 -0
  207. package/dist/testgen/lexer.js +257 -0
  208. package/dist/testgen/lexer.js.map +1 -0
  209. package/dist/testgen/mutant-core.d.ts +19 -0
  210. package/dist/testgen/mutant-core.d.ts.map +1 -0
  211. package/dist/testgen/mutant-core.js +39 -0
  212. package/dist/testgen/mutant-core.js.map +1 -0
  213. package/dist/testgen/mutants-lang.d.ts +6 -0
  214. package/dist/testgen/mutants-lang.d.ts.map +1 -0
  215. package/dist/testgen/mutants-lang.js +291 -0
  216. package/dist/testgen/mutants-lang.js.map +1 -0
  217. package/dist/testgen/mutants.d.ts +9 -0
  218. package/dist/testgen/mutants.d.ts.map +1 -0
  219. package/dist/testgen/mutants.js +148 -0
  220. package/dist/testgen/mutants.js.map +1 -0
  221. package/dist/testgen/paths.d.ts +32 -0
  222. package/dist/testgen/paths.d.ts.map +1 -0
  223. package/dist/testgen/paths.js +211 -0
  224. package/dist/testgen/paths.js.map +1 -0
  225. package/dist/testgen/process.d.ts +19 -0
  226. package/dist/testgen/process.d.ts.map +1 -0
  227. package/dist/testgen/process.js +89 -0
  228. package/dist/testgen/process.js.map +1 -0
  229. package/dist/testgen/profile-failure.d.ts +7 -0
  230. package/dist/testgen/profile-failure.d.ts.map +1 -0
  231. package/dist/testgen/profile-failure.js +29 -0
  232. package/dist/testgen/profile-failure.js.map +1 -0
  233. package/dist/testgen/python-facts.d.ts +11 -0
  234. package/dist/testgen/python-facts.d.ts.map +1 -0
  235. package/dist/testgen/python-facts.js +380 -0
  236. package/dist/testgen/python-facts.js.map +1 -0
  237. package/dist/testgen/python-profile.d.ts +4 -0
  238. package/dist/testgen/python-profile.d.ts.map +1 -0
  239. package/dist/testgen/python-profile.js +344 -0
  240. package/dist/testgen/python-profile.js.map +1 -0
  241. package/dist/testgen/source-facts.d.ts +30 -0
  242. package/dist/testgen/source-facts.d.ts.map +1 -0
  243. package/dist/testgen/source-facts.js +497 -0
  244. package/dist/testgen/source-facts.js.map +1 -0
  245. package/dist/testgen/stubs.d.ts +4 -0
  246. package/dist/testgen/stubs.d.ts.map +1 -0
  247. package/dist/testgen/stubs.js +66 -0
  248. package/dist/testgen/stubs.js.map +1 -0
  249. package/dist/testgen/toolchain.d.ts +23 -0
  250. package/dist/testgen/toolchain.d.ts.map +1 -0
  251. package/dist/testgen/toolchain.js +201 -0
  252. package/dist/testgen/toolchain.js.map +1 -0
  253. package/dist/testgen/types.d.ts +67 -0
  254. package/dist/testgen/types.d.ts.map +1 -0
  255. package/dist/testgen/types.js +2 -0
  256. package/dist/testgen/types.js.map +1 -0
  257. package/dist/v8-coverage.d.ts +21 -0
  258. package/dist/v8-coverage.d.ts.map +1 -0
  259. package/dist/v8-coverage.js +217 -0
  260. package/dist/v8-coverage.js.map +1 -0
  261. package/dist/vitest-reporter.d.ts +46 -13
  262. package/dist/vitest-reporter.d.ts.map +1 -1
  263. package/dist/vitest-reporter.js +119 -26
  264. package/dist/vitest-reporter.js.map +1 -1
  265. package/dist/vitest-version.d.ts +21 -0
  266. package/dist/vitest-version.d.ts.map +1 -0
  267. package/dist/vitest-version.js +98 -0
  268. package/dist/vitest-version.js.map +1 -0
  269. package/package.json +14 -8
  270. package/reporters/junit/classes/DescryJUnitListener.class +0 -0
  271. package/reporters/junit/classes/META-INF/services/org.junit.platform.launcher.TestExecutionListener +1 -0
  272. package/reporters/minitest/descry_minitest_reporter.rb +150 -0
  273. package/reporters/phpunit/DescryPhpUnitExtension.php +209 -0
  274. package/reporters/pytest/descry_pytest_plugin.py +397 -0
  275. package/reporters/rspec/descry_rspec_formatter.rb +175 -0
  276. package/reporters/xunit/bin/Release/netstandard2.0/Descry.TestLogger.deps.json +203 -0
  277. package/reporters/xunit/bin/Release/netstandard2.0/Descry.TestLogger.dll +0 -0
  278. package/reporters/xunit/bin/Release/netstandard2.0/Descry.TestLogger.pdb +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolchain.d.ts","sourceRoot":"","sources":["../../src/testgen/toolchain.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5G,aAAa,IAAI,MAAM,GAAG,IAAI,CAAC;CAChC;AAoCD,wBAAgB,mCAAmC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAUhF;AAiCD,eAAO,MAAM,aAAa,EAAE,SAkC3B,CAAC;AAEF,wBAAgB,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,IAAI,GAAE,MAAM,GAAG,SAA4C,GAAG,MAAM,EAAE,CAcrJ;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASzF;AAED,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAU3J,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiBpG;AAaD,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAM/C"}
@@ -0,0 +1,201 @@
1
+ import { existsSync, readdirSync, realpathSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { delimiter, dirname, join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { buildChildEnvironment } from "../child-environment.js";
6
+ import { assignmentValue, entriesOf, findOnPath, isInside, readText } from "./paths.js";
7
+ import { runBounded } from "./process.js";
8
+ const LAUNCHER_FILE = /^junit-platform-console-standalone-[\w.-]+\.jar$/;
9
+ const PINNED_CACHE = fileURLToPath(new URL("../../reporters/junit/.cache", import.meta.url));
10
+ const PROBE_TTL_MS = 30_000;
11
+ const PROBE_TIMEOUT_MS = 15_000;
12
+ const probeCache = new Map();
13
+ const SITE_PACKAGES_LIBRARY_NAMES = ["lib", "lib64", "Lib"];
14
+ function sitePackagesDirectories(prefix) {
15
+ const directories = [];
16
+ for (const libraryName of SITE_PACKAGES_LIBRARY_NAMES) {
17
+ const library = join(prefix, libraryName);
18
+ const versioned = entriesOf(library).filter((entry) => /^python\d/.test(entry));
19
+ for (const entry of versioned)
20
+ directories.push(join(library, entry, "site-packages"));
21
+ directories.push(join(library, "site-packages"));
22
+ }
23
+ return directories.filter((directory) => existsSync(directory));
24
+ }
25
+ function includesSystemSitePackages(config) {
26
+ for (const line of config.split(/\r?\n/)) {
27
+ const value = assignmentValue(line, "include-system-site-packages");
28
+ if (value !== null)
29
+ return value.toLowerCase() === "true";
30
+ }
31
+ return false;
32
+ }
33
+ function pytestInstalledUnder(prefix) {
34
+ return sitePackagesDirectories(prefix).some((directory) => {
35
+ const entries = entriesOf(directory);
36
+ return entries.includes("_pytest") && (entries.includes("pytest") || entries.includes("pytest.py"));
37
+ });
38
+ }
39
+ export function pytestInstalledInVirtualEnvironment(interpreter) {
40
+ const prefix = dirname(dirname(interpreter));
41
+ if (pytestInstalledUnder(prefix))
42
+ return true;
43
+ const config = readText(join(prefix, "pyvenv.cfg"));
44
+ if (!includesSystemSitePackages(config))
45
+ return false;
46
+ for (const line of config.split(/\r?\n/)) {
47
+ const home = assignmentValue(line, "home");
48
+ if (home !== null && home !== "")
49
+ return pytestInstalledUnder(dirname(home));
50
+ }
51
+ return false;
52
+ }
53
+ function inHome(variable, ...relative) {
54
+ const home = process.env[variable];
55
+ if (home === undefined || home === "")
56
+ return null;
57
+ const candidate = join(home, ...relative);
58
+ return existsSync(candidate) ? candidate : null;
59
+ }
60
+ function launcherIn(directory) {
61
+ try {
62
+ const names = readdirSync(directory).filter((name) => LAUNCHER_FILE.test(name)).sort();
63
+ const newest = names[names.length - 1];
64
+ return newest === undefined ? null : join(directory, newest);
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ function newestMavenLauncher() {
71
+ const root = join(process.env["MAVEN_REPO_LOCAL"] ?? join(homedir(), ".m2", "repository"), "org", "junit", "platform", "junit-platform-console-standalone");
72
+ try {
73
+ const versions = readdirSync(root).sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
74
+ for (let i = versions.length - 1; i >= 0; i -= 1) {
75
+ const found = launcherIn(join(root, versions[i]));
76
+ if (found !== null)
77
+ return found;
78
+ }
79
+ }
80
+ catch {
81
+ return null;
82
+ }
83
+ return null;
84
+ }
85
+ export const hostToolchain = {
86
+ locate(tool) {
87
+ switch (tool) {
88
+ case "python":
89
+ return findOnPath(["python3", "python"]);
90
+ case "java":
91
+ return inHome("JAVA_HOME", "bin", "java") ?? findOnPath(["java"]);
92
+ case "javac":
93
+ return inHome("JAVA_HOME", "bin", "javac") ?? findOnPath(["javac"]);
94
+ case "go":
95
+ return inHome("GOROOT", "bin", "go") ?? findOnPath(["go"]);
96
+ case "dotnet":
97
+ return inHome("DOTNET_ROOT", "dotnet") ?? findOnPath(["dotnet"]);
98
+ }
99
+ },
100
+ async pytestImportable(interpreter, signal, options) {
101
+ if (options?.insideRepository === true)
102
+ return pytestInstalledInVirtualEnvironment(interpreter);
103
+ const cached = probeCache.get(interpreter);
104
+ if (cached !== undefined && Date.now() - cached.at < PROBE_TTL_MS)
105
+ return cached.importable;
106
+ const result = await runBounded(interpreter, ["-c", "import pytest"], {
107
+ timeoutMs: PROBE_TIMEOUT_MS,
108
+ signal,
109
+ env: { ...process.env, ...buildChildEnvironment().env, PYTHONDONTWRITEBYTECODE: "1" },
110
+ });
111
+ if (result.outcome === "cancelled")
112
+ return false;
113
+ const importable = result.outcome === "exited" && result.status === 0;
114
+ probeCache.set(interpreter, { at: Date.now(), importable });
115
+ return importable;
116
+ },
117
+ junitLauncher() {
118
+ const declared = process.env["DESCRY_JUNIT_CONSOLE_JAR"];
119
+ if (declared !== undefined && declared !== "" && existsSync(declared))
120
+ return declared;
121
+ return launcherIn(PINNED_CACHE) ?? newestMavenLauncher();
122
+ },
123
+ };
124
+ export function rootsInHome(candidates, home = process.env["HOME"] ?? homedir()) {
125
+ if (home === undefined || home === "")
126
+ return [];
127
+ const found = new Set();
128
+ for (const candidate of candidates) {
129
+ if (candidate === null || candidate === undefined || candidate === "")
130
+ continue;
131
+ let real;
132
+ try {
133
+ real = realpathSync(candidate);
134
+ }
135
+ catch {
136
+ continue;
137
+ }
138
+ if (real !== home && isInside(home, real))
139
+ found.add(real);
140
+ }
141
+ return [...found].filter((root) => ![...found].some((other) => other !== root && isInside(other, root))).sort();
142
+ }
143
+ export function installationOf(executable, levelsUp) {
144
+ if (executable === null)
145
+ return null;
146
+ try {
147
+ let directory = realpathSync(executable);
148
+ for (let level = 0; level < levelsUp; level += 1)
149
+ directory = dirname(directory);
150
+ return directory;
151
+ }
152
+ catch {
153
+ return null;
154
+ }
155
+ }
156
+ const GO_ENVIRONMENT_NAMES = ["GOROOT", "GOMODCACHE", "GOCACHE"];
157
+ const goEnvironmentCache = new Map();
158
+ function cachedGoEnvironment(go) {
159
+ const cached = goEnvironmentCache.get(go);
160
+ return cached !== undefined && Date.now() - cached.at < PROBE_TTL_MS ? cached.values : null;
161
+ }
162
+ export async function loadGoEnvironment(go, signal) {
163
+ const cached = cachedGoEnvironment(go);
164
+ if (cached !== null)
165
+ return { ok: true, values: cached };
166
+ const result = await runBounded(go, ["env", ...GO_ENVIRONMENT_NAMES], { timeoutMs: PROBE_TIMEOUT_MS, signal });
167
+ if (result.outcome === "cancelled")
168
+ return { ok: false, reason: "cancelled" };
169
+ if (result.outcome !== "exited" || result.status !== 0) {
170
+ const why = result.outcome === "exited" ? `exit ${String(result.status)}` : result.outcome === "timed-out" ? `no answer within ${PROBE_TIMEOUT_MS} ms` : (result.message ?? "it could not be started");
171
+ return { ok: false, reason: `go env did not answer (${why}), so the go tool is not usable here.` };
172
+ }
173
+ const lines = result.output.split("\n");
174
+ const values = {};
175
+ GO_ENVIRONMENT_NAMES.forEach((name, index) => {
176
+ const value = lines[index]?.trim();
177
+ if (value !== undefined && value !== "")
178
+ values[name] = value;
179
+ });
180
+ goEnvironmentCache.set(go, { at: Date.now(), values });
181
+ return { ok: true, values };
182
+ }
183
+ function firstPathEntry(list) {
184
+ const entry = (list ?? "").split(delimiter).find((candidate) => candidate !== "");
185
+ return entry ?? null;
186
+ }
187
+ function defaultGoBuildCache(home) {
188
+ if (process.platform === "win32")
189
+ return join(process.env["LocalAppData"] ?? join(home, "AppData", "Local"), "go-build");
190
+ if (process.platform === "darwin")
191
+ return join(home, "Library", "Caches", "go-build");
192
+ return join(process.env["XDG_CACHE_HOME"] ?? join(home, ".cache"), "go-build");
193
+ }
194
+ export function goRootsFor(go) {
195
+ const home = process.env["HOME"] ?? homedir();
196
+ const known = cachedGoEnvironment(go) ?? {};
197
+ const modules = known["GOMODCACHE"] ?? process.env["GOMODCACHE"] ?? join(firstPathEntry(process.env["GOPATH"]) ?? join(home, "go"), "pkg", "mod");
198
+ const build = known["GOCACHE"] ?? process.env["GOCACHE"] ?? defaultGoBuildCache(home);
199
+ return rootsInHome([known["GOROOT"] ?? process.env["GOROOT"] ?? installationOf(go, 2), modules, build]);
200
+ }
201
+ //# sourceMappingURL=toolchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolchain.js","sourceRoot":"","sources":["../../src/testgen/toolchain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { FailureClass } from "./failure.ts";
2
+ import type { HazardKind } from "./source-facts.ts";
3
+ export type FrameworkName = "node:test" | "vitest" | "jest" | "pytest" | "junit" | "go" | "xunit";
4
+ export type Verdict = {
5
+ readonly ok: true;
6
+ } | {
7
+ readonly ok: false;
8
+ readonly reason: string;
9
+ };
10
+ export interface CommandRequest {
11
+ readonly testFile: string;
12
+ readonly workRoot: string;
13
+ readonly repoRoot: string;
14
+ readonly testSource: string;
15
+ readonly timeoutMs?: number;
16
+ }
17
+ export type PrepareResult = {
18
+ readonly ok: true;
19
+ } | {
20
+ readonly ok: false;
21
+ readonly reason: string;
22
+ };
23
+ export type BuiltCommand = {
24
+ readonly ok: true;
25
+ readonly command: string;
26
+ readonly cwd: string;
27
+ readonly notes: readonly string[];
28
+ } | {
29
+ readonly ok: false;
30
+ readonly reason: string;
31
+ };
32
+ export interface ReachRequest {
33
+ readonly testFile: string;
34
+ readonly testSource: string;
35
+ readonly targetFile: string;
36
+ readonly repoRoot: string;
37
+ }
38
+ export interface TestFrameworkProfile {
39
+ readonly name: FrameworkName;
40
+ readonly declaredBy: string;
41
+ readonly packageRoot: string;
42
+ readonly runRoot: string;
43
+ readonly dependencyDirName: string;
44
+ readonly moduleSyntax: "esm" | "commonjs" | "none";
45
+ readonly scaffold: string;
46
+ readonly matchesByPathSubstring: boolean;
47
+ canRun(sourceFile: string): Verdict;
48
+ isTestFile(path: string): boolean;
49
+ testFileFor(sourceFile: string, existingTestFiles: readonly string[]): string;
50
+ importSpecifier(testFile: string, sourceFile: string): string;
51
+ command(request: CommandRequest): BuiltCommand;
52
+ classifyFailure(error: unknown): FailureClass;
53
+ failureMessage(error: unknown): string;
54
+ stubAdvice(kind: HazardKind): string;
55
+ reachesTarget?(request: ReachRequest): boolean;
56
+ toolchainRoots?(): readonly string[];
57
+ prepare?(request: CommandRequest, signal: AbortSignal): Promise<PrepareResult>;
58
+ dependencyHomes?(): readonly string[];
59
+ }
60
+ export type Detection = {
61
+ readonly found: true;
62
+ readonly profile: TestFrameworkProfile;
63
+ } | {
64
+ readonly found: false;
65
+ readonly reason: string;
66
+ };
67
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/testgen/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/testgen/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { type ExecutedCoverage } from "./executed-coverage.ts";
2
+ export interface V8CoverageRange {
3
+ readonly startOffset: number;
4
+ readonly endOffset: number;
5
+ readonly count: number;
6
+ }
7
+ export interface V8FunctionCoverage {
8
+ readonly ranges: readonly V8CoverageRange[];
9
+ }
10
+ export interface V8Lines {
11
+ readonly executedLines: readonly number[];
12
+ readonly measuredLines: readonly number[];
13
+ }
14
+ export declare function linesOfV8Functions(source: string, functions: readonly V8FunctionCoverage[]): V8Lines;
15
+ export interface V8DirectoryOptions {
16
+ readonly directory: string;
17
+ readonly repositoryRoot: string;
18
+ readonly excludedPaths?: ReadonlySet<string>;
19
+ }
20
+ export declare function readV8CoverageDirectory(options: V8DirectoryOptions): ExecutedCoverage;
21
+ //# sourceMappingURL=v8-coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v8-coverage.d.ts","sourceRoot":"","sources":["../src/v8-coverage.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6E,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1I,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAyED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,kBAAkB,EAAE,GAAG,OAAO,CAoCpG;AAkCD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,gBAAgB,CAkFrF"}
@@ -0,0 +1,217 @@
1
+ import { existsSync, readdirSync } from "node:fs";
2
+ import { fileURLToPath } from "node:url";
3
+ import { describeSkippedDumps, forEachCoverageDump, readBoundedRegularFile } from "./bounded-file.js";
4
+ import { CoverageAccumulator, NoteLog, repositoryRelativePath, unavailableCoverage } from "./executed-coverage.js";
5
+ const MAX_SOURCE_BYTES = 32 * 1024 * 1024;
6
+ const BYTE_ORDER_MARK = 0xfeff;
7
+ function isValidRange(range, sourceLength) {
8
+ return (Number.isInteger(range.startOffset) &&
9
+ Number.isInteger(range.endOffset) &&
10
+ Number.isFinite(range.count) &&
11
+ range.startOffset >= 0 &&
12
+ range.startOffset < range.endOffset &&
13
+ range.startOffset < sourceLength);
14
+ }
15
+ function segmentsOf(functions, sourceLength) {
16
+ const flattened = [];
17
+ for (const fn of functions) {
18
+ for (const range of fn.ranges) {
19
+ if (!isValidRange(range, sourceLength))
20
+ continue;
21
+ flattened.push({
22
+ start: range.startOffset,
23
+ end: Math.min(range.endOffset, sourceLength),
24
+ count: range.count,
25
+ order: flattened.length,
26
+ });
27
+ }
28
+ }
29
+ flattened.sort((left, right) => left.start - right.start || right.end - left.end || left.order - right.order);
30
+ const segments = [];
31
+ const stack = [];
32
+ let position = 0;
33
+ const emitUntil = (end) => {
34
+ const top = stack[stack.length - 1];
35
+ if (top !== undefined && end > position)
36
+ segments.push({ start: position, end, count: top.count });
37
+ position = Math.max(position, end);
38
+ };
39
+ for (const range of flattened) {
40
+ for (let top = stack[stack.length - 1]; top !== undefined && top.end <= range.start; top = stack[stack.length - 1]) {
41
+ emitUntil(top.end);
42
+ stack.pop();
43
+ }
44
+ if (stack.length === 0)
45
+ position = range.start;
46
+ else
47
+ emitUntil(range.start);
48
+ const parent = stack[stack.length - 1];
49
+ stack.push({ end: parent === undefined ? range.end : Math.min(range.end, parent.end), count: range.count });
50
+ }
51
+ for (let top = stack[stack.length - 1]; top !== undefined; top = stack[stack.length - 1]) {
52
+ emitUntil(top.end);
53
+ stack.pop();
54
+ }
55
+ return segments;
56
+ }
57
+ function isBlank(code) {
58
+ return code === 0x20 || code === 0x09 || code === 0x0d || code === 0x0c || code === 0x0b || code === 0xa0 || code === BYTE_ORDER_MARK || code === 0x2028 || code === 0x2029;
59
+ }
60
+ export function linesOfV8Functions(source, functions) {
61
+ const segments = segmentsOf(functions, source.length);
62
+ const executedLines = [];
63
+ const measuredLines = [];
64
+ if (segments.length === 0)
65
+ return { executedLines, measuredLines };
66
+ let firstCandidate = 0;
67
+ let lineStart = 0;
68
+ let lineNumber = 0;
69
+ while (lineStart <= source.length) {
70
+ lineNumber += 1;
71
+ const newline = source.indexOf("\n", lineStart);
72
+ const lineEnd = newline === -1 ? source.length : newline;
73
+ let from = lineStart;
74
+ let to = lineEnd;
75
+ while (from < to && isBlank(source.charCodeAt(from)))
76
+ from += 1;
77
+ while (to > from && isBlank(source.charCodeAt(to - 1)))
78
+ to -= 1;
79
+ if (from < to) {
80
+ while (firstCandidate < segments.length && segments[firstCandidate].end <= from)
81
+ firstCandidate += 1;
82
+ let measured = false;
83
+ let executed = false;
84
+ for (let index = firstCandidate; index < segments.length && segments[index].start < to; index += 1) {
85
+ measured = true;
86
+ if (segments[index].count > 0) {
87
+ executed = true;
88
+ break;
89
+ }
90
+ }
91
+ if (measured)
92
+ measuredLines.push(lineNumber);
93
+ if (executed)
94
+ executedLines.push(lineNumber);
95
+ }
96
+ if (newline === -1)
97
+ break;
98
+ lineStart = newline + 1;
99
+ }
100
+ return { executedLines, measuredLines };
101
+ }
102
+ function isRecord(value) {
103
+ return typeof value === "object" && value !== null && !Array.isArray(value);
104
+ }
105
+ function rangesOf(value) {
106
+ if (!Array.isArray(value))
107
+ return [];
108
+ const ranges = [];
109
+ for (const candidate of value) {
110
+ if (!isRecord(candidate))
111
+ continue;
112
+ const { startOffset, endOffset, count } = candidate;
113
+ if (typeof startOffset === "number" && typeof endOffset === "number" && typeof count === "number") {
114
+ ranges.push({ startOffset, endOffset, count });
115
+ }
116
+ }
117
+ return ranges;
118
+ }
119
+ function functionsOf(value) {
120
+ if (!Array.isArray(value))
121
+ return [];
122
+ const functions = [];
123
+ for (const candidate of value) {
124
+ if (isRecord(candidate))
125
+ functions.push({ ranges: rangesOf(candidate["ranges"]) });
126
+ }
127
+ return functions;
128
+ }
129
+ function readSource(absolutePath) {
130
+ const read = readBoundedRegularFile(absolutePath, MAX_SOURCE_BYTES);
131
+ if (!read.ok)
132
+ return null;
133
+ return read.text.charCodeAt(0) === BYTE_ORDER_MARK ? read.text.slice(1) : read.text;
134
+ }
135
+ export function readV8CoverageDirectory(options) {
136
+ if (!existsSync(options.directory))
137
+ return unavailableCoverage("the V8 coverage directory does not exist");
138
+ const dumps = readdirSync(options.directory)
139
+ .filter((name) => /^coverage-.*\.json$/.test(name))
140
+ .sort();
141
+ if (dumps.length === 0) {
142
+ return unavailableCoverage("node wrote no V8 coverage dump: the process tree did not reach a normal exit (killed or aborted before node could write NODE_V8_COVERAGE output)");
143
+ }
144
+ const accumulator = new CoverageAccumulator();
145
+ const notes = new NoteLog();
146
+ const sourceMapped = new Set();
147
+ const unreadable = new Set();
148
+ const sourceCache = new Map();
149
+ let malformedDumps = 0;
150
+ const { skipped: skippedDumps } = forEachCoverageDump(options.directory, dumps, (_name, text) => {
151
+ let parsed;
152
+ try {
153
+ parsed = JSON.parse(text);
154
+ }
155
+ catch {
156
+ malformedDumps += 1;
157
+ return;
158
+ }
159
+ if (!isRecord(parsed) || !Array.isArray(parsed["result"])) {
160
+ malformedDumps += 1;
161
+ return;
162
+ }
163
+ const sourceMapCache = isRecord(parsed["source-map-cache"]) ? parsed["source-map-cache"] : {};
164
+ for (const script of parsed["result"]) {
165
+ if (!isRecord(script) || typeof script["url"] !== "string" || !script["url"].startsWith("file:"))
166
+ continue;
167
+ const url = script["url"];
168
+ let absolutePath;
169
+ try {
170
+ absolutePath = fileURLToPath(url);
171
+ }
172
+ catch {
173
+ continue;
174
+ }
175
+ const path = repositoryRelativePath(options.repositoryRoot, absolutePath);
176
+ if (path === null || options.excludedPaths?.has(path) === true)
177
+ continue;
178
+ if (url in sourceMapCache) {
179
+ sourceMapped.add(path);
180
+ continue;
181
+ }
182
+ let source = sourceCache.get(absolutePath);
183
+ if (source === undefined) {
184
+ source = readSource(absolutePath);
185
+ sourceCache.set(absolutePath, source);
186
+ }
187
+ if (source === null) {
188
+ unreadable.add(path);
189
+ continue;
190
+ }
191
+ const lines = linesOfV8Functions(source, functionsOf(script["functions"]));
192
+ accumulator.addFile(path, lines.executedLines, lines.measuredLines);
193
+ }
194
+ });
195
+ const skippedDumpNote = describeSkippedDumps(skippedDumps);
196
+ if (skippedDumpNote !== null)
197
+ notes.add(skippedDumpNote);
198
+ if (malformedDumps > 0)
199
+ notes.add(`${malformedDumps} V8 coverage dump(s) could not be parsed and were ignored`);
200
+ if (sourceMapped.size > 0) {
201
+ notes.add(`${sourceMapped.size} file(s) skipped because node reported a source map for them and no source-map remapping is done: ${[...sourceMapped].sort().slice(0, 5).join(", ")}`);
202
+ }
203
+ if (unreadable.size > 0) {
204
+ notes.add(`${unreadable.size} file(s) skipped because their source could not be read to map offsets to lines: ${[...unreadable].sort().slice(0, 5).join(", ")}`);
205
+ }
206
+ const typeStrippedFiles = accumulator.paths().filter((path) => /\.[cm]?ts$/.test(path));
207
+ if (typeStrippedFiles.length > 0) {
208
+ notes.add(`${typeStrippedFiles.length} TypeScript file(s) ran type-stripped: node blanks the types in place so positions map to the original file, but lines holding only types or interfaces count as measured and executed because the module body ran`);
209
+ }
210
+ if (accumulator.fileCount === 0 && malformedDumps === dumps.length) {
211
+ return unavailableCoverage("every V8 coverage dump node wrote was unparseable");
212
+ }
213
+ if (accumulator.fileCount === 0)
214
+ notes.add("no loaded file lies inside the repository");
215
+ return accumulator.build("v8", notes);
216
+ }
217
+ //# sourceMappingURL=v8-coverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v8-coverage.js","sourceRoot":"","sources":["../src/v8-coverage.ts"],"names":[],"mappings":"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"}
@@ -12,29 +12,26 @@
12
12
  * with the graph's separator -- splitting on `" > "` was rejected since a title
13
13
  * containing `" > "` is legal and would split wrong.
14
14
  *
15
- * `--includeTaskLocation` is load-bearing and its absence is silent: without it
16
- * `testCase.location` is `undefined` on every result, no error, just missing
17
- * line/column (same shape as Jest's `--testLocationInResults`, RT-073).
18
- * `withReporterFlags` injects it rather than leaving it to the caller.
19
- *
20
- * `state: "skipped"` covers both `.skip` and `.todo` (measured) -- Jest tells
21
- * them apart. Neither is a pass.
15
+ * `state: "skipped"` covers both `.skip` and `.todo` (measured) on the modern
16
+ * API -- Jest tells them apart. Neither is a pass.
22
17
  */
23
18
  interface VitestSuite {
24
- readonly type: string;
25
- readonly name: string;
19
+ readonly type?: string;
20
+ readonly name?: string;
26
21
  readonly parent?: VitestSuite;
27
22
  }
23
+ interface VitestLocation {
24
+ readonly line: number;
25
+ readonly column: number;
26
+ }
28
27
  interface VitestTestCase {
28
+ readonly id?: string;
29
29
  readonly name: string;
30
30
  readonly parent?: VitestSuite;
31
31
  readonly module?: {
32
32
  readonly moduleId?: string;
33
33
  };
34
- readonly location?: {
35
- readonly line: number;
36
- readonly column: number;
37
- } | undefined;
34
+ readonly location?: VitestLocation | undefined;
38
35
  /** `errors` are plain, already-serialised objects by the time a reporter sees them (see `onTestCaseResult`); typed `unknown` so nothing narrows away Vitest's assertion fields. */
39
36
  result(): {
40
37
  readonly state?: string;
@@ -44,9 +41,45 @@ interface VitestTestCase {
44
41
  readonly duration?: number;
45
42
  } | undefined;
46
43
  }
44
+ interface LegacyTask {
45
+ readonly id: string;
46
+ readonly type: string;
47
+ readonly name: string;
48
+ readonly mode?: string;
49
+ readonly filepath?: string;
50
+ readonly suite?: LegacyTask;
51
+ readonly file?: LegacyTask;
52
+ readonly location?: VitestLocation | undefined;
53
+ readonly tasks?: readonly LegacyTask[];
54
+ readonly result?: {
55
+ readonly state?: string;
56
+ readonly duration?: number;
57
+ readonly errors?: readonly unknown[];
58
+ };
59
+ }
60
+ interface LegacyContext {
61
+ readonly version?: unknown;
62
+ readonly state?: {
63
+ readonly idMap?: {
64
+ get(id: string): LegacyTask | undefined;
65
+ };
66
+ };
67
+ }
47
68
  export default class DescryVitestReporter {
69
+ private readonly started;
70
+ private readonly settled;
71
+ private legacyContext;
72
+ private liveLegacy;
73
+ private emitStart;
74
+ private emitResult;
75
+ private observed;
76
+ private observedLegacy;
77
+ private reportLegacy;
78
+ onInit(context: LegacyContext): void;
48
79
  onTestCaseReady(testCase: VitestTestCase): void;
49
80
  onTestCaseResult(testCase: VitestTestCase): void;
81
+ onTaskUpdate(packs: readonly (readonly unknown[])[]): void;
82
+ onFinished(files: readonly LegacyTask[] | undefined): void;
50
83
  }
51
84
  export {};
52
85
  //# sourceMappingURL=vitest-reporter.d.ts.map