From 7d19f1e9e8af301a8ec0b9452e997a05e6167f87 Mon Sep 17 00:00:00 2001 From: Guillaume Malette Date: Wed, 27 Aug 2025 15:02:34 -0400 Subject: [PATCH] Show minitest-queue exiting with 0 when all tests fail --- ruby/test/fixtures/test/failing_setup_test.rb | 14 +++++++++++ ruby/test/integration/minitest_redis_test.rb | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 ruby/test/fixtures/test/failing_setup_test.rb diff --git a/ruby/test/fixtures/test/failing_setup_test.rb b/ruby/test/fixtures/test/failing_setup_test.rb new file mode 100644 index 00000000..e9937d06 --- /dev/null +++ b/ruby/test/fixtures/test/failing_setup_test.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true +require 'test_helper' + +class FailingTest < Minitest::Test + def setup + raise "Setup failed" + end + + 100.times do |i| + define_method("test_failing_#{i}") do + assert true + end + end +end diff --git a/ruby/test/integration/minitest_redis_test.rb b/ruby/test/integration/minitest_redis_test.rb index 59840870..c5648849 100644 --- a/ruby/test/integration/minitest_redis_test.rb +++ b/ruby/test/integration/minitest_redis_test.rb @@ -253,6 +253,29 @@ def test_max_test_failed assert_equal expected.strip, normalize(out.lines.last.strip) end + def test_max_test_failed_with_setup_failures + out, err = capture_subprocess_io do + system( + @exe, 'run', + '--queue', @redis_url, + '--seed', 'foobar', + '--build', '1', + '--worker', '1', + '--timeout', '1', + '--heartbeat', '1', + '--max-requeues', '3', + '--requeue-tolerance', '0.12', + "--max-consecutive-failures", "3", + '-Itest', + 'test/failing_setup_test.rb', + chdir: 'test/fixtures/', + ) + end + + refute_predicate $?, :success? + assert_equal 1, $?.exitstatus + end + def test_all_workers_died # Run the reporter out, err = capture_subprocess_io do