@quenty/nevermore-cli 4.43.4 → 4.45.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.
Files changed (147) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build-scripts/{combine-test-places.luau → combine-test-places.lua} +3 -3
  3. package/build-scripts/{transform-inject-deploy-metadata.luau → transform-inject-deploy-metadata.lua} +3 -3
  4. package/dist/commands/batch-command/batch-deploy-command.js +4 -4
  5. package/dist/commands/batch-command/batch-deploy-command.js.map +1 -1
  6. package/dist/commands/batch-command/batch-test-command.d.ts.map +1 -1
  7. package/dist/commands/batch-command/batch-test-command.js +76 -19
  8. package/dist/commands/batch-command/batch-test-command.js.map +1 -1
  9. package/dist/commands/deploy-command/deploy-init-utils.d.ts.map +1 -1
  10. package/dist/commands/deploy-command/deploy-init-utils.js +7 -1
  11. package/dist/commands/deploy-command/deploy-init-utils.js.map +1 -1
  12. package/dist/commands/deploy-command/deploy-init.d.ts.map +1 -1
  13. package/dist/commands/deploy-command/deploy-init.js +24 -7
  14. package/dist/commands/deploy-command/deploy-init.js.map +1 -1
  15. package/dist/commands/deploy-command/index.js +1 -1
  16. package/dist/commands/deploy-command/index.js.map +1 -1
  17. package/dist/utils/deploy/deploy-github-columns.d.ts +12 -2
  18. package/dist/utils/deploy/deploy-github-columns.d.ts.map +1 -1
  19. package/dist/utils/deploy/deploy-github-columns.js +11 -4
  20. package/dist/utils/deploy/deploy-github-columns.js.map +1 -1
  21. package/dist/utils/deploy/deploy-metadata.js +1 -1
  22. package/dist/utils/deploy/deploy-metadata.js.map +1 -1
  23. package/dist/utils/job-context/base-job-context.d.ts +2 -2
  24. package/dist/utils/job-context/base-job-context.d.ts.map +1 -1
  25. package/dist/utils/job-context/base-job-context.js +1 -1
  26. package/dist/utils/job-context/base-job-context.js.map +1 -1
  27. package/dist/utils/job-context/batch-script-job-context.d.ts +37 -2
  28. package/dist/utils/job-context/batch-script-job-context.d.ts.map +1 -1
  29. package/dist/utils/job-context/batch-script-job-context.js +59 -22
  30. package/dist/utils/job-context/batch-script-job-context.js.map +1 -1
  31. package/dist/utils/job-context/cloud-job-context.d.ts +2 -2
  32. package/dist/utils/job-context/cloud-job-context.d.ts.map +1 -1
  33. package/dist/utils/job-context/cloud-job-context.js +10 -5
  34. package/dist/utils/job-context/cloud-job-context.js.map +1 -1
  35. package/dist/utils/job-context/cloud-job-context.test.d.ts +7 -0
  36. package/dist/utils/job-context/cloud-job-context.test.d.ts.map +1 -0
  37. package/dist/utils/job-context/cloud-job-context.test.js +91 -0
  38. package/dist/utils/job-context/cloud-job-context.test.js.map +1 -0
  39. package/dist/utils/job-context/job-context.d.ts +70 -2
  40. package/dist/utils/job-context/job-context.d.ts.map +1 -1
  41. package/dist/utils/job-context/local-job-context.d.ts +2 -2
  42. package/dist/utils/job-context/local-job-context.d.ts.map +1 -1
  43. package/dist/utils/job-context/local-job-context.js +4 -2
  44. package/dist/utils/job-context/local-job-context.js.map +1 -1
  45. package/dist/utils/job-context/local-job-context.test.d.ts +7 -0
  46. package/dist/utils/job-context/local-job-context.test.d.ts.map +1 -0
  47. package/dist/utils/job-context/local-job-context.test.js +68 -0
  48. package/dist/utils/job-context/local-job-context.test.js.map +1 -0
  49. package/dist/utils/open-cloud/open-cloud-client.d.ts +50 -7
  50. package/dist/utils/open-cloud/open-cloud-client.d.ts.map +1 -1
  51. package/dist/utils/open-cloud/open-cloud-client.js +49 -13
  52. package/dist/utils/open-cloud/open-cloud-client.js.map +1 -1
  53. package/dist/utils/open-cloud/open-cloud-client.test.js +125 -1
  54. package/dist/utils/open-cloud/open-cloud-client.test.js.map +1 -1
  55. package/dist/utils/open-cloud/open-cloud-logs.characterization.test.d.ts +22 -0
  56. package/dist/utils/open-cloud/open-cloud-logs.characterization.test.d.ts.map +1 -0
  57. package/dist/utils/open-cloud/open-cloud-logs.characterization.test.js +202 -0
  58. package/dist/utils/open-cloud/open-cloud-logs.characterization.test.js.map +1 -0
  59. package/dist/utils/package-manager-utils.d.ts.map +1 -1
  60. package/dist/utils/package-manager-utils.js +32 -1
  61. package/dist/utils/package-manager-utils.js.map +1 -1
  62. package/dist/utils/package-manager-utils.test.js +25 -0
  63. package/dist/utils/package-manager-utils.test.js.map +1 -1
  64. package/dist/utils/testing/batch-run.e2e.test.d.ts +17 -0
  65. package/dist/utils/testing/batch-run.e2e.test.d.ts.map +1 -0
  66. package/dist/utils/testing/batch-run.e2e.test.js +343 -0
  67. package/dist/utils/testing/batch-run.e2e.test.js.map +1 -0
  68. package/dist/utils/testing/batch-test-runner-template.test.d.ts +11 -0
  69. package/dist/utils/testing/batch-test-runner-template.test.d.ts.map +1 -0
  70. package/dist/utils/testing/batch-test-runner-template.test.js +38 -0
  71. package/dist/utils/testing/batch-test-runner-template.test.js.map +1 -0
  72. package/dist/utils/testing/log-fetch-stats.d.ts +40 -0
  73. package/dist/utils/testing/log-fetch-stats.d.ts.map +1 -0
  74. package/dist/utils/testing/log-fetch-stats.js +18 -0
  75. package/dist/utils/testing/log-fetch-stats.js.map +1 -0
  76. package/dist/utils/testing/log-fetch-stats.test.d.ts +2 -0
  77. package/dist/utils/testing/log-fetch-stats.test.d.ts.map +1 -0
  78. package/dist/utils/testing/log-fetch-stats.test.js +41 -0
  79. package/dist/utils/testing/log-fetch-stats.test.js.map +1 -0
  80. package/dist/utils/testing/parsers/batch-log-parser.d.ts +126 -1
  81. package/dist/utils/testing/parsers/batch-log-parser.d.ts.map +1 -1
  82. package/dist/utils/testing/parsers/batch-log-parser.js +440 -103
  83. package/dist/utils/testing/parsers/batch-log-parser.js.map +1 -1
  84. package/dist/utils/testing/parsers/batch-log-parser.test.js +494 -1
  85. package/dist/utils/testing/parsers/batch-log-parser.test.js.map +1 -1
  86. package/dist/utils/testing/parsers/batch-log-renderer.d.ts +79 -0
  87. package/dist/utils/testing/parsers/batch-log-renderer.d.ts.map +1 -0
  88. package/dist/utils/testing/parsers/batch-log-renderer.js +241 -0
  89. package/dist/utils/testing/parsers/batch-log-renderer.js.map +1 -0
  90. package/dist/utils/testing/parsers/batch-log-renderer.test.d.ts +2 -0
  91. package/dist/utils/testing/parsers/batch-log-renderer.test.d.ts.map +1 -0
  92. package/dist/utils/testing/parsers/batch-log-renderer.test.js +202 -0
  93. package/dist/utils/testing/parsers/batch-log-renderer.test.js.map +1 -0
  94. package/dist/utils/testing/runner/combined-project-generator.js +1 -1
  95. package/dist/utils/testing/runner/combined-project-generator.js.map +1 -1
  96. package/dist/utils/testing/runner/test-runner.d.ts +24 -0
  97. package/dist/utils/testing/runner/test-runner.d.ts.map +1 -1
  98. package/dist/utils/testing/runner/test-runner.js +166 -6
  99. package/dist/utils/testing/runner/test-runner.js.map +1 -1
  100. package/dist/utils/testing/runner/test-runner.test.js +228 -2
  101. package/dist/utils/testing/runner/test-runner.test.js.map +1 -1
  102. package/dist/utils/testing/structured-test-results.d.ts +77 -0
  103. package/dist/utils/testing/structured-test-results.d.ts.map +1 -0
  104. package/dist/utils/testing/structured-test-results.js +140 -0
  105. package/dist/utils/testing/structured-test-results.js.map +1 -0
  106. package/dist/utils/testing/structured-test-results.test.d.ts +7 -0
  107. package/dist/utils/testing/structured-test-results.test.d.ts.map +1 -0
  108. package/dist/utils/testing/structured-test-results.test.js +179 -0
  109. package/dist/utils/testing/structured-test-results.test.js.map +1 -0
  110. package/package.json +6 -6
  111. package/src/commands/batch-command/batch-deploy-command.ts +4 -4
  112. package/src/commands/batch-command/batch-test-command.ts +94 -19
  113. package/src/commands/deploy-command/deploy-init-utils.ts +7 -1
  114. package/src/commands/deploy-command/deploy-init.ts +41 -11
  115. package/src/commands/deploy-command/index.ts +1 -1
  116. package/src/utils/deploy/deploy-github-columns.ts +14 -4
  117. package/src/utils/deploy/deploy-metadata.ts +1 -1
  118. package/src/utils/job-context/base-job-context.ts +3 -2
  119. package/src/utils/job-context/batch-script-job-context.ts +98 -17
  120. package/src/utils/job-context/cloud-job-context.test.ts +112 -0
  121. package/src/utils/job-context/cloud-job-context.ts +12 -6
  122. package/src/utils/job-context/job-context.ts +71 -2
  123. package/src/utils/job-context/local-job-context.test.ts +89 -0
  124. package/src/utils/job-context/local-job-context.ts +7 -3
  125. package/src/utils/open-cloud/open-cloud-client.test.ts +155 -1
  126. package/src/utils/open-cloud/open-cloud-client.ts +94 -18
  127. package/src/utils/open-cloud/open-cloud-logs.characterization.test.ts +277 -0
  128. package/src/utils/package-manager-utils.test.ts +27 -0
  129. package/src/utils/package-manager-utils.ts +34 -1
  130. package/src/utils/testing/batch-run.e2e.test.ts +425 -0
  131. package/src/utils/testing/batch-test-runner-template.test.ts +62 -0
  132. package/src/utils/testing/log-fetch-stats.test.ts +48 -0
  133. package/src/utils/testing/log-fetch-stats.ts +55 -0
  134. package/src/utils/testing/parsers/batch-log-parser.test.ts +660 -1
  135. package/src/utils/testing/parsers/batch-log-parser.ts +721 -116
  136. package/src/utils/testing/parsers/batch-log-renderer.test.ts +330 -0
  137. package/src/utils/testing/parsers/batch-log-renderer.ts +329 -0
  138. package/src/utils/testing/runner/combined-project-generator.ts +1 -1
  139. package/src/utils/testing/runner/test-runner.test.ts +332 -2
  140. package/src/utils/testing/runner/test-runner.ts +231 -9
  141. package/src/utils/testing/structured-test-results.test.ts +267 -0
  142. package/src/utils/testing/structured-test-results.ts +199 -0
  143. package/templates/batch-test-runner.lua +242 -0
  144. package/tsconfig.tsbuildinfo +1 -1
  145. package/templates/batch-test-runner.luau +0 -137
  146. /package/build-scripts/{smoke-test-server.luau → smoke-test-server.lua} +0 -0
  147. /package/build-scripts/{transform-rojo-merge-place.luau → transform-rojo-merge-place.lua} +0 -0
@@ -1,4 +1,6 @@
1
1
  import { type ParsedTestCounts } from '../test-log-parser.js';
2
+ import { type StructuredTestResults } from '../structured-test-results.js';
3
+ import { type LogFetchStats } from '../log-fetch-stats.js';
2
4
  export interface BatchPackageResult {
3
5
  slug: string;
4
6
  success: boolean;
@@ -14,13 +16,124 @@ export interface BatchPackageResult {
14
16
  * test — often after the test that scheduled it already passed.
15
17
  */
16
18
  tracebackCount: number;
19
+ /**
20
+ * Where `testCounts` came from. `returned` means the run handed them over as a
21
+ * value; `scraped` means they were read out of log text, which is the channel
22
+ * truncation destroys. Absent when there are no counts at all.
23
+ *
24
+ * Recorded because the two are otherwise indistinguishable in the output, and
25
+ * a structured channel that quietly stopped flowing looks exactly like one
26
+ * that never existed.
27
+ */
28
+ countsSource?: 'returned' | 'scraped';
29
+ /**
30
+ * True when this package's counts arrived but its log section did not.
31
+ *
32
+ * A narrower verdict than a package with a section gets: the counts say what
33
+ * happened, but with no text there is nothing to check for tracebacks, and
34
+ * nothing to read when something did go wrong. Reported so a pass that came
35
+ * back half-blind cannot be mistaken for an ordinary one.
36
+ */
37
+ logsLost?: boolean;
38
+ /**
39
+ * What this package's own run returned, recovered from the batch summary.
40
+ *
41
+ * One execution covers every package, so its return value belongs to none of
42
+ * them — the batch runner splits the per-package results into the summary
43
+ * instead, and this puts them back in the shape a single run's results have.
44
+ * Lossy by design: the summary carries counts, not failure text, which is
45
+ * per-package and already in that package's log section.
46
+ */
47
+ testResults?: StructuredTestResults;
48
+ }
49
+ export interface ParseBatchTestLogsOptions {
50
+ /**
51
+ * What the fetch that produced `rawLogs` had to do to collect them, when the
52
+ * caller knows. Not used to judge a package — it only tells a failure that
53
+ * has already happened how much of the run's output ever arrived.
54
+ */
55
+ logFetchStats?: LogFetchStats;
56
+ /**
57
+ * Where diagnostics go. When set, the parser reports through this instead of
58
+ * printing, so a caller that renders the run's output can hold them until
59
+ * after it: a remark about a log window reads as nonsense above the log it
60
+ * is describing.
61
+ */
62
+ onDiagnostic?: (level: BatchDiagnosticLevel, message: string) => void;
63
+ /**
64
+ * What the batch script returned, when the transport carries return values.
65
+ *
66
+ * The same summary the script also prints, taken from the one channel the
67
+ * engine's log buffer cannot truncate — an oversize return value fails the
68
+ * task outright rather than arriving short, so a summary that arrives here is
69
+ * whole. Preferred over the printed copy, which is only reached when this is
70
+ * absent (a local bridge run, or a task that ended without an output).
71
+ */
72
+ returnValues?: unknown[];
73
+ }
74
+ /**
75
+ * `group` and `endgroup` bracket a run of diagnostics that belong together, so
76
+ * a finding repeated across many packages can be collapsed into one block
77
+ * instead of one line each.
78
+ */
79
+ export type BatchDiagnosticLevel = 'info' | 'warn' | 'verbose' | 'group' | 'endgroup';
80
+ /**
81
+ * Print one diagnostic, honoring the grouping levels.
82
+ *
83
+ * `useGroups` is passed in rather than looked up, so the whole run agrees about
84
+ * whether it is emitting workflow commands. Asking `isCI()` separately here, in
85
+ * the renderer and in the reporter is three answers to one question.
86
+ */
87
+ export declare function emitDiagnostic(level: BatchDiagnosticLevel, message: string, useGroups: boolean): void;
88
+ /**
89
+ * Counts the batch runner folds in from what a package's test script returned.
90
+ *
91
+ * Present only for a package whose script returns its results. Carried in the
92
+ * summary rather than left to the logs because the summary prints last and
93
+ * survives a truncated log window, which is where scraped counts are lost.
94
+ */
95
+ interface SummaryCounts {
96
+ passed: number;
97
+ failed: number;
98
+ skipped: number;
99
+ total: number;
100
+ suitesPassed: number;
101
+ suitesFailed: number;
102
+ suitesTotal: number;
17
103
  }
18
104
  interface SummaryEntry {
19
105
  slug: string;
20
106
  success: boolean;
21
107
  durationMs?: number;
22
108
  error?: string;
109
+ counts?: SummaryCounts;
110
+ /** False for a smoke test, so zero counts are not read as "no tests found". */
111
+ ranJest?: boolean;
112
+ }
113
+ interface BeginToken {
114
+ kind: 'begin';
115
+ slug: string;
116
+ }
117
+ interface EndToken {
118
+ kind: 'end';
119
+ slug: string;
120
+ durationMs?: number;
23
121
  }
122
+ interface SummaryToken {
123
+ kind: 'summary';
124
+ /** Where the marker sat, so the JSON payload can be looked up around it. */
125
+ lineIndex: number;
126
+ }
127
+ interface SummaryPayloadToken {
128
+ kind: 'summaryPayload';
129
+ }
130
+ interface ContentToken {
131
+ kind: 'content';
132
+ /** The untrimmed line, since section logs are shown to a human verbatim. */
133
+ line: string;
134
+ }
135
+ /** One log line, classified. Every line becomes exactly one token. */
136
+ export type BatchLogToken = BeginToken | EndToken | SummaryToken | SummaryPayloadToken | ContentToken;
24
137
  /**
25
138
  * Parse the single batch execution's logs into per-package results.
26
139
  *
@@ -35,7 +148,19 @@ interface SummaryEntry {
35
148
  * immune to log reordering. The BEGIN/END markers are used only for splitting logs
36
149
  * into per-package sections. Jest failure detection provides a secondary override.
37
150
  */
38
- export declare function parseBatchTestLogs(rawLogs: string, slugMap: Map<string, string>): Map<string, BatchPackageResult>;
151
+ export declare function parseBatchTestLogs(rawLogs: string, slugMap: Map<string, string>, options?: ParseBatchTestLogsOptions): Map<string, BatchPackageResult>;
152
+ /**
153
+ * Classify every log line, so section splitting reads tokens instead of text.
154
+ */
155
+ export declare function tokenizeBatchLog(lines: string[]): BatchLogToken[];
156
+ /**
157
+ * Find the summary array among a task's return values.
158
+ *
159
+ * The batch script returns the same array it prints. Recognized by shape rather
160
+ * than by position: a run is free to return other things, and an array of
161
+ * objects that all carry a string `slug` is the summary and nothing else.
162
+ */
163
+ export declare function findReturnedSummaryEntries(returnValues: unknown[] | undefined): SummaryEntry[] | undefined;
39
164
  /**
40
165
  * Find the summary array in the lines following the summary marker.
41
166
  *
@@ -1 +1 @@
1
- {"version":3,"file":"batch-log-parser.d.ts","sourceRoot":"","sources":["../../../../src/utils/testing/parsers/batch-log-parser.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAMD,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAgRjC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,GACjB,YAAY,EAAE,GAAG,SAAS,CA4B5B;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"batch-log-parser.d.ts","sourceRoot":"","sources":["../../../../src/utils/testing/parsers/batch-log-parser.ts"],"names":[],"mappings":"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"}