diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-03-31 22:40:06 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-03-31 22:40:06 +0000 |
commit | 8cc45aae947d453acca029e13eb64f3f5f0bf942 (patch) | |
tree | f9485a20c99defe1aae3f32555a41d23c2298ad8 /test/rubygems/test_gem_package_tar_output.rb | |
parent | dc8359969ec71ece10357ba9396430db7f029e45 (diff) | |
download | ruby-8cc45aae947d453acca029e13eb64f3f5f0bf942.tar.gz |
Import RubyGems 1.1.0
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_package_tar_output.rb')
-rw-r--r-- | test/rubygems/test_gem_package_tar_output.rb | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/test/rubygems/test_gem_package_tar_output.rb b/test/rubygems/test_gem_package_tar_output.rb new file mode 100644 index 0000000000..06dbb1a4da --- /dev/null +++ b/test/rubygems/test_gem_package_tar_output.rb @@ -0,0 +1,104 @@ +#-- +# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. +# All rights reserved. +# See LICENSE.txt for permissions. +#++ + +require File.join(File.expand_path(File.dirname(__FILE__)), + 'gem_package_tar_test_case') +require 'rubygems/package/tar_output' + +class TestGemPackageTarOutput < TarTestCase + + def setup + super + + @file = File.join @tempdir, 'bla2.tar' + end + + def test_self_open + open @file, 'wb' do |tar_io| + Gem::Package::TarOutput.open tar_io do |tar_writer| + tar_writer.add_file_simple 'README', 0, 17 do |io| + io.write "This is a README\n" + end + + tar_writer.metadata = "This is some metadata\n" + end + end + + files = util_extract + + name, data = files.shift + assert_equal 'data.tar.gz', name + + gz = Zlib::GzipReader.new StringIO.new(data) + + Gem::Package::TarReader.new gz do |tar_reader| + tar_reader.each do |entry| + assert_equal 'README', entry.full_name + assert_equal "This is a README\n", entry.read + end + end + + gz.close + + name, data = files.shift + assert_equal 'metadata.gz', name + + gz = Zlib::GzipReader.new StringIO.new(data) + assert_equal "This is some metadata\n", gz.read + + assert files.empty? + ensure + gz.close if gz + end + + if defined? OpenSSL then + def test_self_open_signed + signer = Gem::Security::Signer.new @private_key, [@public_cert] + + open @file, 'wb' do |tar_io| + Gem::Package::TarOutput.open tar_io, signer do |tar_writer| + tar_writer.add_file_simple 'README', 0, 17 do |io| + io.write "This is a README\n" + end + + tar_writer.metadata = "This is some metadata\n" + end + end + + files = util_extract + + name, data = files.shift + assert_equal 'data.tar.gz', name + + name, data = files.shift + assert_equal 'metadata.gz', name + + name, data = files.shift + assert_equal 'data.tar.gz.sig', name + + name, data = files.shift + assert_equal 'metadata.gz.sig', name + + assert files.empty? + end + end + + def util_extract + files = [] + + open @file, 'rb' do |io| + Gem::Package::TarReader.new io do |tar_reader| + tar_reader.each do |entry| + files << [entry.full_name, entry.read] + end + end + end + + files + end + +end + |