Unified · Split
| @@ -4,7 +4,7 @@ import os from "node:os"; · 3 unmodified lines | ||
| 4 | 4 | import path from "node:path"; |
| 5 | 5 | |
| 6 | 6 | import { BrowserWindow, contentTracing, type WebContents } from "electron"; |
| 7 | −import { shouldRunTerminalPerfInteractions } from "./perfConfig"; | |
| 7 | +import { resolveBenchmarkFollowUpPassCount, shouldRunTerminalPerfInteractions } from "./perfConfig"; | |
| 8 | 8 | |
| 9 | 9 | const PERF_AUTOMATION_ENABLED = process.env.T3CODE_DESKTOP_PERF_AUTOMATION === "1"; |
| 10 | 10 | const PERF_TRACE_OUT_PATH = process.env.T3CODE_DESKTOP_PERF_TRACE_OUT?.trim() ?? ""; |
| @@ -14,16 +14,11 @@ const RUN_TERMINAL_INTERACTIONS = shouldRunTerminalPerfInteractions({ · 3 unmodified lines | ||
| 14 | 14 | T3CODE_DESKTOP_PERF_RUN_TERMINAL: process.env.T3CODE_DESKTOP_PERF_RUN_TERMINAL, |
| 15 | 15 | CI: process.env.CI, |
| 16 | 16 | }); |
| 17 | −const BENCHMARK_FOLLOW_UP_PASS_COUNT = (() => { | |
| 18 | − const raw = process.env.T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES?.trim(); | |
| 19 | − if (raw && raw.length > 0) { | |
| 20 | − const parsed = Number.parseInt(raw, 10); | |
| 21 | − if (Number.isFinite(parsed) && parsed >= 0) { | |
| 22 | − return parsed; | |
| 23 | − } | |
| 24 | − } | |
| 25 | − return process.env.CI === "true" ? 0 : 1; | |
| 26 | −})(); | |
| 17 | +const BENCHMARK_FOLLOW_UP_PASS_COUNT = resolveBenchmarkFollowUpPassCount({ | |
| 18 | + T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES: | |
| 19 | + process.env.T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES, | |
| 20 | + CI: process.env.CI, | |
| 21 | +}); | |
| 27 | 22 | |
| 28 | 23 | function delay(ms: number): Promise<void> { |
| 29 | 24 | return new Promise((resolve) => setTimeout(resolve, ms)); |
| @@ -1,6 +1,6 @@ | ||
| 1 | 1 | import { describe, expect, it } from "vitest"; |
| 2 | 2 | |
| 3 | −import { shouldRunTerminalPerfInteractions } from "./perfConfig"; | |
| 3 | +import { resolveBenchmarkFollowUpPassCount, shouldRunTerminalPerfInteractions } from "./perfConfig"; | |
| 4 | 4 | |
| 5 | 5 | describe("shouldRunTerminalPerfInteractions", () => { |
| 6 | 6 | it("defaults to enabled outside CI when env is unset", () => { |
| @@ -130,3 +130,45 @@ describe("shouldRunTerminalPerfInteractions", () => { · 123 unmodified lines | ||
| 130 | 130 | ).toBe(true); |
| 131 | 131 | }); |
| 132 | 132 | }); |
| 133 | + | |
| 134 | +describe("resolveBenchmarkFollowUpPassCount", () => { | |
| 135 | + it("defaults to 1 outside CI", () => { | |
| 136 | + expect(resolveBenchmarkFollowUpPassCount({ CI: "false" })).toBe(1); | |
| 137 | + expect(resolveBenchmarkFollowUpPassCount({ CI: "0" })).toBe(1); | |
| 138 | + }); | |
| 139 | + | |
| 140 | + it("defaults to 0 in CI", () => { | |
| 141 | + expect(resolveBenchmarkFollowUpPassCount({ CI: "true" })).toBe(0); | |
| 142 | + expect(resolveBenchmarkFollowUpPassCount({ CI: "on" })).toBe(0); | |
| 143 | + }); | |
| 144 | + | |
| 145 | + it("accepts explicit non-negative integer overrides", () => { | |
| 146 | + expect( | |
| 147 | + resolveBenchmarkFollowUpPassCount({ | |
| 148 | + T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES: "2", | |
| 149 | + CI: "true", | |
| 150 | + }), | |
| 151 | + ).toBe(2); | |
| 152 | + expect( | |
| 153 | + resolveBenchmarkFollowUpPassCount({ | |
| 154 | + T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES: " 0 ", | |
| 155 | + CI: "false", | |
| 156 | + }), | |
| 157 | + ).toBe(0); | |
| 158 | + }); | |
| 159 | + | |
| 160 | + it("ignores malformed overrides and falls back to CI default", () => { | |
| 161 | + expect( | |
| 162 | + resolveBenchmarkFollowUpPassCount({ | |
| 163 | + T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES: "1abc", | |
| 164 | + CI: "true", | |
| 165 | + }), | |
| 166 | + ).toBe(0); | |
| 167 | + expect( | |
| 168 | + resolveBenchmarkFollowUpPassCount({ | |
| 169 | + T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES: "-1", | |
| 170 | + CI: "false", | |
| 171 | + }), | |
| 172 | + ).toBe(1); | |
| 173 | + }); | |
| 174 | +}); | |
| @@ -3,6 +3,11 @@ type PerfToggleEnv = { · 2 unmodified lines | ||
| 3 | 3 | CI?: string | undefined; |
| 4 | 4 | }; |
| 5 | 5 | |
| 6 | +type PerfBenchmarkEnv = { | |
| 7 | + T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES?: string | undefined; | |
| 8 | + CI?: string | undefined; | |
| 9 | +}; | |
| 10 | + | |
| 6 | 11 | const TRUE_VALUES = new Set(["1", "true", "yes", "on"]); |
| 7 | 12 | const FALSE_VALUES = new Set(["0", "false", "no", "off"]); |
| 8 | 13 | |
| @@ -34,3 +39,11 @@ export function shouldRunTerminalPerfInteractions(env: PerfToggleEnv): boolean { · 25 unmodified lines | ||
| 34 | 39 | if (toggleOverride !== null) return toggleOverride; |
| 35 | 40 | return !isCiEnvironment(env.CI); |
| 36 | 41 | } |
| 42 | + | |
| 43 | +export function resolveBenchmarkFollowUpPassCount(env: PerfBenchmarkEnv): number { | |
| 44 | + const raw = env.T3CODE_DESKTOP_PERF_BENCHMARK_FOLLOW_UP_PASSES?.trim(); | |
| 45 | + if (raw && /^\d+$/.test(raw)) { | |
| 46 | + return Number.parseInt(raw, 10); | |
| 47 | + } | |
| 48 | + return isCiEnvironment(env.CI) ? 0 : 1; | |
| 49 | +} | |