Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 4 additions & 10 deletions lib/rubygems/bundler_version_finder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,14 @@ def self.missing_version_message
def self.compatible?(spec)
return true unless spec.name == "bundler".freeze
return true unless bundler_version = self.bundler_version
if bundler_version.segments.first >= 2
spec.version == bundler_version
else # 1.x
spec.version.segments.first < 2
end

spec.version.segments.first == bundler_version.segments.first
end

def self.filter!(specs)
return unless bundler_version = self.bundler_version
if bundler_version.segments.first >= 2
specs.reject! { |spec| spec.version != bundler_version }
else # 1.x
specs.reject! { |spec| spec.version.segments.first >= 2}
end

specs.reject! { |spec| spec.version.segments.first != bundler_version.segments.first }
end

def self.bundle_update_bundler_version
Expand Down
15 changes: 8 additions & 7 deletions test/rubygems/test_gem_bundler_version_finder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -88,20 +88,21 @@ def test_compatible
bvf.stub(:bundler_version, v("2.1.1.1")) do
assert bvf.compatible?(util_spec("foo"))
assert bvf.compatible?(util_spec("bundler", "2.1.1.1"))
refute bvf.compatible?(util_spec("bundler", "2.1.1.a"))
assert bvf.compatible?(util_spec("bundler", "2.1.1.a"))
assert bvf.compatible?(util_spec("bundler", "2.999"))
refute bvf.compatible?(util_spec("bundler", "1.999"))
refute bvf.compatible?(util_spec("bundler", "2.999"))
refute bvf.compatible?(util_spec("bundler", "3.0.0"))
end
end

def test_filter
versions = %w[1 1.0 1.0.1.1 2.a 3 3.0]
versions = %w[1 1.0 1.0.1.1 2 2.a 2.0 2.1.1 3 3.a 3.0 3.1.1]
specs = versions.map { |v| util_spec("bundler", v) }

assert_equal %w[1 1.0 1.0.1.1 2.a 3 3.0], util_filter_specs(specs).map(&:version).map(&:to_s)
assert_equal %w[1 1.0 1.0.1.1 2 2.a 2.0 2.1.1 3 3.a 3.0 3.1.1], util_filter_specs(specs).map(&:version).map(&:to_s)

bvf.stub(:bundler_version, v("2.1.1.1")) do
assert_empty util_filter_specs(specs).map(&:version).map(&:to_s)
assert_equal %w[2 2.a 2.0 2.1.1], util_filter_specs(specs).map(&:version).map(&:to_s)
end
bvf.stub(:bundler_version, v("1.1.1.1")) do
assert_equal %w[1 1.0 1.0.1.1], util_filter_specs(specs).map(&:version).map(&:to_s)
Expand All @@ -110,10 +111,10 @@ def test_filter
assert_equal %w[1 1.0 1.0.1.1], util_filter_specs(specs).map(&:version).map(&:to_s)
end
bvf.stub(:bundler_version, v("2.a")) do
assert_equal %w[2.a], util_filter_specs(specs).map(&:version).map(&:to_s)
assert_equal %w[2 2.a 2.0 2.1.1], util_filter_specs(specs).map(&:version).map(&:to_s)
end
bvf.stub(:bundler_version, v("3")) do
assert_equal %w[3 3.0], util_filter_specs(specs).map(&:version).map(&:to_s)
assert_equal %w[3 3.a 3.0 3.1.1], util_filter_specs(specs).map(&:version).map(&:to_s)
end
end

Expand Down