From c4eaa5212e81d311ceee50011fcddb574a9c457e Mon Sep 17 00:00:00 2001 From: Hartley McGuire Date: Thu, 27 Mar 2025 10:28:00 -0400 Subject: [PATCH 1/2] Reapply "Dump JSON directly to file instead of buffering" This reverts commit 30e16eed40773b9f81074cb08fab3dfa8f322316. --- ruby/lib/minitest/queue/build_status_reporter.rb | 4 ++-- ruby/lib/minitest/queue/runner.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ruby/lib/minitest/queue/build_status_reporter.rb b/ruby/lib/minitest/queue/build_status_reporter.rb index ea59269f..d9344512 100644 --- a/ruby/lib/minitest/queue/build_status_reporter.rb +++ b/ruby/lib/minitest/queue/build_status_reporter.rb @@ -107,11 +107,11 @@ def progress end def write_failure_file(file) - File.write(file, error_reports.map(&:to_h).to_json) + JSON.dump(error_reports.map(&:to_h), File.open(file, 'w')) end def write_flaky_tests_file(file) - File.write(file, flaky_reports.to_json) + JSON.dump(flaky_reports, File.open(file, 'w')) end private diff --git a/ruby/lib/minitest/queue/runner.rb b/ruby/lib/minitest/queue/runner.rb index 31183a82..79c1a917 100644 --- a/ruby/lib/minitest/queue/runner.rb +++ b/ruby/lib/minitest/queue/runner.rb @@ -323,7 +323,7 @@ def display_warnings(build) warnings = build.pop_warnings.map do |type, attributes| attributes.merge(type: type) end.compact - File.write(queue_config.warnings_file, warnings.to_json) + JSON.dump(warnings, File.open(queue_config.warnings_file, 'w')) end def run_tests_in_fork(queue) From 80050a346e1f570868d26fa204ff485afb67900f Mon Sep 17 00:00:00 2001 From: Hartley McGuire Date: Thu, 27 Mar 2025 11:06:51 -0400 Subject: [PATCH 2/2] Use block so Files are closed after writing This fixes test errors where the file had no content. --- ruby/lib/minitest/queue/build_status_reporter.rb | 8 ++++++-- ruby/lib/minitest/queue/runner.rb | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ruby/lib/minitest/queue/build_status_reporter.rb b/ruby/lib/minitest/queue/build_status_reporter.rb index d9344512..39d57383 100644 --- a/ruby/lib/minitest/queue/build_status_reporter.rb +++ b/ruby/lib/minitest/queue/build_status_reporter.rb @@ -107,11 +107,15 @@ def progress end def write_failure_file(file) - JSON.dump(error_reports.map(&:to_h), File.open(file, 'w')) + File.open(file, 'w') do |f| + JSON.dump(error_reports.map(&:to_h), f) + end end def write_flaky_tests_file(file) - JSON.dump(flaky_reports, File.open(file, 'w')) + File.open(file, 'w') do |f| + JSON.dump(flaky_reports, f) + end end private diff --git a/ruby/lib/minitest/queue/runner.rb b/ruby/lib/minitest/queue/runner.rb index 79c1a917..f76c5888 100644 --- a/ruby/lib/minitest/queue/runner.rb +++ b/ruby/lib/minitest/queue/runner.rb @@ -323,7 +323,9 @@ def display_warnings(build) warnings = build.pop_warnings.map do |type, attributes| attributes.merge(type: type) end.compact - JSON.dump(warnings, File.open(queue_config.warnings_file, 'w')) + File.open(queue_config.warnings_file, 'w') do |f| + JSON.dump(warnings, f) + end end def run_tests_in_fork(queue)