modestbench 0.3.2 → 0.5.1

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 (184) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +45 -2
  3. package/dist/adapters/ava-adapter.cjs +421 -0
  4. package/dist/adapters/ava-adapter.cjs.map +1 -0
  5. package/dist/adapters/ava-adapter.d.cts +39 -0
  6. package/dist/adapters/ava-adapter.d.cts.map +1 -0
  7. package/dist/adapters/ava-adapter.d.ts +39 -0
  8. package/dist/adapters/ava-adapter.d.ts.map +1 -0
  9. package/dist/adapters/ava-adapter.js +384 -0
  10. package/dist/adapters/ava-adapter.js.map +1 -0
  11. package/dist/adapters/ava-hooks.cjs +66 -0
  12. package/dist/adapters/ava-hooks.cjs.map +1 -0
  13. package/dist/adapters/ava-hooks.d.cts +24 -0
  14. package/dist/adapters/ava-hooks.d.cts.map +1 -0
  15. package/dist/adapters/ava-hooks.d.ts +24 -0
  16. package/dist/adapters/ava-hooks.d.ts.map +1 -0
  17. package/dist/adapters/ava-hooks.js +61 -0
  18. package/dist/adapters/ava-hooks.js.map +1 -0
  19. package/dist/adapters/ava-register.cjs +16 -0
  20. package/dist/adapters/ava-register.cjs.map +1 -0
  21. package/dist/adapters/ava-register.d.cts +11 -0
  22. package/dist/adapters/ava-register.d.cts.map +1 -0
  23. package/dist/adapters/ava-register.d.ts +11 -0
  24. package/dist/adapters/ava-register.d.ts.map +1 -0
  25. package/dist/adapters/ava-register.js +14 -0
  26. package/dist/adapters/ava-register.js.map +1 -0
  27. package/dist/adapters/mocha-adapter.cjs +254 -0
  28. package/dist/adapters/mocha-adapter.cjs.map +1 -0
  29. package/dist/adapters/mocha-adapter.d.cts +26 -0
  30. package/dist/adapters/mocha-adapter.d.cts.map +1 -0
  31. package/dist/adapters/mocha-adapter.d.ts +26 -0
  32. package/dist/adapters/mocha-adapter.d.ts.map +1 -0
  33. package/dist/adapters/mocha-adapter.js +217 -0
  34. package/dist/adapters/mocha-adapter.js.map +1 -0
  35. package/dist/adapters/node-test-adapter.cjs +335 -0
  36. package/dist/adapters/node-test-adapter.cjs.map +1 -0
  37. package/dist/adapters/node-test-adapter.d.cts +41 -0
  38. package/dist/adapters/node-test-adapter.d.cts.map +1 -0
  39. package/dist/adapters/node-test-adapter.d.ts +41 -0
  40. package/dist/adapters/node-test-adapter.d.ts.map +1 -0
  41. package/dist/adapters/node-test-adapter.js +298 -0
  42. package/dist/adapters/node-test-adapter.js.map +1 -0
  43. package/dist/adapters/node-test-hooks.cjs +72 -0
  44. package/dist/adapters/node-test-hooks.cjs.map +1 -0
  45. package/dist/adapters/node-test-hooks.d.cts +24 -0
  46. package/dist/adapters/node-test-hooks.d.cts.map +1 -0
  47. package/dist/adapters/node-test-hooks.d.ts +24 -0
  48. package/dist/adapters/node-test-hooks.d.ts.map +1 -0
  49. package/dist/adapters/node-test-hooks.js +67 -0
  50. package/dist/adapters/node-test-hooks.js.map +1 -0
  51. package/dist/adapters/node-test-register.cjs +7 -0
  52. package/dist/adapters/node-test-register.cjs.map +1 -0
  53. package/dist/adapters/node-test-register.d.cts +2 -0
  54. package/dist/adapters/node-test-register.d.cts.map +1 -0
  55. package/dist/adapters/node-test-register.d.ts +2 -0
  56. package/dist/adapters/node-test-register.d.ts.map +1 -0
  57. package/dist/adapters/node-test-register.js +5 -0
  58. package/dist/adapters/node-test-register.js.map +1 -0
  59. package/dist/adapters/types.cjs +152 -0
  60. package/dist/adapters/types.cjs.map +1 -0
  61. package/dist/adapters/types.d.cts +112 -0
  62. package/dist/adapters/types.d.cts.map +1 -0
  63. package/dist/adapters/types.d.ts +112 -0
  64. package/dist/adapters/types.d.ts.map +1 -0
  65. package/dist/adapters/types.js +148 -0
  66. package/dist/adapters/types.js.map +1 -0
  67. package/dist/cli/commands/init.cjs +21 -17
  68. package/dist/cli/commands/init.cjs.map +1 -1
  69. package/dist/cli/commands/init.d.cts.map +1 -1
  70. package/dist/cli/commands/init.d.ts.map +1 -1
  71. package/dist/cli/commands/init.js +21 -17
  72. package/dist/cli/commands/init.js.map +1 -1
  73. package/dist/cli/commands/run.cjs +6 -2
  74. package/dist/cli/commands/run.cjs.map +1 -1
  75. package/dist/cli/commands/run.js +6 -2
  76. package/dist/cli/commands/run.js.map +1 -1
  77. package/dist/cli/commands/test.cjs +392 -0
  78. package/dist/cli/commands/test.cjs.map +1 -0
  79. package/dist/cli/commands/test.d.cts +38 -0
  80. package/dist/cli/commands/test.d.cts.map +1 -0
  81. package/dist/cli/commands/test.d.ts +38 -0
  82. package/dist/cli/commands/test.d.ts.map +1 -0
  83. package/dist/cli/commands/test.js +388 -0
  84. package/dist/cli/commands/test.js.map +1 -0
  85. package/dist/cli/index.cjs +72 -1
  86. package/dist/cli/index.cjs.map +1 -1
  87. package/dist/cli/index.d.cts.map +1 -1
  88. package/dist/cli/index.d.ts.map +1 -1
  89. package/dist/cli/index.js +73 -2
  90. package/dist/cli/index.js.map +1 -1
  91. package/dist/constants.cjs +13 -1
  92. package/dist/constants.cjs.map +1 -1
  93. package/dist/constants.d.cts +12 -0
  94. package/dist/constants.d.cts.map +1 -1
  95. package/dist/constants.d.ts +12 -0
  96. package/dist/constants.d.ts.map +1 -1
  97. package/dist/constants.js +12 -0
  98. package/dist/constants.js.map +1 -1
  99. package/dist/core/engine.cjs +4 -0
  100. package/dist/core/engine.cjs.map +1 -1
  101. package/dist/core/engine.d.cts.map +1 -1
  102. package/dist/core/engine.d.ts.map +1 -1
  103. package/dist/core/engine.js +4 -0
  104. package/dist/core/engine.js.map +1 -1
  105. package/dist/core/engines/tinybench-engine.cjs +163 -131
  106. package/dist/core/engines/tinybench-engine.cjs.map +1 -1
  107. package/dist/core/engines/tinybench-engine.d.cts +6 -0
  108. package/dist/core/engines/tinybench-engine.d.cts.map +1 -1
  109. package/dist/core/engines/tinybench-engine.d.ts +6 -0
  110. package/dist/core/engines/tinybench-engine.d.ts.map +1 -1
  111. package/dist/core/engines/tinybench-engine.js +163 -131
  112. package/dist/core/engines/tinybench-engine.js.map +1 -1
  113. package/dist/core/stats-utils.cjs +4 -2
  114. package/dist/core/stats-utils.cjs.map +1 -1
  115. package/dist/core/stats-utils.d.cts +1 -1
  116. package/dist/core/stats-utils.d.cts.map +1 -1
  117. package/dist/core/stats-utils.d.ts +1 -1
  118. package/dist/core/stats-utils.d.ts.map +1 -1
  119. package/dist/core/stats-utils.js +4 -2
  120. package/dist/core/stats-utils.js.map +1 -1
  121. package/dist/errors/base.cjs +2 -1
  122. package/dist/errors/base.cjs.map +1 -1
  123. package/dist/errors/base.d.cts.map +1 -1
  124. package/dist/errors/base.d.ts.map +1 -1
  125. package/dist/errors/base.js +2 -1
  126. package/dist/errors/base.js.map +1 -1
  127. package/dist/formatters/history/compare.cjs.map +1 -1
  128. package/dist/formatters/history/compare.d.cts.map +1 -1
  129. package/dist/formatters/history/compare.d.ts.map +1 -1
  130. package/dist/formatters/history/compare.js.map +1 -1
  131. package/dist/formatters/history/list.cjs.map +1 -1
  132. package/dist/formatters/history/list.d.cts.map +1 -1
  133. package/dist/formatters/history/list.d.ts.map +1 -1
  134. package/dist/formatters/history/list.js.map +1 -1
  135. package/dist/reporters/human.cjs +83 -27
  136. package/dist/reporters/human.cjs.map +1 -1
  137. package/dist/reporters/human.d.cts +1 -0
  138. package/dist/reporters/human.d.cts.map +1 -1
  139. package/dist/reporters/human.d.ts +1 -0
  140. package/dist/reporters/human.d.ts.map +1 -1
  141. package/dist/reporters/human.js +83 -27
  142. package/dist/reporters/human.js.map +1 -1
  143. package/dist/reporters/simple.cjs +68 -21
  144. package/dist/reporters/simple.cjs.map +1 -1
  145. package/dist/reporters/simple.d.cts +1 -0
  146. package/dist/reporters/simple.d.cts.map +1 -1
  147. package/dist/reporters/simple.d.ts +1 -0
  148. package/dist/reporters/simple.d.ts.map +1 -1
  149. package/dist/reporters/simple.js +68 -21
  150. package/dist/reporters/simple.js.map +1 -1
  151. package/dist/services/config-manager.cjs +1 -1
  152. package/dist/services/config-manager.cjs.map +1 -1
  153. package/dist/services/config-manager.d.cts.map +1 -1
  154. package/dist/services/config-manager.d.ts.map +1 -1
  155. package/dist/services/config-manager.js +2 -2
  156. package/dist/services/config-manager.js.map +1 -1
  157. package/dist/services/file-loader.cjs.map +1 -1
  158. package/dist/services/file-loader.d.cts.map +1 -1
  159. package/dist/services/file-loader.d.ts.map +1 -1
  160. package/dist/services/file-loader.js.map +1 -1
  161. package/package.json +63 -35
  162. package/src/adapters/ava-adapter.ts +553 -0
  163. package/src/adapters/ava-hooks.ts +65 -0
  164. package/src/adapters/ava-register.ts +15 -0
  165. package/src/adapters/mocha-adapter.ts +284 -0
  166. package/src/adapters/node-test-adapter.ts +391 -0
  167. package/src/adapters/node-test-hooks.ts +71 -0
  168. package/src/adapters/node-test-register.ts +5 -0
  169. package/src/adapters/types.ts +281 -0
  170. package/src/cli/commands/init.ts +25 -17
  171. package/src/cli/commands/run.ts +9 -2
  172. package/src/cli/commands/test.ts +546 -0
  173. package/src/cli/index.ts +81 -1
  174. package/src/constants.ts +15 -0
  175. package/src/core/engine.ts +5 -0
  176. package/src/core/engines/tinybench-engine.ts +213 -141
  177. package/src/core/stats-utils.ts +5 -3
  178. package/src/errors/base.ts +3 -2
  179. package/src/formatters/history/compare.ts +1 -3
  180. package/src/formatters/history/list.ts +1 -3
  181. package/src/reporters/human.ts +107 -36
  182. package/src/reporters/simple.ts +81 -22
  183. package/src/services/config-manager.ts +4 -5
  184. package/src/services/file-loader.ts +2 -3
@@ -0,0 +1,392 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Test Adapter Command
4
+ *
5
+ * Run existing test files as benchmarks by capturing test definitions and
6
+ * executing them through a lightweight benchmark runner.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.handleTestCommand = void 0;
10
+ const node_os_1 = require("node:os");
11
+ const node_os_2 = require("node:os");
12
+ const node_path_1 = require("node:path");
13
+ const node_perf_hooks_1 = require("node:perf_hooks");
14
+ const ava_adapter_js_1 = require("../../adapters/ava-adapter.cjs");
15
+ const mocha_adapter_js_1 = require("../../adapters/mocha-adapter.cjs");
16
+ const node_test_adapter_js_1 = require("../../adapters/node-test-adapter.cjs");
17
+ const types_js_1 = require("../../adapters/types.cjs");
18
+ const cli_js_1 = require("../../types/cli.cjs");
19
+ const core_js_1 = require("../../types/core.cjs");
20
+ const type_guards_js_1 = require("../../utils/type-guards.cjs");
21
+ /**
22
+ * Get a minimal default config for test runs
23
+ */
24
+ const getDefaultTestConfig = (iterations, warmup, verbose) => ({
25
+ bail: false,
26
+ exclude: [],
27
+ excludeTags: [],
28
+ iterations,
29
+ limitBy: 'iterations',
30
+ metadata: {},
31
+ pattern: [],
32
+ quiet: false,
33
+ reporterConfig: {},
34
+ reporters: ['human'],
35
+ tags: [],
36
+ thresholds: {},
37
+ time: 1000,
38
+ timeout: 30000,
39
+ verbose,
40
+ warmup,
41
+ });
42
+ /**
43
+ * Default iteration count for test benchmarks
44
+ */
45
+ const DEFAULT_ITERATIONS = 100;
46
+ /**
47
+ * Default warmup iterations
48
+ */
49
+ const DEFAULT_WARMUP = 5;
50
+ /**
51
+ * Handle test command - run test files as benchmarks
52
+ */
53
+ const handleTestCommand = async (context, options) => {
54
+ const verbose = options.verbose ?? false;
55
+ const quiet = options.quiet ?? false;
56
+ const iterations = options.iterations ?? DEFAULT_ITERATIONS;
57
+ const warmup = options.warmup ?? DEFAULT_WARMUP;
58
+ // Get the reporter (default to human unless JSON requested)
59
+ const reporterName = options.json ? 'json' : 'human';
60
+ const reporter = context.reporterRegistry.get(reporterName);
61
+ try {
62
+ // Select the appropriate adapter
63
+ const adapter = selectAdapter(options.framework);
64
+ if (verbose && !quiet) {
65
+ console.error(`Using ${options.framework} adapter`);
66
+ }
67
+ // Resolve file paths
68
+ const cwd = options.cwd ?? process.cwd();
69
+ const patterns = options.pattern ?? [];
70
+ if (patterns.length === 0) {
71
+ console.error('Error: At least one test file path is required');
72
+ return cli_js_1.ExitCodes.CONFIG_ERROR;
73
+ }
74
+ // Build config for the run
75
+ const config = getDefaultTestConfig(iterations, warmup, verbose);
76
+ // Initialize run tracking
77
+ const runStartTime = new Date();
78
+ const fileResults = [];
79
+ let hasFailures = false;
80
+ // Build initial run for onStart (will be updated at end)
81
+ const runId = (0, core_js_1.createRunId)(crypto.randomUUID());
82
+ const initialRun = buildBenchmarkRun([], config, runStartTime, runStartTime, runId);
83
+ // Notify reporter of start
84
+ await reporter?.onStart?.(initialRun);
85
+ for (const pattern of patterns) {
86
+ const filePath = (0, node_path_1.resolve)(cwd, pattern);
87
+ const fileStartTime = new Date();
88
+ if (verbose && !quiet) {
89
+ console.error(`\nCapturing tests from: ${filePath}`);
90
+ }
91
+ await reporter?.onFileStart?.(filePath);
92
+ try {
93
+ const captured = await adapter.capture(filePath);
94
+ if (verbose && !quiet) {
95
+ const testCount = countAllTests(captured);
96
+ console.error(` Found ${testCount} test(s)`);
97
+ }
98
+ // Convert to benchmark definition
99
+ const benchmarkDef = (0, types_js_1.capturedToBenchmark)(captured);
100
+ // Run benchmarks and collect suite results
101
+ const suiteResults = [];
102
+ // Execute benchmarks for each suite
103
+ for (const [suiteName, suite] of Object.entries(benchmarkDef.suites)) {
104
+ const suiteStartTime = new Date();
105
+ const taskResults = [];
106
+ await reporter?.onSuiteStart?.(suiteName);
107
+ // Run setup if present
108
+ if (suite.setup) {
109
+ try {
110
+ await suite.setup();
111
+ }
112
+ catch (setupError) {
113
+ const err = (0, type_guards_js_1.isError)(setupError)
114
+ ? setupError
115
+ : new Error(String(setupError));
116
+ await reporter?.onError?.(err);
117
+ hasFailures = true;
118
+ if (options.bail) {
119
+ return cli_js_1.ExitCodes.BENCHMARK_FAILURES;
120
+ }
121
+ continue;
122
+ }
123
+ }
124
+ // Run each benchmark
125
+ for (const [benchName, bench] of Object.entries(suite.benchmarks)) {
126
+ await reporter?.onTaskStart?.(benchName);
127
+ const result = await runBenchmark(benchName, bench.fn, iterations, warmup);
128
+ // Convert to TaskResult format
129
+ const taskResult = convertToTaskResult(result);
130
+ taskResults.push(taskResult);
131
+ // Notify reporter
132
+ await reporter?.onTaskResult?.(taskResult);
133
+ if (result.error) {
134
+ hasFailures = true;
135
+ if (options.bail) {
136
+ // Run teardown before bailing
137
+ if (suite.teardown) {
138
+ try {
139
+ await suite.teardown();
140
+ }
141
+ catch {
142
+ // Ignore teardown errors when bailing
143
+ }
144
+ }
145
+ return cli_js_1.ExitCodes.BENCHMARK_FAILURES;
146
+ }
147
+ }
148
+ }
149
+ // Run teardown if present
150
+ if (suite.teardown) {
151
+ try {
152
+ await suite.teardown();
153
+ }
154
+ catch (teardownError) {
155
+ const err = (0, type_guards_js_1.isError)(teardownError)
156
+ ? teardownError
157
+ : new Error(String(teardownError));
158
+ await reporter?.onError?.(err);
159
+ }
160
+ }
161
+ const suiteEndTime = new Date();
162
+ const suiteResult = {
163
+ duration: suiteEndTime.getTime() - suiteStartTime.getTime(),
164
+ endTime: suiteEndTime,
165
+ name: suiteName,
166
+ startTime: suiteStartTime,
167
+ tasks: taskResults,
168
+ };
169
+ suiteResults.push(suiteResult);
170
+ await reporter?.onSuiteEnd?.(suiteResult);
171
+ }
172
+ const fileEndTime = new Date();
173
+ const fileResult = {
174
+ duration: fileEndTime.getTime() - fileStartTime.getTime(),
175
+ endTime: fileEndTime,
176
+ filePath,
177
+ startTime: fileStartTime,
178
+ suites: suiteResults,
179
+ };
180
+ fileResults.push(fileResult);
181
+ await reporter?.onFileEnd?.(fileResult);
182
+ }
183
+ catch (captureError) {
184
+ const err = (0, type_guards_js_1.isError)(captureError)
185
+ ? captureError
186
+ : new Error(String(captureError));
187
+ await reporter?.onError?.(err);
188
+ hasFailures = true;
189
+ if (options.bail) {
190
+ return cli_js_1.ExitCodes.BENCHMARK_FAILURES;
191
+ }
192
+ }
193
+ }
194
+ // Build final run result
195
+ const runEndTime = new Date();
196
+ const run = buildBenchmarkRun(fileResults, config, runStartTime, runEndTime, runId);
197
+ // Notify reporter of end
198
+ await reporter?.onEnd?.(run);
199
+ return hasFailures ? cli_js_1.ExitCodes.BENCHMARK_FAILURES : cli_js_1.ExitCodes.SUCCESS;
200
+ }
201
+ catch (error) {
202
+ const err = (0, type_guards_js_1.isError)(error) ? error : new Error(String(error));
203
+ await reporter?.onError?.(err);
204
+ return cli_js_1.ExitCodes.RUNTIME_ERROR;
205
+ }
206
+ };
207
+ exports.handleTestCommand = handleTestCommand;
208
+ /**
209
+ * Run a benchmark for a single test function
210
+ */
211
+ const runBenchmark = async (name, fn, iterations, warmup) => {
212
+ const times = [];
213
+ try {
214
+ // Warmup phase
215
+ for (let i = 0; i < warmup; i++) {
216
+ await fn();
217
+ }
218
+ // Measurement phase
219
+ for (let i = 0; i < iterations; i++) {
220
+ const start = node_perf_hooks_1.performance.now();
221
+ await fn();
222
+ const end = node_perf_hooks_1.performance.now();
223
+ times.push(end - start);
224
+ }
225
+ // Calculate statistics
226
+ const totalTime = times.reduce((a, b) => a + b, 0);
227
+ const mean = totalTime / times.length;
228
+ const min = Math.min(...times);
229
+ const max = Math.max(...times);
230
+ // Standard deviation
231
+ const squaredDiffs = times.map((t) => Math.pow(t - mean, 2));
232
+ const avgSquaredDiff = squaredDiffs.reduce((a, b) => a + b, 0) / squaredDiffs.length;
233
+ const stdDev = Math.sqrt(avgSquaredDiff);
234
+ // Ops per second
235
+ const opsPerSecond = mean > 0 ? 1000 / mean : 0;
236
+ return {
237
+ iterations,
238
+ max,
239
+ mean,
240
+ min,
241
+ name,
242
+ opsPerSecond,
243
+ stdDev,
244
+ totalTime,
245
+ };
246
+ }
247
+ catch (error) {
248
+ return {
249
+ error: (0, type_guards_js_1.isError)(error) ? error : new Error(String(error)),
250
+ iterations: 0,
251
+ max: 0,
252
+ mean: 0,
253
+ min: 0,
254
+ name,
255
+ opsPerSecond: 0,
256
+ stdDev: 0,
257
+ totalTime: 0,
258
+ };
259
+ }
260
+ };
261
+ /**
262
+ * Convert internal TestBenchmarkResult to standard TaskResult format
263
+ *
264
+ * Note: Times are converted from milliseconds to nanoseconds
265
+ */
266
+ const convertToTaskResult = (result) => {
267
+ const MS_TO_NS = 1_000_000;
268
+ // Calculate coefficient of variation (stdDev/mean × 100)
269
+ const cv = result.mean > 0 ? (result.stdDev / result.mean) * 100 : 0;
270
+ // Estimate margin of error (using 95% confidence, ~1.96 * stdErr)
271
+ const stdErr = result.stdDev / Math.sqrt(result.iterations);
272
+ const marginOfError = result.mean > 0 ? ((1.96 * stdErr) / result.mean) * 100 : 0;
273
+ // Variance in ns² = (stdDev in ms)² × (MS_TO_NS)²
274
+ // This is equivalent to (stdDev × MS_TO_NS)² since variance = stdDev²
275
+ const variance = result.stdDev * result.stdDev * MS_TO_NS * MS_TO_NS;
276
+ return {
277
+ cv,
278
+ error: result.error,
279
+ iterations: result.iterations,
280
+ marginOfError,
281
+ max: result.max * MS_TO_NS,
282
+ mean: result.mean * MS_TO_NS,
283
+ min: result.min * MS_TO_NS,
284
+ name: result.name,
285
+ opsPerSecond: result.opsPerSecond,
286
+ // Percentile approximations: without storing all timing samples, we estimate
287
+ // p95/p99 as fractions of max. These are NOT true percentiles from the distribution.
288
+ p95: result.max * MS_TO_NS * 0.95,
289
+ p99: result.max * MS_TO_NS * 0.99,
290
+ stdDev: result.stdDev * MS_TO_NS,
291
+ variance,
292
+ };
293
+ };
294
+ /**
295
+ * Build the final BenchmarkRun result structure
296
+ */
297
+ const buildBenchmarkRun = (files, config, startTime, endTime, runId) => {
298
+ // Collect all task results for summary
299
+ const allTasks = [];
300
+ for (const file of files) {
301
+ for (const suite of file.suites) {
302
+ allTasks.push(...suite.tasks);
303
+ }
304
+ }
305
+ // Find fastest and slowest
306
+ const validTasks = allTasks.filter((t) => !t.error && t.opsPerSecond > 0);
307
+ const fastest = validTasks.length > 0
308
+ ? validTasks.reduce((a, b) => (a.opsPerSecond > b.opsPerSecond ? a : b))
309
+ : null;
310
+ const slowest = validTasks.length > 0
311
+ ? validTasks.reduce((a, b) => (a.opsPerSecond < b.opsPerSecond ? a : b))
312
+ : null;
313
+ // Calculate summary
314
+ const summary = {
315
+ failedTasks: allTasks.filter((t) => t.error).length,
316
+ fastest,
317
+ overallMean: validTasks.length > 0
318
+ ? validTasks.reduce((sum, t) => sum + t.mean, 0) / validTasks.length
319
+ : 0,
320
+ passedTasks: validTasks.length,
321
+ slowest,
322
+ totalFiles: files.length,
323
+ totalOperations: allTasks.reduce((sum, t) => sum + t.iterations, 0),
324
+ totalSuites: files.reduce((sum, f) => sum + f.suites.length, 0),
325
+ totalTasks: allTasks.length,
326
+ };
327
+ return {
328
+ config,
329
+ duration: endTime.getTime() - startTime.getTime(),
330
+ endTime,
331
+ environment: {
332
+ arch: process.arch,
333
+ availableMemory: (0, node_os_2.freemem)(),
334
+ cpu: {
335
+ cores: (0, node_os_2.cpus)().length,
336
+ model: (0, node_os_2.cpus)()[0]?.model ?? 'unknown',
337
+ speed: (0, node_os_2.cpus)()[0]?.speed ?? 0,
338
+ },
339
+ env: {},
340
+ hostname: (0, node_os_1.hostname)(),
341
+ memory: {
342
+ free: (0, node_os_2.freemem)(),
343
+ total: (0, node_os_2.totalmem)(),
344
+ used: (0, node_os_2.totalmem)() - (0, node_os_2.freemem)(),
345
+ },
346
+ nodeVersion: process.version,
347
+ platform: process.platform,
348
+ },
349
+ files,
350
+ id: runId,
351
+ startTime,
352
+ summary,
353
+ };
354
+ };
355
+ /**
356
+ * Select the appropriate adapter for the framework
357
+ */
358
+ const selectAdapter = (framework) => {
359
+ switch (framework) {
360
+ case 'ava':
361
+ return new ava_adapter_js_1.AvaAdapter();
362
+ case 'mocha':
363
+ return new mocha_adapter_js_1.MochaAdapter();
364
+ case 'node-test':
365
+ return new node_test_adapter_js_1.NodeTestAdapter();
366
+ default: {
367
+ const _exhaustive = framework;
368
+ throw new Error(`Unknown framework: ${_exhaustive}`);
369
+ }
370
+ }
371
+ };
372
+ /**
373
+ * Count all tests in a captured file
374
+ */
375
+ const countAllTests = (captured) => {
376
+ let count = captured.rootTests.length;
377
+ for (const suite of captured.rootSuites) {
378
+ count += countTestsInSuite(suite);
379
+ }
380
+ return count;
381
+ };
382
+ /**
383
+ * Count tests in a suite recursively
384
+ */
385
+ const countTestsInSuite = (suite) => {
386
+ let count = suite.tests.length;
387
+ for (const child of suite.children) {
388
+ count += countTestsInSuite(child);
389
+ }
390
+ return count;
391
+ };
392
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * ModestBench Test Adapter Command
3
+ *
4
+ * Run existing test files as benchmarks by capturing test definitions and
5
+ * executing them through a lightweight benchmark runner.
6
+ */
7
+ import type { CliContext } from "../index.cjs";
8
+ import { type TestFramework } from "../../adapters/types.cjs";
9
+ /**
10
+ * Test command options
11
+ */
12
+ export interface TestOptions {
13
+ /** Bail on first failure */
14
+ bail?: boolean;
15
+ /** Working directory */
16
+ cwd?: string;
17
+ /** Test framework to use */
18
+ framework: TestFramework;
19
+ /** Number of iterations per test */
20
+ iterations?: number;
21
+ /** Output JSON */
22
+ json?: boolean;
23
+ /** Disable color */
24
+ noColor?: boolean;
25
+ /** Test file paths or patterns */
26
+ pattern?: string[];
27
+ /** Quiet mode */
28
+ quiet?: boolean;
29
+ /** Verbose output */
30
+ verbose?: boolean;
31
+ /** Warmup iterations */
32
+ warmup?: number;
33
+ }
34
+ /**
35
+ * Handle test command - run test files as benchmarks
36
+ */
37
+ export declare const handleTestCommand: (context: CliContext, options: TestOptions) => Promise<number>;
38
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAoB;AAK9C,OAAO,EAKL,KAAK,aAAa,EACnB,iCAAgC;AAyCjC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,SAAS,EAAE,aAAa,CAAC;IACzB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0BD;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,UAAU,EACnB,SAAS,WAAW,KACnB,OAAO,CAAC,MAAM,CAuMhB,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * ModestBench Test Adapter Command
3
+ *
4
+ * Run existing test files as benchmarks by capturing test definitions and
5
+ * executing them through a lightweight benchmark runner.
6
+ */
7
+ import type { CliContext } from "../index.js";
8
+ import { type TestFramework } from "../../adapters/types.js";
9
+ /**
10
+ * Test command options
11
+ */
12
+ export interface TestOptions {
13
+ /** Bail on first failure */
14
+ bail?: boolean;
15
+ /** Working directory */
16
+ cwd?: string;
17
+ /** Test framework to use */
18
+ framework: TestFramework;
19
+ /** Number of iterations per test */
20
+ iterations?: number;
21
+ /** Output JSON */
22
+ json?: boolean;
23
+ /** Disable color */
24
+ noColor?: boolean;
25
+ /** Test file paths or patterns */
26
+ pattern?: string[];
27
+ /** Quiet mode */
28
+ quiet?: boolean;
29
+ /** Verbose output */
30
+ verbose?: boolean;
31
+ /** Warmup iterations */
32
+ warmup?: number;
33
+ }
34
+ /**
35
+ * Handle test command - run test files as benchmarks
36
+ */
37
+ export declare const handleTestCommand: (context: CliContext, options: TestOptions) => Promise<number>;
38
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB;AAK9C,OAAO,EAKL,KAAK,aAAa,EACnB,gCAAgC;AAyCjC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,SAAS,EAAE,aAAa,CAAC;IACzB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0BD;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,UAAU,EACnB,SAAS,WAAW,KACnB,OAAO,CAAC,MAAM,CAuMhB,CAAC"}