summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog18
-rw-r--r--NEWS4
-rw-r--r--lib/rubygems.rb2
-rw-r--r--lib/rubygems/commands/fetch_command.rb6
-rwxr-xr-xlib/rubygems/core_ext/kernel_require.rb28
-rw-r--r--lib/rubygems/dependency_resolver.rb12
-rw-r--r--lib/rubygems/dependency_resolver/index_specification.rb2
-rw-r--r--lib/rubygems/installer.rb4
-rw-r--r--lib/rubygems/package.rb8
-rw-r--r--test/rubygems/test_gem_commands_fetch_command.rb30
-rw-r--r--test/rubygems/test_gem_dependency_resolver.rb31
-rw-r--r--test/rubygems/test_gem_installer.rb127
-rw-r--r--test/rubygems/test_gem_package.rb13
13 files changed, 211 insertions, 74 deletions
diff --git a/ChangeLog b/ChangeLog
index e28b87213c..d1f3400934 100644
--- a/ChangeLog
+++ b/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
diff --git a/NEWS b/NEWS
index 8e6594c051..16ea65b6fc 100644
--- a/NEWS
+++ b/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
diff --git a/lib/rubygems.rb b/lib/rubygems.rb
index 51252e4773..fac38e4143 100644
--- a/lib/rubygems.rb
+++ b/lib/rubygems.rb
@@ -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
diff --git a/lib/rubygems/commands/fetch_command.rb b/lib/rubygems/commands/fetch_command.rb
index b35987c329..c57ab0089a 100644
--- a/lib/rubygems/commands/fetch_command.rb
+++ b/lib/rubygems/commands/fetch_command.rb
@@ -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]
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 3619f3f559..0416644920 100755
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -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
diff --git a/lib/rubygems/dependency_resolver.rb b/lib/rubygems/dependency_resolver.rb
index 721fd43c51..abce692920 100644
--- a/lib/rubygems/dependency_resolver.rb
+++ b/lib/rubygems/dependency_resolver.rb
@@ -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'
diff --git a/lib/rubygems/dependency_resolver/index_specification.rb b/lib/rubygems/dependency_resolver/index_specification.rb
index d8ac69d402..fc409334e8 100644
--- a/lib/rubygems/dependency_resolver/index_specification.rb
+++ b/lib/rubygems/dependency_resolver/index_specification.rb
@@ -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
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index 49ad7dfae5..261af890c8 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -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
diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb
index 65db3f8e2e..ba379c24cb 100644
--- a/lib/rubygems/package.rb
+++ b/lib/rubygems/package.rb
@@ -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
diff --git a/test/rubygems/test_gem_commands_fetch_command.rb b/test/rubygems/test_gem_commands_fetch_command.rb
index 924f4c44e7..364881a132 100644
--- a/test/rubygems/test_gem_commands_fetch_command.rb
+++ b/test/rubygems/test_gem_commands_fetch_command.rb
@@ -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
diff --git a/test/rubygems/test_gem_dependency_resolver.rb b/test/rubygems/test_gem_dependency_resolver.rb
index 38f3d868ea..47eef8cc55 100644
--- a/test/rubygems/test_gem_dependency_resolver.rb
+++ b/test/rubygems/test_gem_dependency_resolver.rb
@@ -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
+
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb
index ba9253b50c..01b151c089 100644
--- a/test/rubygems/test_gem_installer.rb
+++ b/test/rubygems/test_gem_installer.rb
@@ -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')
diff --git a/test/rubygems/test_gem_package.rb b/test/rubygems/test_gem_package.rb
index eaa7ff813c..af5319a150 100644
--- a/test/rubygems/test_gem_package.rb
+++ b/test/rubygems/test_gem_package.rb
@@ -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