mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/rubygems: Update to RubyGems 2.1.3
Fixed installing platform gems Restored concurrent requires Fixed installing gems with extensions with --install-dir Fixed `gem fetch -v` to install the latest version Fixed installing gems with "./" in their files entries * test/rubygems/test_gem_package.rb: Tests for the above. * NEWS: Updated for RubyGems 2.1.3 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
e6a317bf6c
commit
fdb6a621b0
13 changed files with 211 additions and 74 deletions
18
ChangeLog
18
ChangeLog
|
@ -1,3 +1,21 @@
|
|||
Fri Sep 13 10:40:28 2013 Eric Hodel <drbrain@segment7.net>
|
||||
|
||||
* lib/rubygems: Update to RubyGems 2.1.3
|
||||
|
||||
Fixed installing platform gems
|
||||
|
||||
Restored concurrent requires
|
||||
|
||||
Fixed installing gems with extensions with --install-dir
|
||||
|
||||
Fixed `gem fetch -v` to install the latest version
|
||||
|
||||
Fixed installing gems with "./" in their files entries
|
||||
|
||||
* test/rubygems/test_gem_package.rb: Tests for the above.
|
||||
|
||||
* NEWS: Updated for RubyGems 2.1.3
|
||||
|
||||
Thu Sep 12 22:40:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* configure.in (RUBY_CHECK_SIGNEDNESS): macro to check signedness of a
|
||||
|
|
4
NEWS
4
NEWS
|
@ -175,8 +175,8 @@ with all sufficient information, see the ChangeLog file.
|
|||
Rinda::RingFinger for details.
|
||||
|
||||
* RubyGems
|
||||
* Updated to 2.1.0. See
|
||||
http://rubygems.rubyforge.org/rubygems-update/History_txt.html#label-2.1.0+%2F+2013-09-09
|
||||
* Updated to 2.1.3. See
|
||||
http://rubygems.rubyforge.org/rubygems-update/History_txt.html#label-2.1.3+%2F+2013-09-12
|
||||
for release notes.
|
||||
|
||||
* Socket
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
require 'rbconfig'
|
||||
|
||||
module Gem
|
||||
VERSION = '2.1.0'
|
||||
VERSION = '2.1.3'
|
||||
end
|
||||
|
||||
# Must be first since it unloads the prelude from 1.9.2
|
||||
|
|
|
@ -52,13 +52,15 @@ then repackaging it.
|
|||
dep = Gem::Dependency.new gem_name, version
|
||||
dep.prerelease = options[:prerelease]
|
||||
|
||||
specs_and_sources, errors = Gem::SpecFetcher.fetcher.spec_for_dependency dep
|
||||
specs_and_sources, errors =
|
||||
Gem::SpecFetcher.fetcher.spec_for_dependency dep
|
||||
|
||||
if platform then
|
||||
filtered = specs_and_sources.select { |s,| s.platform == platform }
|
||||
specs_and_sources = filtered unless filtered.empty?
|
||||
end
|
||||
|
||||
spec, source = specs_and_sources.sort_by { |s,| s.version }.first
|
||||
spec, source = specs_and_sources.max_by { |s,| s.version }
|
||||
|
||||
if spec.nil? then
|
||||
show_lookup_failure gem_name, version, errors, options[:domain]
|
||||
|
|
|
@ -48,7 +48,12 @@ module Kernel
|
|||
# normal require handle loading a gem from the rescue below.
|
||||
|
||||
if Gem::Specification.unresolved_deps.empty? then
|
||||
return gem_original_require(path)
|
||||
begin
|
||||
RUBYGEMS_ACTIVATION_MONITOR.exit
|
||||
return gem_original_require(path)
|
||||
ensure
|
||||
RUBYGEMS_ACTIVATION_MONITOR.enter
|
||||
end
|
||||
end
|
||||
|
||||
# If +path+ is for a gem that has already been loaded, don't
|
||||
|
@ -61,7 +66,12 @@ module Kernel
|
|||
s.activated? and s.contains_requirable_file? path
|
||||
}
|
||||
|
||||
return gem_original_require(path) if spec
|
||||
begin
|
||||
RUBYGEMS_ACTIVATION_MONITOR.exit
|
||||
return gem_original_require(path)
|
||||
ensure
|
||||
RUBYGEMS_ACTIVATION_MONITOR.enter
|
||||
end if spec
|
||||
|
||||
# Attempt to find +path+ in any unresolved gems...
|
||||
|
||||
|
@ -109,11 +119,21 @@ module Kernel
|
|||
valid.activate
|
||||
end
|
||||
|
||||
gem_original_require path
|
||||
begin
|
||||
RUBYGEMS_ACTIVATION_MONITOR.exit
|
||||
return gem_original_require(path)
|
||||
ensure
|
||||
RUBYGEMS_ACTIVATION_MONITOR.enter
|
||||
end
|
||||
rescue LoadError => load_error
|
||||
if load_error.message.start_with?("Could not find") or
|
||||
(load_error.message.end_with?(path) and Gem.try_activate(path)) then
|
||||
return gem_original_require(path)
|
||||
begin
|
||||
RUBYGEMS_ACTIVATION_MONITOR.exit
|
||||
return gem_original_require(path)
|
||||
ensure
|
||||
RUBYGEMS_ACTIVATION_MONITOR.enter
|
||||
end
|
||||
end
|
||||
|
||||
raise load_error
|
||||
|
|
|
@ -131,8 +131,9 @@ class Gem::DependencyResolver
|
|||
return conflict
|
||||
end
|
||||
|
||||
# Get a list of all specs that satisfy dep
|
||||
# Get a list of all specs that satisfy dep and platform
|
||||
possible = @set.find_all dep
|
||||
possible = select_local_platforms possible
|
||||
|
||||
case possible.size
|
||||
when 0
|
||||
|
@ -228,6 +229,15 @@ class Gem::DependencyResolver
|
|||
specs
|
||||
end
|
||||
|
||||
##
|
||||
# Returns the gems in +specs+ that match the local platform.
|
||||
|
||||
def select_local_platforms specs # :nodoc:
|
||||
specs.select do |spec|
|
||||
Gem::Platform.match spec.platform
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
require 'rubygems/dependency_resolver/api_set'
|
||||
|
|
|
@ -43,7 +43,7 @@ class Gem::DependencyResolver::IndexSpecification
|
|||
|
||||
unless Gem::Platform::RUBY == @platform then
|
||||
q.breakable
|
||||
q.text @platform
|
||||
q.text @platform.to_s
|
||||
end
|
||||
|
||||
q.breakable
|
||||
|
|
|
@ -213,6 +213,8 @@ class Gem::Installer
|
|||
|
||||
FileUtils.mkdir_p gem_dir
|
||||
|
||||
spec.loaded_from = spec_file
|
||||
|
||||
if @options[:install_as_default]
|
||||
extract_bin
|
||||
write_default_spec
|
||||
|
@ -230,8 +232,6 @@ class Gem::Installer
|
|||
|
||||
say spec.post_install_message unless spec.post_install_message.nil?
|
||||
|
||||
spec.loaded_from = spec_file
|
||||
|
||||
Gem::Specification.add_spec spec unless Gem::Specification.include? spec
|
||||
|
||||
run_post_install_hooks
|
||||
|
|
|
@ -339,9 +339,13 @@ EOM
|
|||
def extract_tar_gz io, destination_dir, pattern = "*" # :nodoc:
|
||||
open_tar_gz io do |tar|
|
||||
tar.each do |entry|
|
||||
next unless File.fnmatch pattern, entry.full_name
|
||||
# Some entries start with "./" which fnmatch does not like, see github
|
||||
# issue #644
|
||||
full_name = entry.full_name.sub %r%\A\./%, ''
|
||||
|
||||
destination = install_location entry.full_name, destination_dir
|
||||
next unless File.fnmatch pattern, full_name
|
||||
|
||||
destination = install_location full_name, destination_dir
|
||||
|
||||
FileUtils.rm_rf destination
|
||||
|
||||
|
|
|
@ -34,6 +34,32 @@ class TestGemCommandsFetchCommand < Gem::TestCase
|
|||
'gem repository directories must not be created'
|
||||
end
|
||||
|
||||
def test_execute_latest
|
||||
util_setup_fake_fetcher
|
||||
util_setup_spec_fetcher @a1, @a2
|
||||
|
||||
@fetcher.data["#{@gem_repo}gems/#{@a1.file_name}"] =
|
||||
File.read(@a1.cache_file)
|
||||
@fetcher.data["#{@gem_repo}gems/#{@a2.file_name}"] =
|
||||
File.read(@a2.cache_file)
|
||||
|
||||
refute_path_exists File.join(@tempdir, 'cache'), 'sanity check'
|
||||
|
||||
@cmd.options[:args] = [@a2.name]
|
||||
@cmd.options[:version] = req('>= 0.1')
|
||||
|
||||
use_ui @ui do
|
||||
Dir.chdir @tempdir do
|
||||
@cmd.execute
|
||||
end
|
||||
end
|
||||
|
||||
assert_path_exists(File.join(@tempdir, @a2.file_name),
|
||||
"#{@a2.full_name} not fetched")
|
||||
refute_path_exists File.join(@tempdir, 'cache'),
|
||||
'gem repository directories must not be created'
|
||||
end
|
||||
|
||||
def test_execute_prerelease
|
||||
util_setup_fake_fetcher true
|
||||
util_clear_gems
|
||||
|
@ -53,8 +79,8 @@ class TestGemCommandsFetchCommand < Gem::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
assert_path_exists(File.join(@tempdir, @a2_pre.file_name),
|
||||
"#{@a2_pre.full_name} not fetched")
|
||||
assert_path_exists(File.join(@tempdir, @a2.file_name),
|
||||
"#{@a2.full_name} not fetched")
|
||||
end
|
||||
|
||||
def test_execute_specific_prerelease
|
||||
|
|
|
@ -68,23 +68,28 @@ class TestGemDependencyResolver < Gem::TestCase
|
|||
|
||||
def test_picks_best_platform
|
||||
is = Gem::DependencyResolver::IndexSpecification
|
||||
a2_p = quick_spec 'a' do |s| s.platform = Gem::Platform.local end
|
||||
version = Gem::Version.new 2
|
||||
unknown = Gem::Platform.new 'unknown'
|
||||
a2_p1 = quick_spec 'a', 2 do |s| s.platform = Gem::Platform.local end
|
||||
a3_p2 = quick_spec 'a', 3 do |s| s.platform = unknown end
|
||||
v2 = v(2)
|
||||
v3 = v(3)
|
||||
source = Gem::Source.new @gem_repo
|
||||
|
||||
s = set
|
||||
|
||||
a2 = is.new s, 'a', version, source, Gem::Platform::RUBY
|
||||
a2_p = is.new s, 'a', version, source, Gem::Platform.local.to_s
|
||||
a2 = is.new s, 'a', v2, source, Gem::Platform::RUBY
|
||||
a2_p1 = is.new s, 'a', v2, source, Gem::Platform.local.to_s
|
||||
a3_p2 = is.new s, 'a', v3, source, unknown
|
||||
|
||||
s.add a2_p
|
||||
s.add a3_p2
|
||||
s.add a2_p1
|
||||
s.add a2
|
||||
|
||||
ad = make_dep "a"
|
||||
|
||||
res = Gem::DependencyResolver.new([ad], s)
|
||||
|
||||
assert_set [a2_p], res.resolve
|
||||
assert_set [a2_p1], res.resolve
|
||||
end
|
||||
|
||||
def test_only_returns_spec_once
|
||||
|
@ -348,4 +353,18 @@ class TestGemDependencyResolver < Gem::TestCase
|
|||
|
||||
assert_set [b1, c1, d2], r.resolve
|
||||
end
|
||||
|
||||
def test_select_local_platforms
|
||||
r = Gem::DependencyResolver.new nil, nil
|
||||
|
||||
a1 = quick_spec 'a', 1
|
||||
a1_p1 = quick_spec 'a', 1 do |s| s.platform = Gem::Platform.local end
|
||||
a1_p2 = quick_spec 'a', 1 do |s| s.platform = 'unknown' end
|
||||
|
||||
selected = r.select_local_platforms [a1, a1_p1, a1_p2]
|
||||
|
||||
assert_equal [a1, a1_p1], selected
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ load Gem.bin_path('a', 'executable', version)
|
|||
@installer.generate_bin
|
||||
|
||||
installed_exec = File.join util_inst_bindir, 'executable'
|
||||
assert File.exist? installed_exec
|
||||
assert_path_exists installed_exec
|
||||
|
||||
wrapper = File.read installed_exec
|
||||
assert_match %r|generated by RubyGems|, wrapper
|
||||
|
@ -136,7 +136,7 @@ gem 'other', version
|
|||
@installer.generate_bin # should not raise
|
||||
|
||||
installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
|
||||
assert File.exist? installed_exec
|
||||
assert_path_exists installed_exec
|
||||
|
||||
wrapper = File.read installed_exec
|
||||
assert_match %r|generated by RubyGems|, wrapper
|
||||
|
@ -165,7 +165,7 @@ gem 'other', version
|
|||
@installer.generate_bin
|
||||
|
||||
installed_exec = File.join util_inst_bindir, 'executable'
|
||||
assert File.exist? installed_exec
|
||||
assert_path_exists installed_exec
|
||||
|
||||
wrapper = File.read installed_exec
|
||||
assert_match %r|generated by RubyGems|, wrapper
|
||||
|
@ -178,7 +178,7 @@ gem 'other', version
|
|||
@installer.generate_bin
|
||||
|
||||
installed_exec = File.join util_inst_bindir, 'executable'
|
||||
assert File.exist? installed_exec
|
||||
assert_path_exists installed_exec
|
||||
|
||||
wrapper = File.read installed_exec
|
||||
assert_match %r|generated by RubyGems|, wrapper
|
||||
|
@ -252,7 +252,7 @@ gem 'other', version
|
|||
|
||||
assert_equal true, File.directory?(util_inst_bindir)
|
||||
installed_exec = File.join(util_inst_bindir, 'executable')
|
||||
assert_equal true, File.exist?(installed_exec)
|
||||
assert_path_exists installed_exec
|
||||
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
||||
|
||||
wrapper = File.read installed_exec
|
||||
|
@ -287,7 +287,7 @@ gem 'other', version
|
|||
@installer.generate_bin
|
||||
assert File.directory? util_inst_bindir
|
||||
installed_exec = File.join util_inst_bindir, 'executable'
|
||||
assert File.exist? installed_exec
|
||||
assert_path_exists installed_exec
|
||||
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
||||
|
||||
wrapper = File.read installed_exec
|
||||
|
@ -304,7 +304,7 @@ gem 'other', version
|
|||
@installer.generate_bin
|
||||
assert_equal true, File.directory?(util_inst_bindir)
|
||||
installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
|
||||
assert_equal true, File.exist?(installed_exec)
|
||||
assert_path_exists installed_exec
|
||||
ensure
|
||||
Gem::Installer.exec_format = nil
|
||||
end
|
||||
|
@ -318,7 +318,7 @@ gem 'other', version
|
|||
@installer.generate_bin
|
||||
assert_equal true, File.directory?(util_inst_bindir)
|
||||
installed_exec = File.join util_inst_bindir, 'executable'
|
||||
assert_equal true, File.exist?(installed_exec)
|
||||
assert_path_exists installed_exec
|
||||
ensure
|
||||
Gem::Installer.exec_format = nil
|
||||
end
|
||||
|
@ -340,7 +340,7 @@ gem 'other', version
|
|||
@installer.generate_bin
|
||||
|
||||
installed_exec = File.join("#{@gemhome}2", "bin", 'executable')
|
||||
assert File.exist? installed_exec
|
||||
assert_path_exists installed_exec
|
||||
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
||||
|
||||
wrapper = File.read installed_exec
|
||||
|
@ -353,7 +353,7 @@ gem 'other', version
|
|||
@installer.wrappers = true
|
||||
@installer.generate_bin
|
||||
|
||||
refute File.exist?(util_inst_bindir), 'bin dir was created when not needed'
|
||||
refute_path_exists util_inst_bindir, 'bin dir was created when not needed'
|
||||
end
|
||||
|
||||
def test_generate_bin_script_no_perms
|
||||
|
@ -389,7 +389,7 @@ gem 'other', version
|
|||
@installer.generate_bin
|
||||
|
||||
installed_exec = File.join @gemhome, 'bin', 'executable'
|
||||
assert_equal true, File.exist?(installed_exec)
|
||||
assert_path_exists installed_exec
|
||||
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
||||
|
||||
wrapper = File.read installed_exec
|
||||
|
@ -414,7 +414,7 @@ gem 'other', version
|
|||
|
||||
@installer.generate_bin
|
||||
assert_equal true, File.directory?(util_inst_bindir)
|
||||
assert_equal true, File.exist?(installed_exec)
|
||||
assert_path_exists installed_exec
|
||||
assert_equal mask, File.stat(installed_exec).mode unless win_platform?
|
||||
|
||||
assert_match %r|generated by RubyGems|, File.read(installed_exec)
|
||||
|
@ -444,7 +444,7 @@ gem 'other', version
|
|||
@installer.wrappers = false
|
||||
@installer.generate_bin
|
||||
|
||||
refute File.exist?(util_inst_bindir)
|
||||
refute_path_exists util_inst_bindir
|
||||
end
|
||||
|
||||
def test_generate_bin_symlink_no_perms
|
||||
|
@ -543,7 +543,7 @@ gem 'other', version
|
|||
@installer.generate_bin
|
||||
|
||||
installed_exec = File.join util_inst_bindir, 'executable'
|
||||
assert File.exist? installed_exec
|
||||
assert_path_exists installed_exec
|
||||
|
||||
@spec = Gem::Specification.new do |s|
|
||||
s.files = ['lib/code.rb']
|
||||
|
@ -580,7 +580,7 @@ gem 'other', version
|
|||
|
||||
assert_equal true, File.directory?(util_inst_bindir)
|
||||
installed_exec = File.join(util_inst_bindir, 'executable')
|
||||
assert_equal true, File.exist?(installed_exec)
|
||||
assert_path_exists installed_exec
|
||||
|
||||
assert_match(/Unable to use symlinks on Windows, installing wrapper/i,
|
||||
@ui.error)
|
||||
|
@ -647,19 +647,19 @@ gem 'other', version
|
|||
rakefile = File.join gemdir, 'ext', 'a', 'Rakefile'
|
||||
|
||||
Gem.pre_install do |installer|
|
||||
refute File.exist?(cache_file), 'cache file must not exist yet'
|
||||
refute_path_exists cache_file, 'cache file must not exist yet'
|
||||
true
|
||||
end
|
||||
|
||||
Gem.post_build do |installer|
|
||||
assert File.exist?(gemdir), 'gem install dir must exist'
|
||||
assert File.exist?(rakefile), 'gem executable must exist'
|
||||
refute File.exist?(stub_exe), 'gem executable must not exist'
|
||||
assert_path_exists gemdir, 'gem install dir must exist'
|
||||
assert_path_exists rakefile, 'gem executable must exist'
|
||||
refute_path_exists stub_exe, 'gem executable must not exist'
|
||||
true
|
||||
end
|
||||
|
||||
Gem.post_install do |installer|
|
||||
assert File.exist?(cache_file), 'cache file must exist'
|
||||
assert_path_exists cache_file, 'cache file must exist'
|
||||
end
|
||||
|
||||
@newspec = nil
|
||||
|
@ -670,23 +670,23 @@ gem 'other', version
|
|||
end
|
||||
|
||||
assert_equal @spec, @newspec
|
||||
assert File.exist? gemdir
|
||||
assert File.exist?(stub_exe), 'gem executable must exist'
|
||||
assert_path_exists gemdir
|
||||
assert_path_exists stub_exe, 'gem executable must exist'
|
||||
|
||||
exe = File.join gemdir, 'bin', 'executable'
|
||||
assert File.exist? exe
|
||||
assert_path_exists exe
|
||||
|
||||
exe_mode = File.stat(exe).mode & 0111
|
||||
assert_equal 0111, exe_mode, "0%o" % exe_mode unless win_platform?
|
||||
|
||||
assert File.exist?(File.join(gemdir, 'lib', 'code.rb'))
|
||||
assert_path_exists File.join gemdir, 'lib', 'code.rb'
|
||||
|
||||
assert File.exist? rakefile
|
||||
assert_path_exists rakefile
|
||||
|
||||
spec_file = File.join(@gemhome, 'specifications', @spec.spec_name)
|
||||
|
||||
assert_equal spec_file, @newspec.loaded_from
|
||||
assert File.exist?(spec_file)
|
||||
assert_path_exists spec_file
|
||||
|
||||
assert_same @installer, @post_build_hook_arg
|
||||
assert_same @installer, @post_install_hook_arg
|
||||
|
@ -795,7 +795,7 @@ gem 'other', version
|
|||
end
|
||||
|
||||
gemdir = File.join(@gemhome, 'gems', @spec.full_name)
|
||||
assert File.exist?(File.join(gemdir, 'lib', 'code.rb'))
|
||||
assert_path_exists File.join gemdir, 'lib', 'code.rb'
|
||||
|
||||
util_setup_gem
|
||||
# Morph spec to have lib/other.rb instead of code.rb and recreate
|
||||
|
@ -814,9 +814,9 @@ gem 'other', version
|
|||
end
|
||||
end
|
||||
|
||||
assert File.exist?(File.join(gemdir, 'lib', 'other.rb'))
|
||||
refute(File.exist?(File.join(gemdir, 'lib', 'code.rb')),
|
||||
"code.rb from prior install of same gem shouldn't remain here")
|
||||
assert_path_exists File.join gemdir, 'lib', 'other.rb'
|
||||
refute_path_exists File.join gemdir, 'lib', 'code.rb',
|
||||
"code.rb from prior install of same gem shouldn't remain here"
|
||||
end
|
||||
|
||||
def test_install_force
|
||||
|
@ -826,7 +826,7 @@ gem 'other', version
|
|||
end
|
||||
|
||||
gem_dir = File.join(@gemhome, 'gems', 'old_ruby_required-1')
|
||||
assert File.exist?(gem_dir)
|
||||
assert_path_exists gem_dir
|
||||
end
|
||||
|
||||
def test_install_missing_dirs
|
||||
|
@ -842,8 +842,8 @@ gem 'other', version
|
|||
File.directory? File.join(Gem.dir, 'docs')
|
||||
File.directory? File.join(Gem.dir, 'specifications')
|
||||
|
||||
assert File.exist?(File.join(@gemhome, 'cache', @spec.file_name))
|
||||
assert File.exist?(File.join(@gemhome, 'specifications', @spec.spec_name))
|
||||
assert_path_exists File.join @gemhome, 'cache', @spec.file_name
|
||||
assert_path_exists File.join @gemhome, 'specifications', @spec.spec_name
|
||||
end
|
||||
|
||||
def test_install_post_build_false
|
||||
|
@ -864,10 +864,10 @@ gem 'other', version
|
|||
end
|
||||
|
||||
spec_file = File.join @gemhome, 'specifications', @spec.spec_name
|
||||
refute File.exist? spec_file
|
||||
refute_path_exists spec_file
|
||||
|
||||
gem_dir = File.join @gemhome, 'gems', @spec.full_name
|
||||
refute File.exist? gem_dir
|
||||
refute_path_exists gem_dir
|
||||
end
|
||||
|
||||
def test_install_post_build_nil
|
||||
|
@ -882,10 +882,10 @@ gem 'other', version
|
|||
end
|
||||
|
||||
spec_file = File.join @gemhome, 'specifications', @spec.spec_name
|
||||
assert File.exist? spec_file
|
||||
assert_path_exists spec_file
|
||||
|
||||
gem_dir = File.join @gemhome, 'gems', @spec.full_name
|
||||
assert File.exist? gem_dir
|
||||
assert_path_exists gem_dir
|
||||
end
|
||||
|
||||
def test_install_pre_install_false
|
||||
|
@ -906,7 +906,7 @@ gem 'other', version
|
|||
end
|
||||
|
||||
spec_file = File.join @gemhome, 'specifications', @spec.spec_name
|
||||
refute File.exist? spec_file
|
||||
refute_path_exists spec_file
|
||||
end
|
||||
|
||||
def test_install_pre_install_nil
|
||||
|
@ -921,7 +921,7 @@ gem 'other', version
|
|||
end
|
||||
|
||||
spec_file = File.join @gemhome, 'specifications', @spec.spec_name
|
||||
assert File.exist? spec_file
|
||||
assert_path_exists spec_file
|
||||
end
|
||||
|
||||
def test_install_with_message
|
||||
|
@ -937,6 +937,31 @@ gem 'other', version
|
|||
assert_match %r|I am a shiny gem!|, @ui.output
|
||||
end
|
||||
|
||||
def test_install_extension_install_dir
|
||||
gemhome2 = "#{@gemhome}2"
|
||||
|
||||
@spec.extensions << "extconf.rb"
|
||||
write_file File.join(@tempdir, "extconf.rb") do |io|
|
||||
io.write <<-RUBY
|
||||
require "mkmf"
|
||||
create_makefile("#{@spec.name}")
|
||||
RUBY
|
||||
end
|
||||
|
||||
@spec.files += %w[extconf.rb]
|
||||
|
||||
use_ui @ui do
|
||||
path = Gem::Package.build @spec
|
||||
|
||||
installer = Gem::Installer.new path, :install_dir => gemhome2
|
||||
installer.install
|
||||
end
|
||||
|
||||
expected_makefile = File.join gemhome2, 'gems', @spec.full_name, 'Makefile'
|
||||
|
||||
assert_path_exists expected_makefile
|
||||
end
|
||||
|
||||
def test_install_extension_and_script
|
||||
@spec.extensions << "extconf.rb"
|
||||
write_file File.join(@tempdir, "extconf.rb") do |io|
|
||||
|
@ -963,16 +988,16 @@ gem 'other', version
|
|||
RUBY
|
||||
end
|
||||
|
||||
assert !File.exist?(File.join(@spec.gem_dir, rb))
|
||||
assert !File.exist?(File.join(@spec.gem_dir, rb2))
|
||||
refute_path_exists File.join @spec.gem_dir, rb
|
||||
refute_path_exists File.join @spec.gem_dir, rb2
|
||||
use_ui @ui do
|
||||
path = Gem::Package.build @spec
|
||||
|
||||
@installer = Gem::Installer.new path
|
||||
@installer.install
|
||||
end
|
||||
assert File.exist?(File.join(@spec.gem_dir, rb))
|
||||
assert File.exist?(File.join(@spec.gem_dir, rb2))
|
||||
assert_path_exists File.join @spec.gem_dir, rb
|
||||
assert_path_exists File.join @spec.gem_dir, rb2
|
||||
end
|
||||
|
||||
def test_install_extension_flat
|
||||
|
@ -1001,14 +1026,14 @@ gem 'other', version
|
|||
}
|
||||
|
||||
so = File.join(@spec.gem_dir, "#{@spec.name}.#{RbConfig::CONFIG["DLEXT"]}")
|
||||
assert !File.exist?(so)
|
||||
refute_path_exists so
|
||||
use_ui @ui do
|
||||
path = Gem::Package.build @spec
|
||||
|
||||
@installer = Gem::Installer.new path
|
||||
@installer.install
|
||||
end
|
||||
assert File.exist?(so)
|
||||
assert_path_exists so
|
||||
rescue
|
||||
puts '-' * 78
|
||||
puts File.read File.join(@gemhome, 'gems', 'a-2', 'Makefile')
|
||||
|
@ -1253,8 +1278,8 @@ gem 'other', version
|
|||
|
||||
@installer.unpack dest
|
||||
|
||||
assert File.exist?(File.join(dest, 'lib', 'code.rb'))
|
||||
assert File.exist?(File.join(dest, 'bin', 'executable'))
|
||||
assert_path_exists File.join dest, 'lib', 'code.rb'
|
||||
assert_path_exists File.join dest, 'bin', 'executable'
|
||||
end
|
||||
|
||||
def test_write_build_info_file
|
||||
|
@ -1313,20 +1338,20 @@ gem 'other', version
|
|||
|
||||
def test_write_spec
|
||||
FileUtils.rm @spec.spec_file
|
||||
refute File.exist?(@spec.spec_file)
|
||||
refute_path_exists @spec.spec_file
|
||||
|
||||
@installer.spec = @spec
|
||||
@installer.gem_home = @gemhome
|
||||
|
||||
@installer.write_spec
|
||||
|
||||
assert File.exist?(@spec.spec_file)
|
||||
assert_path_exists @spec.spec_file
|
||||
assert_equal @spec, eval(File.read(@spec.spec_file))
|
||||
end
|
||||
|
||||
def test_write_spec_writes_cached_spec
|
||||
FileUtils.rm @spec.spec_file
|
||||
refute File.exist?(@spec.spec_file)
|
||||
refute_path_exists @spec.spec_file
|
||||
|
||||
@spec.files = %w[a.rb b.rb c.rb]
|
||||
|
||||
|
@ -1359,7 +1384,7 @@ gem 'other', version
|
|||
|
||||
assert File.directory? util_inst_bindir
|
||||
installed_exec = File.join util_inst_bindir, 'executable'
|
||||
assert File.exist? installed_exec
|
||||
assert_path_exists installed_exec
|
||||
|
||||
assert File.directory? File.join(Gem.dir, 'specifications')
|
||||
assert File.directory? File.join(Gem.dir, 'specifications', 'default')
|
||||
|
|
|
@ -396,6 +396,19 @@ class TestGemPackage < Gem::Package::TarTestCase
|
|||
"#{@destination} is not allowed", e.message)
|
||||
end
|
||||
|
||||
def test_extract_tar_gz_dot_slash
|
||||
package = Gem::Package.new @gem
|
||||
|
||||
tgz_io = util_tar_gz do |tar|
|
||||
tar.add_file './dot_slash.rb', 0644 do |io| io.write 'hi' end
|
||||
end
|
||||
|
||||
package.extract_tar_gz tgz_io, @destination
|
||||
|
||||
extracted = File.join @destination, 'dot_slash.rb'
|
||||
assert_path_exists extracted
|
||||
end
|
||||
|
||||
def test_install_location
|
||||
package = Gem::Package.new @gem
|
||||
|
||||
|
|
Loading…
Reference in a new issue