diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-01 21:50:14 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-01 21:50:14 +0000 |
commit | effdbf5936cc090a618e13c8f9a1b5412ebab2fa (patch) | |
tree | c8410a18cbbe7ad013470fc06fef0c75ce0fd230 /test/rubygems/test_gem_package.rb | |
parent | 9c4ef4b191a1e6b9abdbb21c7c709d1d0f2397e6 (diff) | |
download | ruby-effdbf5936cc090a618e13c8f9a1b5412ebab2fa.tar.gz |
* lib/rubygems: Update to RubyGems HEAD(c202db2).
this version contains many enhancements see http://git.io/vtNwF
* test/rubygems: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51092 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_package.rb')
-rw-r--r-- | test/rubygems/test_gem_package.rb | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/test/rubygems/test_gem_package.rb b/test/rubygems/test_gem_package.rb index 9d9c224349..bbb036d849 100644 --- a/test/rubygems/test_gem_package.rb +++ b/test/rubygems/test_gem_package.rb @@ -132,6 +132,37 @@ class TestGemPackage < Gem::Package::TarTestCase assert_equal %w[lib/code.rb], files end + def test_add_files_symlink + skip 'symlink not supported' if Gem.win_platform? + + spec = Gem::Specification.new + spec.files = %w[lib/code.rb lib/code_sym.rb] + + FileUtils.mkdir_p 'lib' + open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end + File.symlink('lib/code.rb', 'lib/code_sym.rb') + + package = Gem::Package.new 'bogus.gem' + package.spec = spec + + tar = util_tar do |tar_io| + package.add_files tar_io + end + + tar.rewind + + files, symlinks = [], [] + + Gem::Package::TarReader.new tar do |tar_io| + tar_io.each_entry do |entry| + (entry.symlink? ? symlinks : files) << entry.full_name + end + end + + assert_equal %w[lib/code.rb], files + assert_equal %w[lib/code_sym.rb], symlinks + end + def test_build spec = Gem::Specification.new 'build', '1' spec.summary = 'build' @@ -396,6 +427,21 @@ class TestGemPackage < Gem::Package::TarTestCase "#{@destination} is not allowed", e.message) end + def test_extract_tar_gz_symlink_absolute + package = Gem::Package.new @gem + + tgz_io = util_tar_gz do |tar| + tar.add_symlink 'code.rb', '/absolute.rb', 0644 + end + + e = assert_raises Gem::Package::PathError do + package.extract_tar_gz tgz_io, @destination + end + + assert_equal("installing into parent path /absolute.rb of " + + "#{@destination} is not allowed", e.message) + end + def test_extract_tar_gz_directory package = Gem::Package.new @gem @@ -821,4 +867,3 @@ class TestGemPackage < Gem::Package::TarTestCase end end - |