From cdbadafd25a5fc9af00d9495236396beaf329619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Tue, 18 Feb 2025 19:01:40 +0100 Subject: [PATCH] [rubygems/rubygems] Fix resolver issue due to ill-defined version ranges being created https://github.com/rubygems/rubygems/commit/f2f2ac9680 --- lib/bundler/resolver.rb | 2 +- spec/bundler/resolver/basic_spec.rb | 40 +++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb index ce51056904..c25076dc1d 100644 --- a/lib/bundler/resolver.rb +++ b/lib/bundler/resolver.rb @@ -237,7 +237,7 @@ module Bundler sorted_versions[high] end - range = PubGrub::VersionRange.new(min: low, max: high, include_min: true) + range = PubGrub::VersionRange.new(min: low, max: high, include_min: !low.nil?) self_constraint = PubGrub::VersionConstraint.new(package, range: range) diff --git a/spec/bundler/resolver/basic_spec.rb b/spec/bundler/resolver/basic_spec.rb index 852c710415..05c6f24ff7 100644 --- a/spec/bundler/resolver/basic_spec.rb +++ b/spec/bundler/resolver/basic_spec.rb @@ -379,4 +379,44 @@ RSpec.describe "Resolving" do should_resolve_without_dependency_api %w[myrack-3.0.0 standalone_migrations-2.0.4] end + + it "resolves fine cases that need joining unbounded disjoint ranges" do + @index = build_index do + gem "inspec", "5.22.3" do + dep "ruby", ">= 3.2.2" + dep "train-kubernetes", ">= 0.1.7" + end + + gem "ruby", "3.2.2" + + gem "train-kubernetes", "0.1.12" do + dep "k8s-ruby", ">= 0.14.0" + end + + gem "train-kubernetes", "0.1.10" do + dep "k8s-ruby", "= 0.10.5" + end + + gem "train-kubernetes", "0.1.7" do + dep "k8s-ruby", ">= 0.10.5" + end + + gem "k8s-ruby", "0.10.5" do + dep "ruby","< 3.2.2" + end + + gem "k8s-ruby", "0.11.0" do + dep "ruby", ">= 3.2.2" + end + + gem "k8s-ruby", "0.14.0" do + dep "ruby", "< 3.2.2" + end + end + + dep "inspec", "5.22.3" + dep "ruby", "3.2.2" + + should_resolve_as %w[inspec-5.22.3 ruby-3.2.2 train-kubernetes-0.1.7 k8s-ruby-0.11.0] + end end