OSDN Git Service

ruby-1.9.1-rc1
[splhack/AndroidRuby.git] / lib / ruby-1.9.1-rc1 / test / rubygems / test_gem_package_tar_output.rb
1 #--
2 # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3 # All rights reserved.
4 # See LICENSE.txt for permissions.
5 #++
6
7 require File.join(File.expand_path(File.dirname(__FILE__)),
8                   'gem_package_tar_test_case')
9 require 'rubygems/package/tar_output'
10
11 class TestGemPackageTarOutput < TarTestCase
12
13   def setup
14     super
15
16     @file = File.join @tempdir, 'bla2.tar'
17   end
18
19   def test_self_open
20     open @file, 'wb' do |tar_io|
21       Gem::Package::TarOutput.open tar_io do |tar_writer|
22         tar_writer.add_file_simple 'README', 0, 17 do |io|
23           io.write "This is a README\n"
24         end
25
26         tar_writer.metadata = "This is some metadata\n"
27       end
28     end
29
30     files = util_extract
31
32     name, data = files.shift
33     assert_equal 'data.tar.gz', name
34
35     gz = Zlib::GzipReader.new StringIO.new(data)
36
37     Gem::Package::TarReader.new gz do |tar_reader|
38       tar_reader.each do |entry|
39         assert_equal 'README', entry.full_name
40         assert_equal "This is a README\n", entry.read
41       end
42     end
43
44     gz.close
45
46     name, data = files.shift
47     assert_equal 'metadata.gz', name
48
49     gz = Zlib::GzipReader.new StringIO.new(data)
50     assert_equal "This is some metadata\n", gz.read
51
52     assert files.empty?
53   ensure
54     gz.close if gz
55   end
56
57   if defined? OpenSSL then
58     def test_self_open_signed
59       signer = Gem::Security::Signer.new @private_key, [@public_cert]
60
61       open @file, 'wb' do |tar_io|
62         Gem::Package::TarOutput.open tar_io, signer do |tar_writer|
63           tar_writer.add_file_simple 'README', 0, 17 do |io|
64             io.write "This is a README\n"
65           end
66
67           tar_writer.metadata = "This is some metadata\n"
68         end
69       end
70
71       files = util_extract
72
73       name, data = files.shift
74       assert_equal 'data.tar.gz', name
75
76       name, data = files.shift
77       assert_equal 'metadata.gz', name
78
79       name, data = files.shift
80       assert_equal 'data.tar.gz.sig', name
81
82       name, data = files.shift
83       assert_equal 'metadata.gz.sig', name
84
85       assert files.empty?
86     end
87   end
88
89   def util_extract
90     files = []
91
92     open @file, 'rb' do |io|
93       Gem::Package::TarReader.new io do |tar_reader|
94         tar_reader.each do |entry|
95           files << [entry.full_name, entry.read]
96         end
97       end
98     end
99
100     files
101   end
102
103 end
104