# Prometheus complete test parsing CodeMirror gives editor-state creation a 20 ms synchronous parsing budget. The shared `createEditorState()` test helper can therefore return an incomplete syntax tree when the process is descheduled. The completion and vector-matching tests immediately inspect that tree. ## Scope and behavior `complete-test-parsing.patch` changes only `module/codemirror-promql/src/test/utils-test.ts` inside `web/ui`. It completes the small test expression with `ensureSyntaxTree(..., Infinity)` and publishes the completed parse through an empty transaction so `syntaxTree(state)` sees it. Failure to obtain a tree raises an error. The original assertions remain enabled, including `autocomplete topk params 2` and `foo * on(test,blub) bar`. The unlimited budget applies to the test helper; production editor parsing budgets are unchanged. ## Reproduction and focused checks Use a disposable Prometheus 3.14.0 checkout. The patch root is `web/ui`, matching the Nix assets derivation. From this directory: ```sh patch --fuzz=0 -d /path/to/prometheus/web/ui -p1 < complete-test-parsing.patch cd /path/to/prometheus/web/ui pnpm install --frozen-lockfile pnpm --filter @prometheus-io/lezer-promql build pnpm --filter @prometheus-io/codemirror-promql test ``` To force the scheduling condition, temporarily append this clock to `module/codemirror-promql/setupJest.cjs` in the disposable checkout: ```js let parseClock = 0; Date.now = () => (parseClock += 25); ``` Each clock read crosses the editor's initial parsing budget. Against the original helper, the hybrid and vector suites have 186 failures, including both locally excluded cases. With the patch, all 386 CodeMirror tests pass under that same clock. Remove the injected clock before normal builds. ## Upstream status This is a standalone test-helper patch for Prometheus 3.14.0. No upstream submission was made during this work. Recheck the helper when updating Prometheus or CodeMirror, including how an ensured parse becomes visible through the editor state. ## Local NixOS integration and build results [`../default.nix`](../default.nix) loads `default.nix`, which patches the separate assets derivation. It updates both `passthru.assets` and the main Prometheus build's reference to those assets. From the repository root: ```sh nix build --no-link -L .#nixosConfigurations.jeeves.pkgs.prometheus.assets ``` The full x86-64-v3 assets build passed with the normal clock, including the CodeMirror and UI suites. Host-flake evaluation confirmed that the main Prometheus derivation refers to these patched assets. The Go server package was not rebuilt for this test-helper change.