summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2022-04-06 09:22:49 +0200
committergit <svn-admin@ruby-lang.org>2022-05-11 16:55:49 +0900
commit8f1a8e68bae29bed1052d6b518e1fb4a01e53cbd (patch)
tree0b8baf2e99313bf56f33b1709f9d4aed6b41c808 /spec
parentc582d9862a8f9929a2b1e3392bc6c178629f4852 (diff)
[rubygems/rubygems] Fix error message on metadata mismatches
Previously we were removing not installable specs. However, if those are the only ones, that would result in a bad error message. If we still choose them as a last resort, Bundler will later check metadata right before installing a give a proper error. This is a regression of https://github.com/rubygems/rubygems/commit/565549260be5 and the fix is to revert that commit. https://github.com/rubygems/rubygems/commit/bc18912257
Diffstat (limited to 'spec')
-rw-r--r--spec/bundler/install/gems/resolving_spec.rb37
-rw-r--r--spec/bundler/support/helpers.rb4
2 files changed, 41 insertions, 0 deletions
diff --git a/spec/bundler/install/gems/resolving_spec.rb b/spec/bundler/install/gems/resolving_spec.rb
index 83f1e60806..469ecd412f 100644
--- a/spec/bundler/install/gems/resolving_spec.rb
+++ b/spec/bundler/install/gems/resolving_spec.rb
@@ -245,6 +245,43 @@ RSpec.describe "bundle install with install-time dependencies" do
expect(the_bundle).to include_gems("rack 1.2")
end
+ it "gives a meaningful error if there's a lockfile using the newer incompatible version" do
+ build_repo2 do
+ build_gem "parallel_tests", "3.7.0" do |s|
+ s.required_ruby_version = ">= #{current_ruby_minor}"
+ end
+
+ build_gem "parallel_tests", "3.8.0" do |s|
+ s.required_ruby_version = ">= #{next_ruby_minor}"
+ end
+ end
+
+ gemfile <<-G
+ source "http://localgemserver.test/"
+ gem 'parallel_tests'
+ G
+
+ lockfile <<~L
+ GEM
+ remote: http://localgemserver.test/
+ specs:
+ parallel_tests (3.8.0)
+
+ PLATFORMS
+ #{lockfile_platforms}
+
+ DEPENDENCIES
+ parallel_tests
+
+ BUNDLED WITH
+ #{Bundler::VERSION}
+ L
+
+ bundle "install --verbose", :artifice => "compact_index", :env => { "BUNDLER_SPEC_GEM_REPO" => gem_repo2.to_s }, :raise_on_error => false
+ expect(err).to include("parallel_tests-3.8.0 requires ruby version >= #{next_ruby_minor}")
+ expect(err).not_to include("That means the author of parallel_tests (3.8.0) has removed it.")
+ end
+
it "installs the older version under rate limiting conditions" do
build_repo4 do
build_gem "rack", "9001.0.0" do |s|
diff --git a/spec/bundler/support/helpers.rb b/spec/bundler/support/helpers.rb
index ab6a0625bb..e995418a4e 100644
--- a/spec/bundler/support/helpers.rb
+++ b/spec/bundler/support/helpers.rb
@@ -471,6 +471,10 @@ module Spec
end
end
+ def current_ruby_minor
+ Gem.ruby_version.segments[0..1].join(".")
+ end
+
def next_ruby_minor
Gem.ruby_version.segments[0..1].map.with_index {|s, i| i == 1 ? s + 1 : s }.join(".")
end