2008-03-31 18:40:06 -04:00
|
|
|
#--
|
|
|
|
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
|
|
|
|
# All rights reserved.
|
|
|
|
# See LICENSE.txt for permissions.
|
|
|
|
#++
|
|
|
|
|
2009-10-03 11:59:29 -04:00
|
|
|
require_relative 'gem_package_tar_test_case'
|
2008-03-31 18:40:06 -04:00
|
|
|
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
|
|
|
|
|
2009-06-09 17:38:59 -04:00
|
|
|
assert_empty files
|
2008-03-31 18:40:06 -04:00
|
|
|
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
|
|
|
|
|
2009-06-09 17:38:59 -04:00
|
|
|
assert_empty files
|
2008-03-31 18:40:06 -04:00
|
|
|
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
|
|
|
|
|