Skip to content

Conversation

@S-H-GAMELINKS
Copy link
Contributor

The 3.3 testunit CI job was hanging for 6 hours and timing out.

Problem

test-unit 3.7.4 changed the TestSuite#run method signature

  • 3.7.3: run(result, run_context: nil, &block)
  • 3.7.4+: run(worker_context, &block)

test-queue's TestSuite subclass uses def run(*); super; end, which fails on 3.7.3 when test-unit internally calls run with 2 arguments:

ArgumentError: wrong number of arguments (given 2, expected 1)

The worker process crashes, but the master process keeps waiting indefinitely, causing the hang.

Reproduction

gem install test-unit -v 3.7.3
BUNDLE_GEMFILE=gemfiles/testunit.gemfile bundle exec testunit-queue ./test/examples/*_testunit.rb

gem install test-unit -v 3.7.5
BUNDLE_GEMFILE=gemfiles/testunit.gemfile bundle exec testunit-queue ./test/examples/*_testunit.rb

Solution

Pin test-unit to >= 3.7.4 in gemfiles/testunit.gemfile.

source 'https://rubygems.org'

gem 'test-unit'
gem 'test-unit', '>= 3.7.4'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a brief source code comment explaining the reason? For example:

Suggested change
gem 'test-unit', '>= 3.7.4'
# test-unit 3.7.4 changed `TestSuite#run` method signature.
# Earlier versions cause ArgumentError in test-queue's TestSuite subclass,
# crashing workers and causing the master process to hang indefinitely.
gem 'test-unit', '>= 3.7.4'

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your review.
I've added a comment explaining why the test-unit version was selected.

The 3.3 testunit CI job was hanging for 6 hours and timing out.

Problem:
test-unit 3.7.4 changed the TestSuite#run method signature:
- 3.7.3: run(result, run_context: nil, &block)
- 3.7.4+: run(worker_context, &block)

test-queue's TestSuite subclass uses `def run(*); super; end`, which
fails on 3.7.3 when test-unit internally calls run with 2 arguments:

  ArgumentError: wrong number of arguments (given 2, expected 1)

The worker process crashes, but the master process keeps waiting
indefinitely, causing the hang.

Reproduction:

Hangs (with test-unit 3.7.3):
  gem install test-unit -v 3.7.3
  BUNDLE_GEMFILE=gemfiles/testunit.gemfile bundle exec testunit-queue ./test/examples/*_testunit.rb

Works (with test-unit >= 3.7.4):
  gem install test-unit -v 3.7.5
  BUNDLE_GEMFILE=gemfiles/testunit.gemfile bundle exec testunit-queue ./test/examples/*_testunit.rb

Solution:
Pin test-unit to >= 3.7.4 in gemfiles/testunit.gemfile.
@koic koic merged commit 31b8469 into tmm1:master Jan 9, 2026
15 checks passed
@koic
Copy link
Collaborator

koic commented Jan 9, 2026

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants