From 1eb028885bb73a3beb3573b3bdedbb4c571e2de8 Mon Sep 17 00:00:00 2001 From: danceratopz Date: Tue, 3 Feb 2026 16:47:37 +0100 Subject: [PATCH] fix(fixtures): stream fixture JSON writes to reduce peak memory. - Write merged fixture JSON entries directly to file instead of building the full output string in memory via `"".join(parts)`. - Avoids OOM during `merge_partial_fixture_files()` for large fixtures. --- .../src/execution_testing/fixtures/collector.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/testing/src/execution_testing/fixtures/collector.py b/packages/testing/src/execution_testing/fixtures/collector.py index 74bdb6b4717..925fe0be775 100644 --- a/packages/testing/src/execution_testing/fixtures/collector.py +++ b/packages/testing/src/execution_testing/fixtures/collector.py @@ -71,16 +71,15 @@ def merge_partial_fixture_files(output_dir: Path) -> None: # Write final JSON file sorted_keys = sorted(entries.keys()) - parts = ["{\n"] last_idx = len(sorted_keys) - 1 - for i, key in enumerate(sorted_keys): - key_json = json.dumps(key) - # Add indentation for nesting inside outer JSON object - value_indented = entries[key].replace("\n", "\n ") - parts.append(f" {key_json}: {value_indented}") - parts.append(",\n" if i < last_idx else "\n") - parts.append("}") - target_path.write_text("".join(parts)) + with open(target_path, "w") as f: + f.write("{\n") + for i, key in enumerate(sorted_keys): + key_json = json.dumps(key) + value_indented = entries[key].replace("\n", "\n ") + f.write(f" {key_json}: {value_indented}") + f.write(",\n" if i < last_idx else "\n") + f.write("}") # Clean up partial files for partial in partials: