parent
bd8df25cdc
commit
aeea88174d
@ -113,6 +113,10 @@ RSpec.configure do |config|
|
||||
end
|
||||
end
|
||||
|
||||
config.before :each, :sudo => true do
|
||||
Spec::Sudo.write_safe_config
|
||||
end
|
||||
|
||||
config.after :suite do
|
||||
FileUtils.rm_r Spec::Path.pristine_system_gem_path
|
||||
end
|
||||
|
@ -258,6 +258,10 @@ module Spec
|
||||
end
|
||||
end
|
||||
|
||||
def git_root
|
||||
ruby_core? ? source_root : source_root.parent
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
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"
|
||||
end
|
||||
|
||||
def git_root
|
||||
ruby_core? ? source_root : source_root.parent
|
||||
end
|
||||
|
||||
def ruby_core_tarball?
|
||||
!git_root.join(".git").directory?
|
||||
end
|
||||
|
@ -18,6 +18,12 @@ module Spec
|
||||
gem_load_and_activate(gem_name, bin_container)
|
||||
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)
|
||||
gem_activate(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}'`"
|
||||
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)
|
||||
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
|
||||
end
|
||||
|
||||
|
@ -6,6 +6,10 @@ module Spec
|
||||
@which_sudo ||= Bundler.which("sudo")
|
||||
end
|
||||
|
||||
def self.write_safe_config
|
||||
File.write(Spec::Path.tmp("gitconfig"), "[safe]\n\tdirectory = #{Spec::Path.git_root}")
|
||||
end
|
||||
|
||||
def sudo(cmd)
|
||||
raise "sudo not present" unless Sudo.present?
|
||||
sys_exec("sudo #{cmd}")
|
||||
|
@ -15,7 +15,7 @@ gemspec = File.expand_path('custom_name.gemspec', __dir__)
|
||||
|
||||
Dir.mktmpdir("custom_name") do |dir|
|
||||
built_gem = File.expand_path(File.join(dir, "custom_name.gem"))
|
||||
system(*gem, "build", gemspec, "--output", built_gem)
|
||||
system(*gem, "install", "--verbose", "--local", built_gem, *ARGV)
|
||||
system *gem, "build", gemspec, "--output", built_gem
|
||||
system *gem, "install", "--verbose", "--local", built_gem, *ARGV
|
||||
system %q(ruby -rcustom_name -e "puts 'Result: ' + CustomName.say_hello")
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user