Skip to content

CI broken on all branches: simplecov 1.0.0 removed SimpleCov.running used by bin/rspec-queue #842

Description

@Niraj22

Summary

Every CI run since July 12, 2026 fails with the same crash, regardless of the change under test. The tests themselves pass — the failure is in bin/rspec-queue's coverage cleanup, triggered by the simplecov 1.0.0 release.

Impact — failing PRs

PR Run Result
#840 test / 3.4 / rails-8.0 all 4 workers 0 failures, runner exits 1; remaining matrix cells cancelled by fail-fast
#841 test / 4.0 / rails-8.0 same NoMethodError, whole test matrix red

main is not yet red only because it hasn't run since July 11 — its next scheduled run will fail the same way.

The crash

bin/rspec-queue:30:in 'RubyLLMRSpecQueueRunner#cleanup_worker': undefined method 'running' for module SimpleCov (NoMethodError)

    return unless defined?(SimpleCov) && SimpleCov.running
                                                  ^^^^^^^^

bin/rspec-queue (introduced in 33da5f8, Mar 2026) calls SimpleCov.running in three places: after_fork (per-worker command_name), cleanup_worker (per-worker SimpleCov.result), and the final format! guard.

The change that broke it

  • simplecov 1.0.0 was released 2026-07-12 09:30 UTC (changelog). The 1.0 internals rewrite dropped the SimpleCov.running accessor that existed in 0.22.x. It was undocumented/internal API, so its removal isn't in the breaking-changes list — but the wrapper depends on it.
  • simplecov-cobertura 4.0.0 (requires simplecov ~> 1.0) shipped alongside, so the cobertura/codecov path moves to the new major at the same time.

Why it hit without any change in this repo

The appraisal lockfiles (gemfiles/*.gemfile.lock) are gitignored, so CI resolves gems fresh on every run. The Gemfile constraint is gem 'simplecov', '>= 0.21', which now resolves to 1.0.0.

Timeline: last green run Jul 11 06:30 UTC (scheduled, main) → simplecov 1.0.0 released Jul 12 09:30 UTC → first red run Jul 13 11:42 UTC (#840), reproduced Jul 13 13:16 UTC (#841).

Suggested fix

Short term: pin gem 'simplecov', '>= 0.21', '< 1.0' — restores exactly the resolution CI ran green with through July 11. One line, unblocks all open PRs.

Longer term: migrate to simplecov 1.0 properly. Its new ParallelAdapters interface and native parallel-results collation cover what bin/rspec-queue currently hand-rolls (per-worker command_name + manual SimpleCov.result merging), and SimpleCov.formatter false + SimpleCov.collate is the intended pattern for multi-worker CI — so most of the wrapper's coverage logic can likely be deleted rather than adapted.

Happy to open the pin PR.

cc @crmne

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions