From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- .../test/rubygems/test_gem_package_tar_reader.rb | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 jni/ruby/test/rubygems/test_gem_package_tar_reader.rb (limited to 'jni/ruby/test/rubygems/test_gem_package_tar_reader.rb') 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 + -- cgit v1.2.3