mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[rubygems/rubygems] Fix ruby setup.rb --destdir /foo
modifying global specs
Running a command like that is actually removing any previous default
bundler specs in the default RubyGems installation (outside of destdir).
It should instead only modify destdir.
5ed275383c
This commit is contained in:
parent
fae0d60120
commit
fa5724cca9
2 changed files with 12 additions and 4 deletions
|
@ -361,17 +361,17 @@ By default, this RubyGems will install gem as:
|
|||
|
||||
def install_default_bundler_gem(bin_dir)
|
||||
current_default_spec = Gem::Specification.default_stubs.find {|s| s.name == "bundler" }
|
||||
specs_dir = if current_default_spec
|
||||
specs_dir = if current_default_spec && default_dir == Gem.default_dir
|
||||
Gem::Specification.remove_spec current_default_spec
|
||||
loaded_from = current_default_spec.loaded_from
|
||||
File.delete(loaded_from)
|
||||
File.dirname(loaded_from)
|
||||
else
|
||||
File.join(default_dir, "specifications", "default")
|
||||
target_specs_dir = File.join(default_dir, "specifications", "default")
|
||||
mkdir_p target_specs_dir, :mode => 0755
|
||||
target_specs_dir
|
||||
end
|
||||
|
||||
mkdir_p specs_dir, :mode => 0755
|
||||
|
||||
bundler_spec = Dir.chdir("bundler") { Gem::Specification.load("bundler.gemspec") }
|
||||
default_spec_path = File.join(specs_dir, "#{bundler_spec.full_name}.gemspec")
|
||||
Gem.write_binary(default_spec_path, bundler_spec.to_ruby)
|
||||
|
|
|
@ -279,6 +279,14 @@ class TestGemCommandsSetupCommand < Gem::TestCase
|
|||
|
||||
@cmd.install_default_bundler_gem bin_dir
|
||||
|
||||
# leaves other versions of bundler gemspecs on default specification directory.
|
||||
assert_path_exist previous_bundler_specification_path
|
||||
assert_path_not_exist new_bundler_specification_path
|
||||
|
||||
# installs the updated bundler gemspec to destdir
|
||||
assert_path_not_exist prepend_destdir(destdir, previous_bundler_specification_path)
|
||||
assert_path_exist prepend_destdir(destdir, new_bundler_specification_path)
|
||||
|
||||
bundler_spec.executables.each do |e|
|
||||
assert_path_exist prepend_destdir(destdir, File.join(@gemhome, 'gems', bundler_spec.full_name, bundler_spec.bindir, e))
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue