build: update dev dependencies and migrate to simplecov 1.0 - #172
Conversation
Gemfile.lock is not tracked, so the routine bumps (Rails 8.1.3.1, RuboCop 1.88.2, YARD 0.9.45, and others) appear only in the resolved lockfile. simplecov 1.0 deprecates `add_filter` and the `# :nocov:` token, both of which this repo uses. The spec helper now calls `skip`, and the two unreachable regions in the ActiveModel adapter use `# simplecov:disable` and `# simplecov:enable`. The bump also unblocks simplecov-cobertura 4.0, which requires simplecov ~> 1.0. rbs is held at 4.0.x. Version 4.1 retypes the block return of `Array#to_h` from the tuple `[K, V]` to the `Hash::_Pair[K, V]` interface. Steep 2.0 cannot infer an array literal as a tuple against an interface hint, so `CFI::AttributeSet#to_h` stops type-checking. See soutaro/steep#2253. Three workarounds were rejected. A `#:` type assertion makes `steep stats` report the file as an error, which trips the fail-closed coverage gate. `map { ... }.to_h` and `each_with_object` both type-check. RuboCop reports `Style/MapToHash` and `Style/ReduceToHash` for them, and the fix each cop offers is the block form Steep rejects.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThe pull request updates RBS and SimpleCov dependency constraints. It migrates coverage annotations to SimpleCov directives and changes the SimpleCov filter API call from ChangesTooling compatibility updates
Estimated code review effort: 2 (Simple) | ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #172 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 36 36
Lines 1416 1416
=========================================
Hits 1416 1416 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Description
Updates every outdated development dependency.
Gemfile.lockis not tracked, so the routine bumps (Rails 8.1.3.1, RuboCop 1.88.2, YARD 0.9.45, parser 3.3.12.0, json 2.21.2, rspec-mocks 3.13.8, and others) appear only in the resolved lockfile. Three files change:~> 0.22to~> 1.0. This unblocks simplecov-cobertura 4.0, which requires simplecov~> 1.0.spec/spec_helper.rb:add_filtertoskip. simplecov 1.0 deprecatesadd_filter. The matcher grammar is identical, so coverage is unchanged.lib/sec_id/active_model.rb:# :nocov:to# simplecov:disableand# simplecov:enable. simplecov 1.0 deprecates the:nocov:token and warns once per file at load time. Comments only, no behavior change.Why rbs stays on 4.0.x
rbs 4.1 retypes the block return of
Array#to_hfrom the tuple[K, V]to theHash::_Pair[K, V]interface. Steep 2.0 cannot infer an array literal as a tuple against an interface hint, soCFI::AttributeSet#to_hstops type-checking. This is tracked upstream in soutaro/steep#2253, which is open. The Gemfile pin carries the same explanation and names the condition for removing it.Three workarounds were rejected:
#:type assertion type-checks, but makessteep statsreport the file as an error. That trips the fail-closedrake steep:coveragegate.map { ... }.to_htype-checks, but RuboCop reportsStyle/MapToHash.each_with_objecttype-checks, but RuboCop reportsStyle/ReduceToHash.The fix each cop offers is the block form Steep rejects, so
lib/sec_id/cfi/attribute_set.rbis left untouched.Still outstanding
diff-lcs2.0.0 is held at 1.6.2 by rspec-expectations, which requiresdiff-lcs >= 1.2.0, < 2.0. Nothing to do here until rspec relaxes it.Type of Change
Checklist
bundle exec rspec)bundle exec rubocop)[Unreleased]) — skipped. Every change is dev and test tooling, invisible to gem consumers. The onelib/edit is comment text.Validation
Run locally against the updated bundle:
rake(RuboCop,rbs validate, 2397 examples) greenrake steepreports no type errorrake steep:coveragereports 119 untyped calls, exactly at the pinned baselinerake rbs:testgreen (2392 examples)rake yard:statsreports100.00% documentedCOVERAGE=1 bundle exec rspecreports 100% line coverage (1416 / 1416) with no simplecov deprecation warningsCI=1 COVERAGE=1 bundle exec rspecwritescoverage/coverage.xmlthrough simplecov-cobertura 4.0.0Summary by CodeRabbit