apify-test-tools 0.10.2-beta.2 → 0.10.2-beta.20

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 (275) hide show
  1. package/.gitattributes +1 -0
  2. package/.github/actionlint.yaml +11 -0
  3. package/.github/actions/checkout-restore-dependencies/action.yaml +58 -6
  4. package/.github/cli/apify-test-tools.mjs +135 -142
  5. package/.github/scripts/mask-config-secrets.sh +17 -0
  6. package/.github/scripts/run-with-apify-tokens.mjs +63 -103
  7. package/.github/workflows/_check_code.yaml +5 -21
  8. package/.github/workflows/_move_major_tag.yaml +2 -2
  9. package/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml +89 -8
  10. package/.github/workflows/public_platform-tests.yaml +68 -30
  11. package/.github/workflows/public_pr-build-test.yaml +77 -38
  12. package/.github/workflows/public_push-build-latest.yaml +49 -11
  13. package/.github/workflows/public_review.yaml +5 -4
  14. package/.github/workflows/public_stale-issues.yaml +51 -0
  15. package/.husky/pre-commit +4 -4
  16. package/.prettierignore +2 -1
  17. package/CHANGELOG.md +22 -0
  18. package/CONTRIBUTING.md +117 -17
  19. package/README.md +221 -595
  20. package/bin/actor-ids.ts +41 -0
  21. package/bin/affected-actors.ts +211 -0
  22. package/bin/build-from-local.ts +19 -1
  23. package/bin/build.ts +105 -39
  24. package/bin/diff-changes.ts +69 -36
  25. package/bin/diff-json-schema.ts +5 -6
  26. package/bin/git.ts +73 -175
  27. package/bin/main.ts +142 -189
  28. package/bin/notify.ts +198 -0
  29. package/bin/run-tests.ts +167 -0
  30. package/bin/slack.ts +16 -76
  31. package/bin/stdin-input.ts +156 -0
  32. package/bin/test-files-glob.ts +126 -0
  33. package/bin/test-report.ts +141 -140
  34. package/bin/types.ts +4 -7
  35. package/bin/utils/config/load-config.ts +20 -2
  36. package/bin/utils/config/parser.ts +40 -8
  37. package/bin/utils/config/structures/grouped.ts +2 -2
  38. package/bin/utils/config/structures/legacy.ts +1 -1
  39. package/dist/bin/actor-ids.d.ts +15 -0
  40. package/dist/bin/actor-ids.d.ts.map +1 -0
  41. package/dist/bin/actor-ids.js +30 -0
  42. package/dist/bin/actor-ids.js.map +1 -0
  43. package/dist/bin/affected-actors.d.ts +55 -0
  44. package/dist/bin/affected-actors.d.ts.map +1 -0
  45. package/dist/bin/affected-actors.js +142 -0
  46. package/dist/bin/affected-actors.js.map +1 -0
  47. package/dist/bin/build-from-local.d.ts +2 -1
  48. package/dist/bin/build-from-local.d.ts.map +1 -1
  49. package/dist/bin/build-from-local.js +6 -2
  50. package/dist/bin/build-from-local.js.map +1 -1
  51. package/dist/bin/build.d.ts +18 -5
  52. package/dist/bin/build.d.ts.map +1 -1
  53. package/dist/bin/build.js +74 -24
  54. package/dist/bin/build.js.map +1 -1
  55. package/dist/bin/diff-changes.d.ts +21 -5
  56. package/dist/bin/diff-changes.d.ts.map +1 -1
  57. package/dist/bin/diff-changes.js +41 -28
  58. package/dist/bin/diff-changes.js.map +1 -1
  59. package/dist/bin/diff-json-schema.d.ts +2 -2
  60. package/dist/bin/diff-json-schema.d.ts.map +1 -1
  61. package/dist/bin/diff-json-schema.js +1 -4
  62. package/dist/bin/diff-json-schema.js.map +1 -1
  63. package/dist/bin/git.d.ts +26 -34
  64. package/dist/bin/git.d.ts.map +1 -1
  65. package/dist/bin/git.js +60 -143
  66. package/dist/bin/git.js.map +1 -1
  67. package/dist/bin/main.js +126 -140
  68. package/dist/bin/main.js.map +1 -1
  69. package/dist/bin/notify.d.ts +35 -0
  70. package/dist/bin/notify.d.ts.map +1 -0
  71. package/dist/bin/notify.js +131 -0
  72. package/dist/bin/notify.js.map +1 -0
  73. package/dist/bin/run-tests.d.ts +21 -0
  74. package/dist/bin/run-tests.d.ts.map +1 -0
  75. package/dist/bin/run-tests.js +138 -0
  76. package/dist/bin/run-tests.js.map +1 -0
  77. package/dist/bin/slack.d.ts +2 -14
  78. package/dist/bin/slack.d.ts.map +1 -1
  79. package/dist/bin/slack.js +17 -46
  80. package/dist/bin/slack.js.map +1 -1
  81. package/dist/bin/stdin-input.d.ts +79 -0
  82. package/dist/bin/stdin-input.d.ts.map +1 -0
  83. package/dist/bin/stdin-input.js +124 -0
  84. package/dist/bin/stdin-input.js.map +1 -0
  85. package/dist/bin/test-files-glob.d.ts +18 -0
  86. package/dist/bin/test-files-glob.d.ts.map +1 -0
  87. package/dist/bin/test-files-glob.js +108 -0
  88. package/dist/bin/test-files-glob.js.map +1 -0
  89. package/dist/bin/test-report.d.ts +69 -8
  90. package/dist/bin/test-report.d.ts.map +1 -1
  91. package/dist/bin/test-report.js +76 -67
  92. package/dist/bin/test-report.js.map +1 -1
  93. package/dist/bin/types.d.ts +4 -7
  94. package/dist/bin/types.d.ts.map +1 -1
  95. package/dist/bin/utils/config/load-config.d.ts +8 -0
  96. package/dist/bin/utils/config/load-config.d.ts.map +1 -1
  97. package/dist/bin/utils/config/load-config.js +14 -1
  98. package/dist/bin/utils/config/load-config.js.map +1 -1
  99. package/dist/bin/utils/config/parser.d.ts +15 -2
  100. package/dist/bin/utils/config/parser.d.ts.map +1 -1
  101. package/dist/bin/utils/config/parser.js +29 -8
  102. package/dist/bin/utils/config/parser.js.map +1 -1
  103. package/dist/bin/utils/config/structures/grouped.js +2 -2
  104. package/dist/bin/utils/config/structures/grouped.js.map +1 -1
  105. package/dist/bin/utils/config/structures/legacy.js +1 -1
  106. package/dist/bin/utils/config/structures/legacy.js.map +1 -1
  107. package/dist/lib/extend-expect.d.ts.map +1 -1
  108. package/dist/lib/extend-expect.js +37 -218
  109. package/dist/lib/extend-expect.js.map +1 -1
  110. package/dist/lib/lib.d.ts +1 -5
  111. package/dist/lib/lib.d.ts.map +1 -1
  112. package/dist/lib/lib.js +19 -31
  113. package/dist/lib/lib.js.map +1 -1
  114. package/dist/lib/run-checks.d.ts +14 -0
  115. package/dist/lib/run-checks.d.ts.map +1 -0
  116. package/dist/lib/run-checks.js +82 -0
  117. package/dist/lib/run-checks.js.map +1 -0
  118. package/dist/lib/run-test-result.d.ts +3 -6
  119. package/dist/lib/run-test-result.d.ts.map +1 -1
  120. package/dist/lib/run-test-result.js +41 -54
  121. package/dist/lib/run-test-result.js.map +1 -1
  122. package/dist/test/bundle/cli-bundle.test.js +76 -56
  123. package/dist/test/bundle/cli-bundle.test.js.map +1 -1
  124. package/dist/test/bundle/token-wrapper.test.d.ts +2 -0
  125. package/dist/test/bundle/token-wrapper.test.d.ts.map +1 -0
  126. package/dist/test/bundle/token-wrapper.test.js +80 -0
  127. package/dist/test/bundle/token-wrapper.test.js.map +1 -0
  128. package/dist/test/e2e/cli-bundle.e2e.test.js +33 -68
  129. package/dist/test/e2e/cli-bundle.e2e.test.js.map +1 -1
  130. package/dist/test/e2e/git-build-release.e2e.test.d.ts +2 -0
  131. package/dist/test/e2e/git-build-release.e2e.test.d.ts.map +1 -0
  132. package/dist/test/e2e/git-build-release.e2e.test.js +87 -0
  133. package/dist/test/e2e/git-build-release.e2e.test.js.map +1 -0
  134. package/dist/test/e2e/helpers.d.ts +37 -0
  135. package/dist/test/e2e/helpers.d.ts.map +1 -0
  136. package/dist/test/e2e/helpers.js +57 -0
  137. package/dist/test/e2e/helpers.js.map +1 -0
  138. package/dist/test/unit/bin/actor-filtering.test.js +7 -0
  139. package/dist/test/unit/bin/actor-filtering.test.js.map +1 -1
  140. package/dist/test/unit/bin/actor-ids.test.d.ts +2 -0
  141. package/dist/test/unit/bin/actor-ids.test.d.ts.map +1 -0
  142. package/dist/test/unit/bin/actor-ids.test.js +40 -0
  143. package/dist/test/unit/bin/actor-ids.test.js.map +1 -0
  144. package/dist/test/unit/bin/affected-actors-cli.test.d.ts +2 -0
  145. package/dist/test/unit/bin/affected-actors-cli.test.d.ts.map +1 -0
  146. package/dist/test/unit/bin/affected-actors-cli.test.js +224 -0
  147. package/dist/test/unit/bin/affected-actors-cli.test.js.map +1 -0
  148. package/dist/test/unit/bin/affected-actors.test.d.ts +2 -0
  149. package/dist/test/unit/bin/affected-actors.test.d.ts.map +1 -0
  150. package/dist/test/unit/bin/affected-actors.test.js +153 -0
  151. package/dist/test/unit/bin/affected-actors.test.js.map +1 -0
  152. package/dist/test/unit/bin/build-cli.test.d.ts +2 -0
  153. package/dist/test/unit/bin/build-cli.test.d.ts.map +1 -0
  154. package/dist/test/unit/bin/build-cli.test.js +49 -0
  155. package/dist/test/unit/bin/build-cli.test.js.map +1 -0
  156. package/dist/test/unit/bin/build-from-local.test.js +12 -0
  157. package/dist/test/unit/bin/build-from-local.test.js.map +1 -1
  158. package/dist/test/unit/bin/build.test.js +116 -6
  159. package/dist/test/unit/bin/build.test.js.map +1 -1
  160. package/dist/test/unit/bin/compiled-cli.d.ts +6 -0
  161. package/dist/test/unit/bin/compiled-cli.d.ts.map +1 -0
  162. package/dist/test/unit/bin/compiled-cli.js +23 -0
  163. package/dist/test/unit/bin/compiled-cli.js.map +1 -0
  164. package/dist/test/unit/bin/diff-changes.test.js +168 -114
  165. package/dist/test/unit/bin/diff-changes.test.js.map +1 -1
  166. package/dist/test/unit/bin/diff.test.js +25 -28
  167. package/dist/test/unit/bin/diff.test.js.map +1 -1
  168. package/dist/test/unit/bin/git.test.js +67 -288
  169. package/dist/test/unit/bin/git.test.js.map +1 -1
  170. package/dist/test/unit/bin/notify.test.d.ts +2 -0
  171. package/dist/test/unit/bin/notify.test.d.ts.map +1 -0
  172. package/dist/test/unit/bin/notify.test.js +222 -0
  173. package/dist/test/unit/bin/notify.test.js.map +1 -0
  174. package/dist/test/unit/bin/stdin-input.test.d.ts +2 -0
  175. package/dist/test/unit/bin/stdin-input.test.d.ts.map +1 -0
  176. package/dist/test/unit/bin/stdin-input.test.js +92 -0
  177. package/dist/test/unit/bin/stdin-input.test.js.map +1 -0
  178. package/dist/test/unit/bin/test-cli.test.d.ts +2 -0
  179. package/dist/test/unit/bin/test-cli.test.d.ts.map +1 -0
  180. package/dist/test/unit/bin/test-cli.test.js +146 -0
  181. package/dist/test/unit/bin/test-cli.test.js.map +1 -0
  182. package/dist/test/unit/bin/test-files-glob.test.d.ts +2 -0
  183. package/dist/test/unit/bin/test-files-glob.test.d.ts.map +1 -0
  184. package/dist/test/unit/bin/test-files-glob.test.js +102 -0
  185. package/dist/test/unit/bin/test-files-glob.test.js.map +1 -0
  186. package/dist/test/unit/bin/test-report.test.d.ts +2 -0
  187. package/dist/test/unit/bin/test-report.test.d.ts.map +1 -0
  188. package/dist/test/unit/bin/test-report.test.js +100 -0
  189. package/dist/test/unit/bin/test-report.test.js.map +1 -0
  190. package/dist/test/unit/bin/utils/config/load-config.test.js +19 -1
  191. package/dist/test/unit/bin/utils/config/load-config.test.js.map +1 -1
  192. package/dist/test/unit/bin/utils/config/parser.test.js +36 -4
  193. package/dist/test/unit/bin/utils/config/parser.test.js.map +1 -1
  194. package/dist/test/unit/bin/utils/config/structures/grouped.test.js +6 -0
  195. package/dist/test/unit/bin/utils/config/structures/grouped.test.js.map +1 -1
  196. package/dist/test/unit/bin/utils/config/structures/legacy.test.js +1 -0
  197. package/dist/test/unit/bin/utils/config/structures/legacy.test.js.map +1 -1
  198. package/dist/test/unit/github-scripts/mask-config-secrets.test.d.ts +2 -0
  199. package/dist/test/unit/github-scripts/mask-config-secrets.test.d.ts.map +1 -0
  200. package/dist/test/unit/github-scripts/mask-config-secrets.test.js +50 -0
  201. package/dist/test/unit/github-scripts/mask-config-secrets.test.js.map +1 -0
  202. package/dist/test/unit/github-scripts/run-with-apify-tokens.test.d.ts +2 -0
  203. package/dist/test/unit/github-scripts/run-with-apify-tokens.test.d.ts.map +1 -0
  204. package/dist/test/unit/github-scripts/run-with-apify-tokens.test.js +102 -0
  205. package/dist/test/unit/github-scripts/run-with-apify-tokens.test.js.map +1 -0
  206. package/dist/test/unit/run-checks.test.d.ts +2 -0
  207. package/dist/test/unit/run-checks.test.d.ts.map +1 -0
  208. package/dist/test/unit/run-checks.test.js +62 -0
  209. package/dist/test/unit/run-checks.test.js.map +1 -0
  210. package/dist/test/unit/run-test-result.test.d.ts +2 -0
  211. package/dist/test/unit/run-test-result.test.d.ts.map +1 -0
  212. package/dist/test/unit/run-test-result.test.js +34 -0
  213. package/dist/test/unit/run-test-result.test.js.map +1 -0
  214. package/dist/test/unit/should-built-and-test.test.js +41 -38
  215. package/dist/test/unit/should-built-and-test.test.js.map +1 -1
  216. package/dist/tsconfig.tsbuildinfo +1 -1
  217. package/dist/workflow-scripts-src/run-with-apify-tokens.d.ts +3 -0
  218. package/dist/workflow-scripts-src/run-with-apify-tokens.d.ts.map +1 -0
  219. package/dist/workflow-scripts-src/run-with-apify-tokens.js +100 -0
  220. package/dist/workflow-scripts-src/run-with-apify-tokens.js.map +1 -0
  221. package/docs/cli.md +469 -0
  222. package/docs/lib.md +276 -0
  223. package/docs/workflows.md +455 -0
  224. package/eslint.config.mjs +10 -1
  225. package/lib/extend-expect.ts +48 -258
  226. package/lib/lib.ts +25 -34
  227. package/lib/run-checks.ts +101 -0
  228. package/lib/run-test-result.ts +45 -55
  229. package/package.json +4 -2
  230. package/platform-tests-investigate-and-fix/skills/assess-impact/SKILL.md +42 -0
  231. package/platform-tests-investigate-and-fix/skills/measure-flakiness/SKILL.md +4 -2
  232. package/test/bundle/cli-bundle.test.ts +97 -67
  233. package/test/bundle/token-wrapper.test.ts +110 -0
  234. package/test/e2e/cli-bundle.e2e.test.ts +60 -93
  235. package/test/e2e/git-build-release.e2e.test.ts +113 -0
  236. package/test/e2e/helpers.ts +82 -0
  237. package/test/unit/bin/actor-filtering.test.ts +8 -0
  238. package/test/unit/bin/actor-ids.test.ts +47 -0
  239. package/test/unit/bin/affected-actors-cli.test.ts +271 -0
  240. package/test/unit/bin/affected-actors.test.ts +221 -0
  241. package/test/unit/bin/build-cli.test.ts +61 -0
  242. package/test/unit/bin/build-from-local.test.ts +16 -0
  243. package/test/unit/bin/build.test.ts +149 -5
  244. package/test/unit/bin/compiled-cli.ts +23 -0
  245. package/test/unit/bin/diff-changes.test.ts +181 -114
  246. package/test/unit/bin/diff.test.ts +25 -28
  247. package/test/unit/bin/git.test.ts +76 -361
  248. package/test/unit/bin/notify.test.ts +299 -0
  249. package/test/unit/bin/stdin-input.test.ts +120 -0
  250. package/test/unit/bin/test-cli.test.ts +175 -0
  251. package/test/unit/bin/test-files-glob.test.ts +118 -0
  252. package/test/unit/bin/test-report.test.ts +118 -0
  253. package/test/unit/bin/utils/config/load-config.test.ts +26 -1
  254. package/test/unit/bin/utils/config/parser.test.ts +46 -5
  255. package/test/unit/bin/utils/config/structures/grouped.test.ts +12 -0
  256. package/test/unit/bin/utils/config/structures/legacy.test.ts +1 -0
  257. package/test/unit/github-scripts/mask-config-secrets.test.ts +61 -0
  258. package/test/unit/github-scripts/run-with-apify-tokens.test.ts +115 -0
  259. package/test/unit/run-checks.test.ts +76 -0
  260. package/test/unit/run-test-result.test.ts +44 -0
  261. package/test/unit/should-built-and-test.test.ts +46 -39
  262. package/tsconfig.json +1 -1
  263. package/vitest.config.ts +9 -0
  264. package/workflow-scripts-src/run-with-apify-tokens.ts +112 -0
  265. package/.github/scripts/check-major-tag-refs.mjs +0 -72
  266. package/dist/test/unit/bin/logging.test.d.ts +0 -2
  267. package/dist/test/unit/bin/logging.test.d.ts.map +0 -1
  268. package/dist/test/unit/bin/logging.test.js +0 -43
  269. package/dist/test/unit/bin/logging.test.js.map +0 -1
  270. package/dist/test/unit/bin/slack.test.d.ts +0 -2
  271. package/dist/test/unit/bin/slack.test.d.ts.map +0 -1
  272. package/dist/test/unit/bin/slack.test.js +0 -54
  273. package/dist/test/unit/bin/slack.test.js.map +0 -1
  274. package/test/unit/bin/logging.test.ts +0 -52
  275. package/test/unit/bin/slack.test.ts +0 -65
@@ -0,0 +1,108 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import picomatch from 'picomatch';
4
+ /**
5
+ * Test globs are from the repo root, e.g. `test/platform/**`. `get-affected-actors` matches changed files against the
6
+ * config's `platformTestsGlob` and `test` runs the files `--test-files-glob` matches, so both read globs the same way.
7
+ */
8
+ const PICOMATCH_OPTIONS = { nocase: true, dot: true };
9
+ /** Never walked: they hold no test files of the repo, and node_modules can be huge. */
10
+ const SKIPPED_DIRS = new Set(['node_modules', '.git']);
11
+ const assertRelativeGlob = (glob) => {
12
+ if (path.posix.isAbsolute(glob) || path.win32.isAbsolute(glob)) {
13
+ throw new Error(`Test file globs must be relative to the repo root, got "${glob}".`);
14
+ }
15
+ };
16
+ /** Tells whether a repo-root-relative path matches the glob. Without a glob, nothing matches. */
17
+ export const createTestFilesMatcher = (glob) => {
18
+ if (!glob)
19
+ return () => false;
20
+ assertRelativeGlob(glob);
21
+ const isMatch = picomatch(glob, PICOMATCH_OPTIONS);
22
+ // One argument only: picomatch's second one returns a truthy object, and Array#filter passes the index there
23
+ return (filePath) => isMatch(filePath);
24
+ };
25
+ /** Lists the files under `dir`. A missing `dir` has no files. */
26
+ const listFiles = async (cwd, dir) => {
27
+ let entries;
28
+ try {
29
+ entries = await fs.readdir(path.join(cwd, dir), { withFileTypes: true });
30
+ }
31
+ catch (error) {
32
+ const { code } = error;
33
+ if (code === 'ENOENT')
34
+ return { files: [], skipped: [] };
35
+ // A glob without wildcards has the file itself as its base
36
+ if (code === 'ENOTDIR')
37
+ return { files: [dir], skipped: [] };
38
+ throw error;
39
+ }
40
+ const listing = { files: [], skipped: [] };
41
+ for (const entry of entries) {
42
+ const entryPath = path.posix.join(dir, entry.name);
43
+ if (entry.isDirectory() && !SKIPPED_DIRS.has(entry.name)) {
44
+ const inner = await listFiles(cwd, entryPath);
45
+ listing.files.push(...inner.files);
46
+ listing.skipped.push(...inner.skipped);
47
+ }
48
+ else if (entry.isFile()) {
49
+ listing.files.push(entryPath);
50
+ }
51
+ else {
52
+ listing.skipped.push(entryPath);
53
+ }
54
+ }
55
+ return listing;
56
+ };
57
+ const isWithin = (dir, base) => base === '.' || dir === base || dir.startsWith(`${base}/`);
58
+ /**
59
+ * The directories from `base` down to the file's own directory, `base` first. None when `base` is the file itself,
60
+ * as for a glob without wildcards.
61
+ */
62
+ const dirsFromBase = (file, base) => {
63
+ const dirs = [];
64
+ for (let dir = path.posix.dirname(file); isWithin(dir, base); dir = path.posix.dirname(dir)) {
65
+ dirs.unshift(dir);
66
+ if (dir === base || dir === '.')
67
+ break;
68
+ }
69
+ return dirs;
70
+ };
71
+ /**
72
+ * Turns the matched files into as few paths as possible: a directory, with a trailing `/`, where the glob matches
73
+ * every file in it, and a single file otherwise. `test/platform/{daily,hourly}/**` gives two paths however many
74
+ * tests the folders hold, so the vitest command line stays short.
75
+ */
76
+ const toCoveringPaths = ({ files, skipped }, matched, base) => {
77
+ const counts = new Map();
78
+ for (const file of [...files, ...skipped]) {
79
+ for (const dir of dirsFromBase(file, base)) {
80
+ const count = counts.get(dir) ?? { total: 0, matched: 0 };
81
+ count.total += 1;
82
+ if (matched.has(file))
83
+ count.matched += 1;
84
+ counts.set(dir, count);
85
+ }
86
+ }
87
+ const isCovered = (dir) => counts.get(dir).total === counts.get(dir).matched;
88
+ const paths = new Set();
89
+ for (const file of matched) {
90
+ // The highest directory that holds only matched files, so its children are not listed one by one
91
+ const coveredDir = dirsFromBase(file, base).find(isCovered);
92
+ paths.add(coveredDir === undefined ? file : `${coveredDir}/`);
93
+ }
94
+ return [...paths].sort();
95
+ };
96
+ /**
97
+ * Finds the files the glob matches. `cwd` is the repo root. Only the glob's static base (`test/platform` for
98
+ * `test/platform/{daily,hourly}/**`) is walked.
99
+ */
100
+ export const resolveTestFilesGlob = async (glob, cwd) => {
101
+ const isMatch = createTestFilesMatcher(glob);
102
+ // normalize turns `./test` into `test`, the way git prints paths
103
+ const base = path.posix.normalize(picomatch.scan(glob).base || '.');
104
+ const listing = await listFiles(cwd, base);
105
+ const files = listing.files.filter(isMatch).sort();
106
+ return { files, paths: toCoveringPaths(listing, new Set(files), base) };
107
+ };
108
+ //# sourceMappingURL=test-files-glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-files-glob.js","sourceRoot":"","sources":["../../bin/test-files-glob.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,71 @@
1
- interface ReportTestResultsOptions {
2
- reportFile: string;
3
- dryRun: boolean;
4
- reportSlackChannel?: string;
5
- jobUrl?: string;
6
- workflowName?: string;
7
- }
8
- export declare const reportTestResults: ({ dryRun, reportSlackChannel, reportFile: jsonResultsPath, jobUrl, workflowName, }: ReportTestResultsOptions) => Promise<void>;
1
+ export type TestStatus = 'passed' | 'failed' | 'skipped';
2
+ /** The Actor run a test started, as the lib records it on the test's `meta`. */
3
+ export interface TestRun {
4
+ actorId: string;
5
+ runId: string;
6
+ runLink: string;
7
+ }
8
+ export interface TestCaseReport {
9
+ /** The full test name, including its `describe` blocks, e.g. `owner/name: finishes` */
10
+ name: string;
11
+ /** Relative to the directory the tests ran in */
12
+ file: string;
13
+ status: TestStatus;
14
+ durationMs: number | null;
15
+ /** The first line of each failure, the rest (diffs, stack traces) is in the vitest output */
16
+ failureMessages: string[];
17
+ /** Null for tests that didn't start a run: skipped ones, standby tests, or ones that failed before the run */
18
+ run: TestRun | null;
19
+ }
20
+ /**
21
+ * What `test` writes to stdout and `notify` reads. A contract between the CLI and whoever reads it, so add fields
22
+ * freely, but renaming or removing one needs a new `version`.
23
+ */
24
+ export interface TestReport {
25
+ /** What the document is, so `notify` and others can tell it from other outputs */
26
+ kind: 'test-report';
27
+ version: 1;
28
+ /** False if any test failed, or the run failed in a way no test accounts for (see `errors`) */
29
+ success: boolean;
30
+ summary: {
31
+ total: number;
32
+ passed: number;
33
+ failed: number;
34
+ skipped: number;
35
+ };
36
+ tests: TestCaseReport[];
37
+ /** Failures outside any test, e.g. a test file that failed to import, or vitest crashing without a report */
38
+ errors: string[];
39
+ }
40
+ type VitestStatus = 'passed' | 'failed' | 'skipped' | 'pending' | 'todo' | 'disabled';
41
+ interface VitestAssertionResult {
42
+ fullName: string;
43
+ status: VitestStatus;
44
+ duration?: number | null;
45
+ failureMessages: string[] | null;
46
+ meta?: Partial<TestRun>;
47
+ }
48
+ interface VitestFileResult {
49
+ name: string;
50
+ status: 'failed' | 'passed';
51
+ message: string;
52
+ assertionResults: VitestAssertionResult[];
53
+ }
54
+ export interface VitestJsonReport {
55
+ success: boolean;
56
+ testResults: VitestFileResult[];
57
+ }
58
+ /**
59
+ * Turns vitest's JSON report into a `TestReport`. `exitCode` is vitest's: a non-zero exit with every test passing
60
+ * still fails the report (e.g. an unhandled error between tests), so the report never reads greener than the run.
61
+ */
62
+ export declare const toTestReport: (vitest: VitestJsonReport, { cwd, exitCode }: {
63
+ cwd: string;
64
+ exitCode: number;
65
+ }) => TestReport;
66
+ /** The report of a run that left no vitest report behind, e.g. because vitest crashed or was killed. */
67
+ export declare const failedRunReport: (error: string) => TestReport;
68
+ /** Logs the tests with their run links, which vitest's own output doesn't show. */
69
+ export declare const logTestReport: ({ summary, tests, errors }: TestReport) => void;
9
70
  export {};
10
71
  //# sourceMappingURL=test-report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-report.d.ts","sourceRoot":"","sources":["../../bin/test-report.ts"],"names":[],"mappings":"AAKA,UAAU,wBAAwB;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB,GAAU,oFAMrC,wBAAwB,kBAsF1B,CAAC"}
1
+ {"version":3,"file":"test-report.d.ts","sourceRoot":"","sources":["../../bin/test-report.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzD,gFAAgF;AAChF,MAAM,WAAW,OAAO;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,6FAA6F;IAC7F,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,8GAA8G;IAC9G,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACvB,kFAAkF;IAClF,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,CAAC,CAAC;IACX,+FAA+F;IAC/F,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,6GAA6G;IAC7G,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAGD,KAAK,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtF,UAAU,qBAAqB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3B;AAED,UAAU,gBAAgB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACnC;AASD;;;GAGG;AACH,eAAO,MAAM,YAAY,GACrB,QAAQ,gBAAgB,EACxB,mBAAmB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KACrD,UA2CF,CAAC;AAEF,wGAAwG;AACxG,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,UAO9C,CAAC;AAEH,mFAAmF;AACnF,eAAO,MAAM,aAAa,GAAI,4BAA4B,UAAU,SAuBnE,CAAC"}
@@ -1,79 +1,88 @@
1
- import fs from 'node:fs/promises';
1
+ import path from 'node:path';
2
2
  import { logger } from './logger.js';
3
- import { getSlackClient, sendingLabel, sendSlackMessage } from './slack.js';
4
- export const reportTestResults = async ({ dryRun, reportSlackChannel, reportFile: jsonResultsPath, jobUrl, workflowName, }) => {
5
- const results = JSON.parse((await fs.readFile(jsonResultsPath)).toString());
6
- const passed = [];
7
- const failed = [];
8
- for (const result of results.testResults) {
9
- if (result.status !== 'failed') {
10
- passed.push(...result.assertionResults);
11
- continue;
3
+ const firstLine = (text) => text.split('\n')[0];
4
+ const toRun = (meta) => {
5
+ const { actorId, runId, runLink } = meta ?? {};
6
+ return actorId && runId && runLink ? { actorId, runId, runLink } : null;
7
+ };
8
+ /**
9
+ * Turns vitest's JSON report into a `TestReport`. `exitCode` is vitest's: a non-zero exit with every test passing
10
+ * still fails the report (e.g. an unhandled error between tests), so the report never reads greener than the run.
11
+ */
12
+ export const toTestReport = (vitest, { cwd, exitCode }) => {
13
+ const tests = [];
14
+ const errors = [];
15
+ for (const file of vitest.testResults) {
16
+ const relativeFile = path.relative(cwd, file.name);
17
+ // A file that fails to load (an import error, a syntax error) has no tests to blame, only its message
18
+ if (file.status === 'failed' && file.message) {
19
+ errors.push(`${relativeFile}: ${firstLine(file.message)}`);
12
20
  }
13
- for (const aResult of result.assertionResults) {
14
- if (aResult.status !== 'failed') {
15
- passed.push(aResult);
16
- }
17
- else {
18
- failed.push(aResult);
19
- }
21
+ for (const assertion of file.assertionResults) {
22
+ const status = assertion.status === 'passed' || assertion.status === 'failed' ? assertion.status : 'skipped';
23
+ tests.push({
24
+ name: assertion.fullName,
25
+ file: relativeFile,
26
+ status,
27
+ durationMs: assertion.duration != null ? Math.round(assertion.duration) : null,
28
+ failureMessages: (assertion.failureMessages ?? []).map(firstLine),
29
+ run: toRun(assertion.meta),
30
+ });
20
31
  }
21
32
  }
22
- const failedAssertions = [];
23
- logger.info();
24
- logger.info(`PASSED: ${passed.length}, FAILED: ${failed.length}`);
25
- logger.info();
26
- logger.info('**************************************************');
27
- logger.info('* Successes *');
28
- logger.info('**************************************************');
29
- logger.info();
30
- for (const [i, aResult] of passed.entries()) {
31
- const { fullName } = aResult;
32
- logger.info(`${i + 1}) ${fullName} ... ${aResult.meta.runLink}`);
33
- logger.info();
33
+ const count = (status) => tests.filter((test) => test.status === status).length;
34
+ const summary = {
35
+ total: tests.length,
36
+ passed: count('passed'),
37
+ failed: count('failed'),
38
+ skipped: count('skipped'),
39
+ };
40
+ if (exitCode !== 0 && summary.failed === 0 && errors.length === 0) {
41
+ errors.push(`Vitest exited with code ${exitCode}, see its output above`);
34
42
  }
35
- logger.info('**************************************************');
36
- logger.info('* Failures *');
37
- logger.info('**************************************************');
43
+ return {
44
+ kind: 'test-report',
45
+ version: 1,
46
+ success: vitest.success && exitCode === 0 && summary.failed === 0 && errors.length === 0,
47
+ summary,
48
+ tests,
49
+ errors,
50
+ };
51
+ };
52
+ /** The report of a run that left no vitest report behind, e.g. because vitest crashed or was killed. */
53
+ export const failedRunReport = (error) => ({
54
+ kind: 'test-report',
55
+ version: 1,
56
+ success: false,
57
+ summary: { total: 0, passed: 0, failed: 0, skipped: 0 },
58
+ tests: [],
59
+ errors: [error],
60
+ });
61
+ /** Logs the tests with their run links, which vitest's own output doesn't show. */
62
+ export const logTestReport = ({ summary, tests, errors }) => {
63
+ const runLink = ({ run }) => (run ? ` ... ${run.runLink}` : '');
64
+ const totals = `PASSED: ${summary.passed}, FAILED: ${summary.failed}, SKIPPED: ${summary.skipped}`;
38
65
  logger.info();
39
- for (const [i, aResult] of failed.entries()) {
40
- const { failureMessages, fullName, meta } = aResult;
41
- if (failureMessages) {
42
- failedAssertions.push(...failureMessages.map((message) => ({
43
- message: message.split('\n')?.[0],
44
- runLink: meta.runLink,
45
- actorId: meta.actorId,
46
- })));
66
+ logger.info(totals);
67
+ for (const status of ['passed', 'failed']) {
68
+ const matching = tests.filter((test) => test.status === status);
69
+ if (matching.length === 0)
70
+ continue;
71
+ logger.info();
72
+ logger.info(status === 'passed' ? 'Passed:' : 'Failed:');
73
+ for (const [i, test] of matching.entries()) {
74
+ logger.info(`${i + 1}) ${test.name}${runLink(test)}`);
75
+ for (const message of test.failureMessages)
76
+ logger.info(` ${message}`);
47
77
  }
48
- logger.info(`${i + 1}) ${fullName} ... ${meta.runLink}`);
78
+ }
79
+ if (errors.length > 0) {
49
80
  logger.info();
81
+ logger.info('Errors outside of tests:');
82
+ for (const error of errors)
83
+ logger.info(`- ${error}`);
50
84
  }
51
85
  logger.info();
52
- logger.info(`PASSED: ${passed.length}, FAILED: ${failed.length}`);
53
- logger.info();
54
- if (!reportSlackChannel) {
55
- logger.info(`Skipping slack notification. If you want to enable it, add --report-slack-channel flag and make sure SLACK_TOKEN_TESTS_BOT env variable is set.`);
56
- return;
57
- }
58
- // Checked before knowing if there's anything to send, so a broken token shows up on a green run
59
- // (and in dry runs) rather than on the day tests fail
60
- const slack = await getSlackClient('SLACK_TOKEN_TESTS_BOT', dryRun);
61
- if (failedAssertions.length === 0) {
62
- return;
63
- }
64
- // TODO: add slack profiles
65
- const total = failed.length + passed.length;
66
- const jobLink = jobUrl ? ` Check <${jobUrl}|the job>.` : '';
67
- let slackMessage = `\`${workflowName ?? '-'}\``;
68
- slackMessage += `: has ${failedAssertions.length} failed assertions. Failing test suites: ${failed.length}/${total}.${jobLink}`;
69
- slackMessage += `\n\n${failedAssertions[0].message} --- <${failedAssertions[0].runLink}|${failedAssertions[0].actorId}>`;
70
- const blocks = failedAssertions
71
- .slice(1)
72
- .map(({ message, runLink, actorId }) => `• ${message} --- <${runLink}|${actorId}>`);
73
- logger.info(`${sendingLabel(dryRun)} slack message to channel ${reportSlackChannel}:`, slackMessage);
74
- logger.info('\tblocks:', blocks.join('\n\t\t'));
75
- if (!dryRun) {
76
- await sendSlackMessage(slack, reportSlackChannel, slackMessage, blocks);
77
- }
86
+ logger.info(totals);
78
87
  };
79
88
  //# sourceMappingURL=test-report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-report.js","sourceRoot":"","sources":["../../bin/test-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-report.js","sourceRoot":"","sources":["../../bin/test-report.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,9 @@
1
1
  import type { ActorJsonPaths } from './utils/config/actor-json.js';
2
2
  import type { ExistingDir, RelativeDir } from './utils/path/repo-relative.js';
3
- export interface Config {
4
- targetBranch: string;
5
- sourceBranch: string;
6
- baseCommit?: string;
7
- actors: string[];
8
- ignore: string[];
9
- testFilesGlob?: string;
3
+ /** The changes from `fromRef` (excluded) to `toRef`, compared as trees like `git diff fromRef toRef`. */
4
+ export interface GitRange {
5
+ fromRef: string;
6
+ toRef: string;
10
7
  }
11
8
  export type Commit = {
12
9
  sha: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../bin/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE9E,MAAM,WAAW,MAAM;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,MAAM,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IACzB,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,CAAC,EAAE,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,cAAc,CAAC;IAC1B,gBAAgB,EAAE,WAAW,CAAC;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;CAC/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../bin/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE9E,yGAAyG;AACzG,MAAM,WAAW,QAAQ;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,MAAM,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IACzB,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,CAAC,EAAE,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,cAAc,CAAC;IAC1B,gBAAgB,EAAE,WAAW,CAAC;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;CAC/B"}
@@ -1,4 +1,5 @@
1
1
  import type { ActorConfig } from '../../types.js';
2
+ import { type RepoSettings } from './parser.js';
2
3
  import type { ValidatedActorConfig } from './structures/base.js';
3
4
  export declare const CONFIG_FILE_NAME = "apify-test-tools.config.json";
4
5
  /**
@@ -10,4 +11,11 @@ export declare const readConfigFile: (selection: {
10
11
  actors: string[];
11
12
  ignore: string[];
12
13
  }) => Promise<ActorConfig[]>;
14
+ /** Read settings shared by all commands without initializing or validating local paths. */
15
+ export declare const readBaseConfigFile: () => Promise<{
16
+ actorFullName: string;
17
+ tokenEnvVar: string;
18
+ }[]>;
19
+ /** The settings for the whole repository, such as `platformTestsGlob`, with their defaults filled in. */
20
+ export declare const readRepoSettings: () => Promise<RepoSettings>;
13
21
  //# sourceMappingURL=load-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../../../bin/utils/config/load-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKlD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAyD/D;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,KAAG,WA4B7D,CAAC;AAIF,eAAO,MAAM,cAAc,GAAU,WAAW;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,KAAG,OAAO,CAAC,WAAW,EAAE,CAW7G,CAAC"}
1
+ {"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../../../bin/utils/config/load-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,OAAO,EAA+D,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,KAAK,EAAuB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEtF,eAAO,MAAM,gBAAgB,iCAAiC,CAAC;AAyD/D;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,KAAG,WA4B7D,CAAC;AAIF,eAAO,MAAM,cAAc,GAAU,WAAW;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,KAAG,OAAO,CAAC,WAAW,EAAE,CAW7G,CAAC;AAGF,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB;;;IAW9B,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,YAAY,CAAsD,CAAC"}
@@ -2,7 +2,7 @@ import { selectActors } from '../../actor-filtering.js';
2
2
  import { safeReadJsonObjectFile } from '../json-file.js';
3
3
  import { ExistingFile } from '../path/repo-relative.js';
4
4
  import { readActorJson } from './actor-json.js';
5
- import { parseConfigFile } from './parser.js';
5
+ import { parseConfigFile, parseRepoSettings, parseResolvedConfigFile } from './parser.js';
6
6
  export const CONFIG_FILE_NAME = 'apify-test-tools.config.json';
7
7
  // Reading the config happens in three stages, each one swappable on its own:
8
8
  //
@@ -88,4 +88,17 @@ export const readConfigFile = async (selection) => {
88
88
  }
89
89
  return selectActors(selection, actorConfigs);
90
90
  };
91
+ /** Read settings shared by all commands without initializing or validating local paths. */
92
+ export const readBaseConfigFile = async () => {
93
+ const rawFileContents = await readConfigFileContents();
94
+ return parseResolvedConfigFile(rawFileContents).map(({ actorFullName, tokenEnvVar }) =>
95
+ // using `satisfies` here instead of return type annotation
96
+ // so its not shown as `PathlessConfig` type on output or IDE, but the expanded form
97
+ ({
98
+ actorFullName,
99
+ tokenEnvVar,
100
+ }));
101
+ };
102
+ /** The settings for the whole repository, such as `platformTestsGlob`, with their defaults filled in. */
103
+ export const readRepoSettings = async () => parseRepoSettings(await readConfigFileContents());
91
104
  //# sourceMappingURL=load-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../../../bin/utils/config/load-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../../../bin/utils/config/load-config.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,24 @@
1
1
  import { type ResolvedActorConfig, type StrategyParser, type ValidatedActorConfig } from './structures/base.js';
2
2
  declare function selectStrategy(mode: unknown): StrategyParser;
3
- /** Normalize and validate paths, then check collisions using their final spelling. */
4
- declare function verifyConfiguration(body: ResolvedActorConfig[]): ValidatedActorConfig[];
3
+ /** Normalize and initialize paths, including checking that actor folders exist. */
4
+ declare function initializePaths(body: ResolvedActorConfig[]): ValidatedActorConfig[];
5
+ /** Check rules that involve more than one Actor, using initialized paths for comparisons. */
6
+ declare function verifyConfiguration(body: ValidatedActorConfig[]): void;
7
+ /** Settings for the whole repository, next to the Actor entries at the top level of the config. */
8
+ export interface RepoSettings {
9
+ /**
10
+ * Glob from the repo root of the platform test files and their helpers. A change to a matching file is a test
11
+ * change: the tests run, but no release is built for it.
12
+ */
13
+ platformTestsGlob: string;
14
+ }
15
+ export declare function parseRepoSettings(body: Record<string, unknown>): RepoSettings;
5
16
  export declare const _privates: {
6
17
  selectStrategy: typeof selectStrategy;
18
+ initializePaths: typeof initializePaths;
7
19
  verifyConfiguration: typeof verifyConfiguration;
8
20
  };
21
+ export declare function parseResolvedConfigFile(body: Record<string, unknown>): ResolvedActorConfig[];
9
22
  export declare function parseConfigFile(body: Record<string, unknown>): ValidatedActorConfig[];
10
23
  export {};
11
24
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../bin/utils/config/parser.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC5B,MAAM,sBAAsB,CAAC;AAc9B,iBAAS,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAOrD;AAoBD,sFAAsF;AACtF,iBAAS,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,oBAAoB,EAAE,CA6BhF;AAGD,eAAO,MAAM,SAAS;;;CAGrB,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,EAAE,CAMrF"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../bin/utils/config/parser.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC5B,MAAM,sBAAsB,CAAC;AAc9B,iBAAS,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAOrD;AAoBD,mFAAmF;AACnF,iBAAS,eAAe,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,oBAAoB,EAAE,CAS5E;AAED,6FAA6F;AAC7F,iBAAS,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAoB/D;AAKD,mGAAmG;AACnG,MAAM,WAAW,YAAY;IACzB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAI7E;AAGD,eAAO,MAAM,SAAS;;;;CAIrB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,EAAE,CAK5F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,EAAE,CAKrF"}
@@ -28,8 +28,8 @@ const ValidatedConfigSchema = z.array(z.object({
28
28
  tokenEnvVar: z.string(),
29
29
  overrideActorContext: z.array(RelativeDirSchema).optional(),
30
30
  }));
31
- /** Normalize and validate paths, then check collisions using their final spelling. */
32
- function verifyConfiguration(body) {
31
+ /** Normalize and initialize paths, including checking that actor folders exist. */
32
+ function initializePaths(body) {
33
33
  const normalized = body.map((entry) => ({
34
34
  ...entry,
35
35
  folder: normalizeFolder(entry.folder),
@@ -38,13 +38,17 @@ function verifyConfiguration(body) {
38
38
  const parsed = ValidatedConfigSchema.safeParse(normalized);
39
39
  if (!parsed.success)
40
40
  throw new Error(z.prettifyError(parsed.error));
41
+ return parsed.data;
42
+ }
43
+ /** Check rules that involve more than one Actor, using initialized paths for comparisons. */
44
+ function verifyConfiguration(body) {
41
45
  const seenFolders = new Set();
42
46
  const seenActorFullNames = new Set();
43
47
  const errors = [];
44
- for (const [index, entry] of parsed.data.entries()) {
48
+ for (const entry of body) {
45
49
  // TODO: drop folder uniqueness (this requires several changes on other places)
46
50
  if (seenFolders.has(entry.folder.path)) {
47
- errors.push(`Duplicate folder "${body[index].folder}". Each actor must have a unique folder.`);
51
+ errors.push(`Duplicate folder "${entry.folder.path}". Each actor must have a unique folder.`);
48
52
  }
49
53
  else {
50
54
  seenFolders.add(entry.folder.path);
@@ -58,17 +62,34 @@ function verifyConfiguration(body) {
58
62
  }
59
63
  if (errors.length > 0)
60
64
  throw new Error(errors.join('\n'));
65
+ }
66
+ /** Which changed files are platform tests, unless the config sets `platformTestsGlob` */
67
+ const DEFAULT_PLATFORM_TESTS_GLOB = 'test/platform/**';
68
+ const RepoSettingsSchema = z.object({
69
+ platformTestsGlob: z.string().min(1).default(DEFAULT_PLATFORM_TESTS_GLOB),
70
+ });
71
+ export function parseRepoSettings(body) {
72
+ const parsed = RepoSettingsSchema.safeParse(body);
73
+ if (!parsed.success)
74
+ throw new Error(z.prettifyError(parsed.error));
61
75
  return parsed.data;
62
76
  }
63
77
  // eslint-disable-next-line no-underscore-dangle
64
78
  export const _privates = {
65
79
  selectStrategy,
80
+ initializePaths,
66
81
  verifyConfiguration,
67
82
  };
68
- export function parseConfigFile(body) {
69
- const { mode, ...rest } = body;
83
+ export function parseResolvedConfigFile(body) {
84
+ // The repo settings are read by parseRepoSettings, the strategies only see the Actor entries
85
+ const { mode, platformTestsGlob: _platformTestsGlob, ...rest } = body;
70
86
  const strategy = selectStrategy({ mode });
71
- const resolved = strategy.parse(rest);
72
- return verifyConfiguration(resolved);
87
+ return strategy.parse(rest);
88
+ }
89
+ export function parseConfigFile(body) {
90
+ const resolved = parseResolvedConfigFile(body);
91
+ const initialized = initializePaths(resolved);
92
+ verifyConfiguration(initialized);
93
+ return initialized;
73
94
  }
74
95
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../bin/utils/config/parser.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACH,oBAAoB,GAIvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,sBAAsB,GAGxB;IACA,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,aAAa;IAC5C,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,cAAc;CACxC,CAAC;AAEX,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAElH,SAAS,cAAc,CAAC,IAAa;IACjC,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,0GAA0G;AAC1G,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAU,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAExF,4FAA4F;AAC5F,MAAM,eAAe,GAAG,CAAC,MAAc,EAAU,EAAE;IAC/C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CACjC,CAAC,CAAC,MAAM,CAAC;IACL,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,MAAM,EAAE,iBAAiB;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC,CACL,CAAC;AAEF,sFAAsF;AACtF,SAAS,mBAAmB,CAAC,IAA2B;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,GAAG,KAAK;QACR,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,kBAAkB,CAAC;KAC5E,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,+EAA+E;QAC/E,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,0CAA0C,CAAC,CAAC;QACnG,CAAC;aAAM,CAAC;YACJ,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,aAAa,gDAAgD,CAAC,CAAC;QACzG,CAAC;aAAM,CAAC;YACJ,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,cAAc;IACd,mBAAmB;CACtB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,IAA6B;IACzD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../bin/utils/config/parser.ts"],"names":[],"mappings":"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"}