diff options
Diffstat (limited to 'jni/ruby/test/rubygems/test_gem_package_tar_reader.rb')
-rw-r--r-- | jni/ruby/test/rubygems/test_gem_package_tar_reader.rb | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/jni/ruby/test/rubygems/test_gem_package_tar_reader.rb b/jni/ruby/test/rubygems/test_gem_package_tar_reader.rb new file mode 100644 index 0000000..aa45417 --- /dev/null +++ b/jni/ruby/test/rubygems/test_gem_package_tar_reader.rb @@ -0,0 +1,89 @@ +require 'rubygems/package/tar_test_case' +require 'rubygems/package' + +class TestGemPackageTarReader < Gem::Package::TarTestCase + + def test_each_entry + tar = tar_dir_header "foo", "bar", 0, Time.now + tar << tar_file_header("bar", "baz", 0, 0, Time.now) + + io = TempIO.new tar + + entries = 0 + + Gem::Package::TarReader.new io do |tar_reader| + tar_reader.each_entry do |entry| + assert_kind_of Gem::Package::TarReader::Entry, entry + + entries += 1 + end + end + + assert_equal 2, entries + ensure + io.close! + end + + def test_rewind + content = ('a'..'z').to_a.join(" ") + + str = + tar_file_header("lib/foo", "", 010644, content.size, Time.now) + + content + "\0" * (512 - content.size) + str << "\0" * 1024 + + io = TempIO.new(str) + + Gem::Package::TarReader.new(io) do |tar_reader| + 3.times do + tar_reader.rewind + i = 0 + tar_reader.each_entry do |entry| + assert_equal(content, entry.read) + i += 1 + end + assert_equal(1, i) + end + end + ensure + io.close! + end + + def test_seek + tar = tar_dir_header "foo", "bar", 0, Time.now + tar << tar_file_header("bar", "baz", 0, 0, Time.now) + + io = TempIO.new tar + + Gem::Package::TarReader.new io do |tar_reader| + tar_reader.seek 'baz/bar' do |entry| + assert_kind_of Gem::Package::TarReader::Entry, entry + + assert_equal 'baz/bar', entry.full_name + end + + assert_equal 0, io.pos + end + ensure + io.close! + end + + def test_seek_missing + tar = tar_dir_header "foo", "bar", 0, Time.now + tar << tar_file_header("bar", "baz", 0, 0, Time.now) + + io = TempIO.new tar + + Gem::Package::TarReader.new io do |tar_reader| + tar_reader.seek 'nonexistent' do |entry| + flunk 'entry missing but entry-found block was run' + end + + assert_equal 0, io.pos + end + ensure + io.close! + end + +end + |