Merge RubyGems and Bundler HEAD

125415593e
This commit is contained in:
Hiroshi SHIBATA 2022-05-20 17:15:15 +09:00
parent bd8df25cdc
commit aeea88174d
No known key found for this signature in database
GPG Key ID: F9CF13417264FAC2
43 changed files with 121 additions and 95 deletions

View File

@ -113,6 +113,10 @@ RSpec.configure do |config|
end end
end end
config.before :each, :sudo => true do
Spec::Sudo.write_safe_config
end
config.after :suite do config.after :suite do
FileUtils.rm_r Spec::Path.pristine_system_gem_path FileUtils.rm_r Spec::Path.pristine_system_gem_path
end end

View File

@ -258,6 +258,10 @@ module Spec
end end
end end
def git_root
ruby_core? ? source_root : source_root.parent
end
private private
def git_ls_files(glob) def git_ls_files(glob)
@ -278,10 +282,6 @@ module Spec
ruby_core? ? "man/bundle* man/gemfile*" : "lib/bundler/man/bundle*.1 lib/bundler/man/gemfile*.5" ruby_core? ? "man/bundle* man/gemfile*" : "lib/bundler/man/bundle*.1 lib/bundler/man/gemfile*.5"
end end
def git_root
ruby_core? ? source_root : source_root.parent
end
def ruby_core_tarball? def ruby_core_tarball?
!git_root.join(".git").directory? !git_root.join(".git").directory?
end end

View File

@ -18,6 +18,12 @@ module Spec
gem_load_and_activate(gem_name, bin_container) gem_load_and_activate(gem_name, bin_container)
end end
def gem_load_and_possibly_install(gem_name, bin_container)
require_relative "switch_rubygems"
gem_load_activate_and_possibly_install(gem_name, bin_container)
end
def gem_require(gem_name) def gem_require(gem_name)
gem_activate(gem_name) gem_activate(gem_name)
require gem_name require gem_name
@ -99,9 +105,21 @@ module Spec
abort "We couldn't activate #{gem_name} (#{e.requirement}). Run `gem install #{gem_name}:'#{e.requirement}'`" abort "We couldn't activate #{gem_name} (#{e.requirement}). Run `gem install #{gem_name}:'#{e.requirement}'`"
end end
def gem_load_activate_and_possibly_install(gem_name, bin_container)
gem_activate_and_possibly_install(gem_name)
load Gem.bin_path(gem_name, bin_container)
end
def gem_activate_and_possibly_install(gem_name)
gem_activate(gem_name)
rescue Gem::LoadError => e
Gem.install(gem_name, e.requirement)
retry
end
def gem_activate(gem_name) def gem_activate(gem_name)
require "bundler" require "bundler"
gem_requirement = Bundler::LockfileParser.new(File.read(dev_lockfile)).dependencies[gem_name]&.requirement gem_requirement = Bundler::LockfileParser.new(File.read(dev_lockfile)).specs.find {|spec| spec.name == gem_name }.version
gem gem_name, gem_requirement gem gem_name, gem_requirement
end end

View File

@ -6,6 +6,10 @@ module Spec
@which_sudo ||= Bundler.which("sudo") @which_sudo ||= Bundler.which("sudo")
end end
def self.write_safe_config
File.write(Spec::Path.tmp("gitconfig"), "[safe]\n\tdirectory = #{Spec::Path.git_root}")
end
def sudo(cmd) def sudo(cmd)
raise "sudo not present" unless Sudo.present? raise "sudo not present" unless Sudo.present?
sys_exec("sudo #{cmd}") sys_exec("sudo #{cmd}")

View File

@ -15,7 +15,7 @@ gemspec = File.expand_path('custom_name.gemspec', __dir__)
Dir.mktmpdir("custom_name") do |dir| Dir.mktmpdir("custom_name") do |dir|
built_gem = File.expand_path(File.join(dir, "custom_name.gem")) built_gem = File.expand_path(File.join(dir, "custom_name.gem"))
system(*gem, "build", gemspec, "--output", built_gem) system *gem, "build", gemspec, "--output", built_gem
system(*gem, "install", "--verbose", "--local", built_gem, *ARGV) system *gem, "install", "--verbose", "--local", built_gem, *ARGV
system %q(ruby -rcustom_name -e "puts 'Result: ' + CustomName.say_hello") system %q(ruby -rcustom_name -e "puts 'Result: ' + CustomName.say_hello")
end end