diff --git a/spec/bundler/quality_spec.rb b/spec/bundler/quality_spec.rb index ce7058afc0..1b40ecce12 100644 --- a/spec/bundler/quality_spec.rb +++ b/spec/bundler/quality_spec.rb @@ -225,7 +225,16 @@ RSpec.describe "The library itself" do it "can still be built" do Dir.chdir(root) do begin - gem_command! :build, gemspec + if ruby_core? + spec = Gem::Specification.load(gemspec.to_s) + spec.bindir = "libexec" + File.open(root.join("bundler.gemspec").to_s, "w"){|f| f.write spec.to_ruby } + gem_command! :build, root.join("bundler.gemspec").to_s + FileUtils.rm(root.join("bundler.gemspec").to_s) + else + gem_command! :build, gemspec + end + if Bundler.rubygems.provides?(">= 2.4") # there's no way aroudn this warning last_command.stderr.sub!(/^YAML safe loading.*/, "") @@ -236,8 +245,7 @@ RSpec.describe "The library itself" do end ensure # clean up the .gem generated - path_prefix = ruby_core? ? "lib/" : "./" - FileUtils.rm("#{path_prefix}bundler-#{Bundler::VERSION}.gem") + FileUtils.rm("bundler-#{Bundler::VERSION}.gem") end end end diff --git a/spec/bundler/support/helpers.rb b/spec/bundler/support/helpers.rb index 43bf6af229..fbe63a2641 100644 --- a/spec/bundler/support/helpers.rb +++ b/spec/bundler/support/helpers.rb @@ -313,12 +313,16 @@ module Spec gem_repo = options.fetch(:gem_repo) { gem_repo1 } gems.each do |g| path = if g == :bundler - Dir.chdir(root) { gem_command! :build, gemspec.to_s } - bundler_path = if ruby_core? - root + "lib/bundler-#{Bundler::VERSION}.gem" + if ruby_core? + spec = Gem::Specification.load(gemspec.to_s) + spec.bindir = "libexec" + File.open(root.join("bundler.gemspec").to_s, "w"){|f| f.write spec.to_ruby } + Dir.chdir(root) { gem_command! :build, root.join("bundler.gemspec").to_s } + FileUtils.rm(root.join("bundler.gemspec")) else - root + "bundler-#{Bundler::VERSION}.gem" + Dir.chdir(root) { gem_command! :build, gemspec.to_s } end + bundler_path = root + "bundler-#{Bundler::VERSION}.gem" elsif g.to_s =~ %r{\A/.*\.gem\z} g else