summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2025-02-11 09:48:17 +0100
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2025-02-14 16:13:27 +0900
commitccbebe9979b53352a0a11f0f5dd00ec3abab3b5a (patch)
tree07452e390569a28ec6cf7900cd95e34cda26ca5b
parenta3c05f27c30c04c6ebf69a63b31c0fa5e1520ecd (diff)
[rubygems/rubygems] Let `:bundler` filter raise if not given major versions
Otherwise it doesn't work as expected and it may skip specs. https://github.com/rubygems/rubygems/commit/d6af077174
-rw-r--r--spec/bundler/support/filters.rb13
1 files changed, 10 insertions, 3 deletions
diff --git a/spec/bundler/support/filters.rb b/spec/bundler/support/filters.rb
index f52cb02588..663b7fa44b 100644
--- a/spec/bundler/support/filters.rb
+++ b/spec/bundler/support/filters.rb
@@ -1,11 +1,18 @@
# frozen_string_literal: true
class RequirementChecker < Proc
- def self.against(present)
+ def self.against(present, major_only: false)
+ present = present.split(".")[0] if major_only
provided = Gem::Version.new(present)
new do |required|
- !Gem::Requirement.new(required).satisfied_by?(provided)
+ requirement = Gem::Requirement.new(required)
+
+ if major_only && !requirement.requirements.map(&:last).all? {|version| version.segments.one? }
+ raise "this filter only supports major versions, but #{required} was given"
+ end
+
+ !requirement.satisfied_by?(provided)
end.tap do |checker|
checker.provided = provided
end
@@ -21,7 +28,7 @@ end
RSpec.configure do |config|
config.filter_run_excluding realworld: true
- config.filter_run_excluding bundler: RequirementChecker.against(Bundler::VERSION.split(".")[0])
+ config.filter_run_excluding bundler: RequirementChecker.against(Bundler::VERSION, major_only: true)
config.filter_run_excluding rubygems: RequirementChecker.against(Gem::VERSION)
config.filter_run_excluding ruby_repo: !ENV["GEM_COMMAND"].nil?
config.filter_run_excluding no_color_tty: Gem.win_platform? || !ENV["GITHUB_ACTION"].nil?