summaryrefslogtreecommitdiff
path: root/jni/ruby/test/rubygems/test_gem_package_tar_reader.rb
diff options
context:
space:
mode:
authorJari Vetoniemi <jari.vetoniemi@indooratlas.com>2020-03-16 18:49:26 +0900
committerJari Vetoniemi <jari.vetoniemi@indooratlas.com>2020-03-30 00:39:06 +0900
commitfcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch)
tree64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/test/rubygems/test_gem_package_tar_reader.rb
Fresh start
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.rb89
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
+