Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning,
and yes, platform and engine support are part of the public API.
Please file a bug if you notice a violation of semantic versioning.
Unreleased
Added
Changed
Deprecated
Removed
Fixed
Security
2.0.2 - 2026-06-09
- TAG: v2.0.2
- COVERAGE: 100.00% – 247/247 lines in 11 files
- BRANCH COVERAGE: 100.00% – 68/68 branches in 11 files
- 16.44% documented
Changed
- Retemplated development tooling for
kettle-dev2.2.3.
Fixed
- Updated generated project metadata links to use the migrated
kettle-dev
GitHub organization. - Restored
docs/CNAMEso the generated documentation site keeps its custom domain.
2.0.1 - 2026-06-02
- TAG: v2.0.1
- COVERAGE: 100.00% – 247/247 lines in 11 files
- BRANCH COVERAGE: 100.00% – 68/68 branches in 11 files
- 16.44% documented
Fixed
- Added
turbo_tests2:setupandturbo_tests2:cleanuprake hook aliases so
coverage setup and collation work when runners use either the legacy
turbo_testsnamespace or the currentturbo_tests2namespace. - Suppressed SimpleCov report formatter output inside
turbo_tests2worker
processes so only the parent collation process publishes coverage reports.
2.0.0 - 2026-06-02
- TAG: v2.0.0
- COVERAGE: 100.00% – 244/244 lines in 11 files
- BRANCH COVERAGE: 100.00% – 70/70 branches in 11 files
- 16.67% documented
Changed
- Raised direct runtime, development, style, and documentation dependency floors
to their latest released compatible versions. - Raised the minimum supported Ruby version from 2.7 to 3.2.
Fixed
- Restored full CI coverage for the self-tested
coveragerake task opener
branches after re-templating.
1.1.3 - 2026-05-24
- TAG: v1.1.3
- COVERAGE: 96.72% – 236/244 lines in 11 files
- BRANCH COVERAGE: 85.71% – 60/70 branches in 11 files
- 16.67% documented
Fixed
- Removed duplicate-load warnings in the spec bootstrap while preserving coverage
tracking for the library under test. - Covered Ruby 4.0.5 / SimpleCov branch paths that were causing
bin/raketo
fail the configured coverage gate. - Stabilized self-test coverage for rake task files so randomized spec order no
longer changes the final branch coverage result. - Removed the duplicate RuboCop Gradual run from the style workflow and fixed
the generated style appraisal Gemfile for Ruby 4 extracted stdlibs. - Removed the duplicate current workflow job caused by stale matrix axes.
-
Marked generated workflow files as template-owned to prevent stale YAML keys
from surviving future template runs. - Isolated the spec-helper rake-task coverage exerciser under
tmp/so
turbo_tests2 workers cannot delete each other’s real coverage artifacts before
parent-process collation. -
turbo_tests:cleanupnow publishes merged worker JSON coverage back to the
canonicalcoverage/coverage.jsonpath after collating worker resultsets, so
CI uploaders and release tooling can continue to read standard coverage paths. - Parsed
K_SOUP_COV_OPEN_BINwith shellwords before opening the HTML report so
opener commands with arguments report unavailable executables consistently
across Ruby engines.
1.1.2 - 2026-05-23
- TAG: v1.1.2
- COVERAGE: 96.06% – 195/203 lines in 11 files
- BRANCH COVERAGE: 80.00% – 40/50 branches in 11 files
- 18.46% documented
Added
-
CLEAN_RESULTSET/K_SOUP_COV_CLEAN_RESULTSET: deletescoverage/.resultset.json
before SimpleCov starts to prevent stale entries from prior runs (e.g. after a refactor
that shifts line/branch IDs) from producing phantom uncovered branches. Defaults to
falseon CI (each job already starts clean) andtruelocally (where developers
re-run tests frequently). Override viaK_SOUP_COV_CLEAN_RESULTSET=true/falseor by
setting the constant directly in Ruby.Kettle::Soup::Cover.clean_resultset!is also
exposed as a public method for callers who want to trigger cleanup explicitly.
Note: setK_SOUP_COV_CLEAN_RESULTSET=falseinside.simplecov_spawn.rbso
spawned subprocesses do not wipe the resultset being accumulated by the main process. - Added
turbo_tests:setupandturbo_tests:cleanuprake hooks for
turbo_tests2coverage collection. - Added
K_SOUP_COV_TURBO_TESTSandK_SOUP_COV_TURBO_TESTS_DIRsupport so
parallel workers write coverage under per-worker directories and the cleanup
hook can collate the resultsets.
Changed
- Updated documentation on hostile takeover of RubyGems
- https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo
Fixed
- Deferred hard coverage minimum enforcement for
turbo_tests2workers to the
final collated coverage report, so individual workers with partial coverage do
not fail before merged coverage is available.
1.1.1 - 2025-12-28
- TAG: v1.1.1
- COVERAGE: 93.62% – 132/141 lines in 10 files
- BRANCH COVERAGE: 50.00% – 15/30 branches in 10 files
- 15.56% documented
Added
- Added regression tests for
MIN_COVERAGE_HARDbehavior
Fixed
-
BUGFIX:
K_SOUP_COV_MIN_HARD=falsenow correctly disables minimum coverage enforcement in CI- Previously, the condition
IS_CI || MIN_COVERAGE_HARDmeant minimum coverage was always enforced in CI - Now
MIN_COVERAGE_HARDtakes precedence: if explicitly set tofalse, minimum coverage is not enforced - The default behavior is unchanged: in CI without explicit setting, minimum coverage is still enforced
- Previously, the condition
1.1.0 - 2025-12-28
- TAG: v1.1.0
- COVERAGE: 93.62% – 132/141 lines in 10 files
- BRANCH COVERAGE: 53.33% – 16/30 branches in 10 files
- 15.56% documented
Added
- When
ENV["MAX_ROWS"] == "0", explicitly, skip simplecov-console TTY output. - Script
exe/kettle-soup-covergenerates coverage report- defaults to reading
$K_SOUP_COV_DIR/coverage.json - prints a summarized report
- accepts
-p/--pathor a positional path to coverage.json - requires the
jsonformatter be configured in$K_SOUP_COV_FORMATTERS(or an explicit JSON path as above).
- defaults to reading
Changed
-
Coverage merging is now enabled by default -
USE_MERGINGdefaults totrue- Essential for projects that split tests into multiple rake tasks
- Set
K_SOUP_COV_USE_MERGING=falseto disable - Aggregate coverage from multiple test runs (e.g., FFI specs, integration specs, unit specs) when uniquely named:
-
# Matrix checks will run in between FFI and MRI desc("Run Backend Matrix Specs") RSpec::Core::RakeTask.new(:backend_matrix_specs) do |t| t.pattern = "./spec_matrix/**/*_spec.rb" end desc("Set SimpleCov command name for backend matrix specs") task(:set_matrix_command_name) do ENV["K_SOUP_COV_COMMAND_NAME"] = "Backend Matrix Specs" end Rake::Task[:backend_matrix_specs].enhance([:set_matrix_command_name])
-
Merge timeout -
MERGE_TIMEOUTdefaults to 3600 seconds (1 hour)- Sufficient for most test suites to complete all split tasks
- Set
K_SOUP_COV_MERGE_TIMEOUTto override
1.0.10 - 2025-07-15
- COVERAGE: 93.43% – 128/137 lines in 10 files
- BRANCH COVERAGE: 50.00% – 16/32 branches in 10 files
- 11.11% documented
Added
- Add GitHub Pages site to badge info table
- YARD config, GFM compatible with relative file links
- Documentation site on GitHub Pages
- Auto-assign issues in the GitHub issue tracker
Changed
- Updated
spec.homepage_uriin gemspec to GitHub Pages YARD documentation site - Updated contact email in gemspec to
floss@galtzo.com - Upgraded runtime dependency minimums:
- simplecov-cobertura v3.0.0
- simplecov-html v0.13.1
- simplecov-rcov v0.3.7
- simplecov-console v0.9.3
- version_gem v1.1.8
1.0.9 - 2025-05-20
- COVERAGE: 93.43% – 128/137 lines in 10 files
- BRANCH COVERAGE: 50.00% – 16/32 branches in 10 files
- 11.11% documented
Added
- YARD config, GFM compatible with relative file links
- Documentation site on GitHub Pages
Changed
- Updated
spec.homepage_uriin gemspec to GitHub Pages YARD documentation site
1.0.8 - 2025-05-20
- COVERAGE: 93.43% – 128/137 lines in 10 files
- BRANCH COVERAGE: 50.00% – 16/32 branches in 10 files
- 11.11% documented
Added
- Link to discussions on GitHub
Changed
- Fixed
spec.homepageandspec.source_code_uriin gemspec
1.0.7 - 2025-05-20
- COVERAGE: 93.43% – 128/137 lines in 10 files
- BRANCH COVERAGE: 50.00% – 16/32 branches in 10 files
- 11.11% documented
Added
- Document usage with minitest
- Document usage with https://github.com/irongut/CodeCoverageSummary
- Document usage with https://github.com/marocchino/sticky-pull-request-comment
- More documentation improvements
- Link to Discord
Changed
- Gem build: Don’t check for cert if SKIP_GEM_SIGNING is set
- Allows linux packaging systems to build gem without signing via rubygems
- Update homepage in gemspec
- Improved loading of version.rb in gemspec
1.0.6 - 2025-05-04
- COVERAGE: 93.43% – 128/137 lines in 10 files
- BRANCH COVERAGE: 50.00% – 16/32 branches in 10 files
- 11.11% documented
Added
- Support for linux, and other OSes, in
coveragerake task- previously was macOS only (would raise error on other OSes)
- ✨
Kettle::Soup::Cover::OPEN_BIN- Set
export K_SOUP_COV_OPEN_BIN=opento use macOS’opencommand incoveragetask - Set
export K_SOUP_COV_OPEN_BIN=xdg-opento use Linux’xdg-opencommand incoveragetask - Set
export K_SOUP_COV_OPEN_BIN=to just print the path to the HTML coverage report incoveragetask
- Set
- Test coverage increased from 55 => 93 for lines
- Test coverage increased from 25 => 50 for branches
Changed
- Refactored internals in ways that should not affect public APIs
- allows much greater test coverage
- report a bug if anything breaks!
- Going forward all releases will be signed by my key that expires 2045-04-29
Fixed
- require hooks such that both work equally well:
require "kettle/soup/cover"require "kettle-soup-cover"
- Allow unsigned gem builds (for linux distros)
- In the ENV set
SKIP_GEM_SIGNINGto any value
- In the ENV set
1.0.5 - 2025-04-03
Added
- Documentation
- Support for malformed
K_SOUP_COV_FORMATTERS(extra spaces) - Code coverage tools QLTY, and CodeCov.io
- Added Ruby 3.3, 3.4 to CI
Changed
- Update to Contributor Covenant 2.1
- Allow unsigned gem builds (for linux distros)
- Checksums are now created by
stone_checksumsgem
Fixed
- Incorrect documentation of ENV variables that control gem behavior
- Prefer
Kernel.load>loadin gemspec- https://github.com/simplecov-ruby/simplecov/issues/557#issuecomment-2630782358
1.0.4 - 2024-06-11
Added
- Documentation
Changed
-
version_gemrequirement to 1.0.4
1.0.3 - 2024-05-23
Added
- Documentation
- Mirror repo on GitHub: https://github.com/kettle-rb/kettle-soup-cover
- More tests
Fixed
- Incorrect URLs for homepage, etc
1.0.2 - 2023-10-19
Fixed
- Include new
coveragerake task in the built gem- Goddamnit
- Try to get checksum for SHA-256 to match what is published on Rubygems.org
1.0.1 - 2023-10-19
Fixed
- Include new
coveragerake task in the built gem
1.0.0 - 2023-10-19
Added
- ✨
Regexp.escapetheFILTER_DIRSto allow for paths to be excluded from coverage- paths must always start at the root of the project, but no leading or trailing slash
- ✨ Rake task
coveragewill run spec suite, and open results in a browser. - ✨
Kettle::Soup::Cover::PREFIXallows configuration of a custom ENV variable name prefix- Set
export K_SOUP_COV_DEBUG="K_SOUP_COV_"(default shown)
- Set
- ✨
Kettle::Soup::Cover::USE_MERGING- Set
export K_SOUP_COV_USE_MERGING=true
- Set
- ✨
Kettle::Soup::Cover::MERGE_TIMEOUT- Set
export K_SOUP_COV_MERGE_TIMEOUT=3600
- Set
- ✨
Kettle::Soup::Cover::DEBUG- similar toVERBOSE, only moreso!- Set
export K_SOUP_COV_DEBUG=true - NOTE: This gem actually has zero output statements.
- The utility of
DEBUGandVERBOSEbeing a part of this library is
to normalize handling of this common logical need in other libraries.
- The utility of
- Set
- ✨
Kettle::Soup::Cover.load_filtersKettle::Soup::Cover::Filters::GtLineFilterKettle::Soup::Cover::Filters::LtLineFilter
- More and better documentation
Changed
- This gem no longer does
require "simplecov"- Instead you can
require "simplecov" if Kettle::Soup::Cover::DO_COVwherever you deem fit
- Instead you can
Fixed
- All ENV vars now begin with a uniform prefix for this gem:
K_SOUP_COV_*
0.1.0 - 2023-10-17
- Initial release