diff options
Diffstat (limited to 'trunk/test/rubygems/test_gem_package_tar_output.rb')
-rw-r--r-- | trunk/test/rubygems/test_gem_package_tar_output.rb | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/trunk/test/rubygems/test_gem_package_tar_output.rb b/trunk/test/rubygems/test_gem_package_tar_output.rb new file mode 100644 index 0000000000..06dbb1a4da --- /dev/null +++ b/trunk/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 + |