• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

umbrellio / ci_helper / 29759522804
100%

Build:
DEFAULT BRANCH: master
Ran 20 Jul 2026 04:25PM UTC
Jobs 1
Files 11
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

20 Jul 2026 04:25PM UTC coverage: 100.0%. Remained the same
29759522804

push

github

web-flow
Add timing-aware spec splitting to RunSpecs (#29)

* Add timing-aware spec splitting to RunSpecs

* Record spec timings via an added formatter instead of --format

Registering the recorder with a command-line --format made RSpec drop the
formatters the consuming suite configures via .rspec (in RSpec 3, any CLI
--format replaces the configured list), silently removing documentation,
custom, or JUnit formatters and their CI artifacts. Post-processing the
report in the command also ran only on success, so a run with any failing
example left timings_out as RSpec's nested report rather than the flat map.

Ship an RSpecTimingsFormatter and register it via --require, so it is added
on top of the suite's own formatters, and write the flat map from its
dump_summary hook, which RSpec reaches even when examples fail.

* Record spec timings from an after(:suite) hook, not a formatter

An added formatter still occupies rspec's formatter list, and
Formatters::Loader only installs the default progress formatter when that
list is empty. So for the common suite with no explicit --format in
.rspec, enabling --timings-out suppressed the normal progress and failure
output entirely.

Collect timings from an after(:suite) hook (via RSpec.world.all_examples)
instead. It records after every example has finished, so it still captures
timings when examples fail, and it never touches the formatter list, so
rspec keeps both the suite's configured formatters and its default output.

* Record timings only for examples executed on this node

A node runs a subset of example ids, but rspec loads the whole file, so
RSpec.world.all_examples also returns examples filtered out on this node.
Those never ran and have a nil run_time, which to_f turned into 0.0, so
each node's map gained zero entries for other nodes' examples — and merging
the per-node maps could overwrite a real timing with 0.0.

Skip examples whose run_time is nil, keeping only those actually executed.

30 of 30 branches covered (100.0%)

Branch coverage included in aggregate %.

188 of 188 relevant lines covered (100.0%)

9.27 hits per line

Jobs
ID Job ID Ran Files Coverage
1 29759522804.1 20 Jul 2026 04:25PM UTC 11
100.0
GitHub Action Run
Source Files on build 29759522804
  • Tree
  • List 11
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • f4a24ad5 on github
  • Prev Build on master (#29412392558)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc