aboutsummaryrefslogtreecommitdiffstats
path: root/test/rubygems/test_gem_package_tar_writer.rb
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-06-18 05:11:55 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-06-18 05:11:55 +0000
commit85b29e19a3a95294c54a0204bb94ce31bd7369b7 (patch)
treeb7bf99329ed8c29768f2502d3bd418e57be32268 /test/rubygems/test_gem_package_tar_writer.rb
parente255ee2321e51eaf05c364c99b4fe7fdf31a503c (diff)
downloadruby-85b29e19a3a95294c54a0204bb94ce31bd7369b7.tar.gz
* 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
Diffstat (limited to 'test/rubygems/test_gem_package_tar_writer.rb')
-rw-r--r--test/rubygems/test_gem_package_tar_writer.rb24
1 files changed, 24 insertions, 0 deletions
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