From 85b29e19a3a95294c54a0204bb94ce31bd7369b7 Mon Sep 17 00:00:00 2001 From: hsbt Date: Sat, 18 Jun 2016 05:11:55 +0000 Subject: * lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems HEAD(2c6d256). It contains to update vendored Molinillo to 0.5.0. https://github.com/rubygems/rubygems/pull/1638 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/rubygems/test_gem_package_tar_writer.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'test/rubygems/test_gem_package_tar_writer.rb') diff --git a/test/rubygems/test_gem_package_tar_writer.rb b/test/rubygems/test_gem_package_tar_writer.rb index 48d480ec53..bed1e3b221 100644 --- a/test/rubygems/test_gem_package_tar_writer.rb +++ b/test/rubygems/test_gem_package_tar_writer.rb @@ -229,6 +229,22 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase assert_equal ["#{'qwer/' * 19}bla", 'a' * 151], @tar_writer.split_name("#{'a' * 151}/#{'qwer/' * 19}bla") + names = [ + ([''] + ['123456789'] * 9 + ['1234567890']).join('/'), # 101 bytes (several pieces) + (['123456789'] * 9 + ['1234567890'] + ['']).join('/'), # 101 bytes (several pieces) + '/' * 99, + '/' * 100, + '/' * 101, + '/' * 102, + ] + names.each do |name| + newname, prefix = @tar_writer.split_name(name) + assert(!(newname.empty?), "split_name() returned empty name") + assert(newname.bytesize <= 100, "split_name() returned name longer than 100 bytes: '#{newname}' for '#{name}'") + assert(prefix.bytesize <= 155, "split_name() returned prefix longer than 155 bytes: '#{prefix}' for '#{name}'") + newname = [prefix, newname].join('/') unless prefix.empty? + assert_equal name, newname + end end def test_split_name_too_long_name @@ -240,6 +256,14 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase @tar_writer.split_name name end assert_includes exception.message, name + + # note, GNU tar 1.28 is unable to handle this case too, + # tested with "tar --format=ustar -cPf /tmp/foo.tartar -- /aaaaaa....a" + name = '/' + 'a' * 100 + exception = assert_raises Gem::Package::TooLongFileName do + @tar_writer.split_name name + end + assert_includes exception.message, name end def test_split_name_too_long_prefix -- cgit v1.2.3