From cc342be83bc14ff2e9e7d3ac38fc4e27380494ab Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 27 Jan 2026 23:41:28 -0500 Subject: [PATCH] Fix up dspec task for parallelization --- Rakefile.rb | 17 ++++++++++------- build_tests/build_tests.rb | 4 ++-- spec/spec_helper.rb | 4 ++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Rakefile.rb b/Rakefile.rb index 701b941..09d3e8c 100644 --- a/Rakefile.rb +++ b/Rakefile.rb @@ -29,13 +29,15 @@ task :spec do end task :spec => :build_tests task :spec do - original_stdout = $stdout - sio = StringIO.new - $stdout = sio - SimpleCov.collate Dir["coverage/.resultset.json", "coverage/bt*/.resultset.json"] - $stdout = original_stdout - sio.string.lines.each do |line| - $stdout.write(line) unless line =~ /Coverage report generated for/ + unless ENV["rscons_dist_specs"] + original_stdout = $stdout + sio = StringIO.new + $stdout = sio + SimpleCov.collate Dir["coverage/.resultset.json", "coverage/bt*/.resultset.json"] + $stdout = original_stdout + sio.string.lines.each do |line| + $stdout.write(line) unless line =~ /Coverage report generated for/ + end end end @@ -54,6 +56,7 @@ task :dspec, [:example_string] => :build_dist do |task, args| FileUtils.cp("dist/rscons", "test_run/rscons.rb") ENV["rscons_dist_specs"] = "1" Rake::Task["spec"].execute(args) + Rake::Task["build_tests"].execute(args) ENV.delete("rscons_dist_specs") FileUtils.rm_f(Dir.glob(".rscons-*")) end diff --git a/build_tests/build_tests.rb b/build_tests/build_tests.rb index ef1c193..63e4cd1 100644 --- a/build_tests/build_tests.rb +++ b/build_tests/build_tests.rb @@ -86,7 +86,7 @@ class Test def run_rscons(options = {}) args = Array(options[:args]) || [] if ENV["dist_specs"] - exe = "#{OWD}/test/rscons.rb" + exe = "#{OWD}/test_run/rscons.rb" else exe = "#{OWD}/bin/rscons" end @@ -248,7 +248,7 @@ def run_tests tests = @focused_tests.size > 0 ? @focused_tests : @tests queue = Queue.new threads = {} - n_procs = `nproc`.to_i + n_procs = `nproc`.to_i * 2 failure = false loop do break if threads.empty? && tests.empty? diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index fa7a941..654352e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,5 +1,5 @@ if ENV["rscons_dist_specs"] - require_relative "../test/rscons" + require_relative "../test_run/rscons" else require "simplecov" @@ -15,7 +15,7 @@ else else command_name "RSpec" end - add_filter "test/rscons.rb" + add_filter "test_run/rscons.rb" project_name "Rscons" merge_timeout 3600 formatter(MyFormatter)