summaryrefslogtreecommitdiff
path: root/spec/bundler
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2022-03-27 13:19:49 +0200
committergit <svn-admin@ruby-lang.org>2022-06-12 02:02:20 +0900
commitd0bf31e6cffa7537ed4b69a86c58b285433143f7 (patch)
treeb944aeee6be7aada35f7c68cbce2a3ed42d38a19 /spec/bundler
parent28e27ee76eb7aa79cc2b6c7fe6ce6cf3acc32dc7 (diff)
[rubygems/rubygems] Don't on gemspecs with invalid `require_paths`, just warn
These gemspecs already work most of the times. When they are installed normally, the require_paths in the gemspec stub line becomes actually correct, and the incorrect value in the real gemspec is ignored. It only becomes an issue in standalone mode. In Ruby 3.2, `Kernel#=~` has been removed, and that means that it becomes harder for us to gracefully deal with this error in standalone mode, because it now happens earlier due to calling `Array#=~` for this invalid gemspec (since require_paths is incorrectly an array of arrays). The easiest way to fix this is to actually make this just work instead by automatically fixing the issue when reading the packaged gemspec. https://github.com/rubygems/rubygems/commit/d3f2fe6d26
Diffstat (limited to 'spec/bundler')
-rw-r--r--spec/bundler/realworld/edgecases_spec.rb12
1 files changed, 11 insertions, 1 deletions
diff --git a/spec/bundler/realworld/edgecases_spec.rb b/spec/bundler/realworld/edgecases_spec.rb
index df5eeda9fe..30c922efb0 100644
--- a/spec/bundler/realworld/edgecases_spec.rb
+++ b/spec/bundler/realworld/edgecases_spec.rb
@@ -196,7 +196,7 @@ RSpec.describe "real world edgecases", :realworld => true do
expect(lockfile).to include(rubygems_version("paperclip", "~> 5.1.0"))
end
- it "outputs a helpful error message when gems have invalid gemspecs" do
+ it "outputs a helpful error message when gems have invalid gemspecs", :rubygems => "< 3.3.16" do
install_gemfile <<-G, :standalone => true, :raise_on_error => false, :env => { "BUNDLE_FORCE_RUBY_PLATFORM" => "1" }
source 'https://rubygems.org'
gem "resque-scheduler", "2.2.0"
@@ -207,6 +207,16 @@ RSpec.describe "real world edgecases", :realworld => true do
expect(err).to include("resque-scheduler 2.2.0 has an invalid gemspec")
end
+ it "outputs a helpful warning when gems have a gemspec with invalid `require_paths`", :rubygems => ">= 3.3.16" do
+ install_gemfile <<-G, :standalone => true, :env => { "BUNDLE_FORCE_RUBY_PLATFORM" => "1" }
+ source 'https://rubygems.org'
+ gem "resque-scheduler", "2.2.0"
+ gem "redis-namespace", "1.6.0" # for a consistent resolution including ruby 2.3.0
+ gem "ruby2_keywords", "0.0.5"
+ G
+ expect(err).to include("resque-scheduler 2.2.0 includes a gemspec with `require_paths` set to an array of arrays. Newer versions of this gem might've already fixed this").once
+ end
+
it "doesn't hang on big gemfile" do
skip "Only for ruby 2.7.3" if RUBY_VERSION != "2.7.3" || RUBY_PLATFORM =~ /darwin/