diff options
| author | Chris Hasiński <krzysztof.hasinski@gmail.com> | 2026-01-19 18:35:52 +0100 |
|---|---|---|
| committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2026-02-12 18:10:02 +0900 |
| commit | b698c35590671e2b6f5920ca01c83ec4ebea610b (patch) | |
| tree | fa7f80b70aa4815fb6541cc986e505e007352900 /test | |
| parent | d57b75297391af5b5d4f279eeeec084df37e9618 (diff) | |
Fix bundled gems warning for all subfeatures of hyphenated gems
PR #15822 fixed the warning for direct hyphenated gem requires like
`benchmark/ips` → `benchmark-ips`. However, hyphenated gems often
provide multiple files under their namespace.
For example, `benchmark-ips` provides:
- benchmark/ips.rb
- benchmark/timing.rb
- benchmark/compare.rb
When requiring `benchmark/timing`, the previous fix only checked for
`benchmark-timing` gem (doesn't exist), not `benchmark-ips` which
actually provides the file.
This fix checks if ANY gem matching `{prefix}-*` is in the bundle
specs, which covers all subfeatures provided by hyphenated gems.
Reported in https://github.com/ruby/ruby/pull/15822#issuecomment-123456
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_bundled_gems.rb | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/test/test_bundled_gems.rb b/test/test_bundled_gems.rb index 6e25df9b01..e44c8348ad 100644 --- a/test/test_bundled_gems.rb +++ b/test/test_bundled_gems.rb @@ -39,6 +39,14 @@ class TestBundlerGem < Gem::TestCase assert_nil Gem::BUNDLED_GEMS.warning?("benchmark/ips", specs: {"benchmark-ips" => true}) end + def test_no_warning_for_subfeatures_of_hyphenated_gem + # When benchmark-ips gem is in specs, requiring any "benchmark/*" subfeature + # should not warn, since hyphenated gems may provide multiple files + # (e.g., benchmark-ips provides benchmark/ips, benchmark/timing, benchmark/compare) + assert_nil Gem::BUNDLED_GEMS.warning?("benchmark/timing", specs: {"benchmark-ips" => true}) + assert_nil Gem::BUNDLED_GEMS.warning?("benchmark/compare", specs: {"benchmark-ips" => true}) + end + def test_warning_without_hyphenated_gem # When benchmark-ips is NOT in specs, requiring "benchmark/ips" should warn warning = Gem::BUNDLED_GEMS.warning?("benchmark/ips", specs: {}) |
