summaryrefslogtreecommitdiff
path: root/jni/ruby/test/rubygems/test_gem_package_tar_reader_entry.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_entry.rb
Fresh start
Diffstat (limited to 'jni/ruby/test/rubygems/test_gem_package_tar_reader_entry.rb')
-rw-r--r--jni/ruby/test/rubygems/test_gem_package_tar_reader_entry.rb134
1 files changed, 134 insertions, 0 deletions
diff --git a/jni/ruby/test/rubygems/test_gem_package_tar_reader_entry.rb b/jni/ruby/test/rubygems/test_gem_package_tar_reader_entry.rb
new file mode 100644
index 0000000..1143187
--- /dev/null
+++ b/jni/ruby/test/rubygems/test_gem_package_tar_reader_entry.rb
@@ -0,0 +1,134 @@
+require 'rubygems/package/tar_test_case'
+require 'rubygems/package'
+
+class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
+
+ def setup
+ super
+
+ @contents = ('a'..'z').to_a.join * 100
+
+ @tar = ''
+ @tar << tar_file_header("lib/foo", "", 0, @contents.size, Time.now)
+ @tar << @contents
+ @tar << "\0" * (512 - (@tar.size % 512))
+
+ @entry = util_entry @tar
+ end
+
+ def teardown
+ close_util_entry(@entry)
+ super
+ end
+
+ def close_util_entry(entry)
+ entry.instance_variable_get(:@io).close!
+ end
+
+ def test_bytes_read
+ assert_equal 0, @entry.bytes_read
+
+ @entry.getc
+
+ assert_equal 1, @entry.bytes_read
+ end
+
+ def test_close
+ @entry.close
+
+ assert @entry.bytes_read
+
+ e = assert_raises IOError do @entry.eof? end
+ assert_equal 'closed Gem::Package::TarReader::Entry', e.message
+
+ e = assert_raises IOError do @entry.getc end
+ assert_equal 'closed Gem::Package::TarReader::Entry', e.message
+
+ e = assert_raises IOError do @entry.pos end
+ assert_equal 'closed Gem::Package::TarReader::Entry', e.message
+
+ e = assert_raises IOError do @entry.read end
+ assert_equal 'closed Gem::Package::TarReader::Entry', e.message
+
+ e = assert_raises IOError do @entry.rewind end
+ assert_equal 'closed Gem::Package::TarReader::Entry', e.message
+ end
+
+ def test_closed_eh
+ @entry.close
+
+ assert @entry.closed?
+ end
+
+ def test_eof_eh
+ @entry.read
+
+ assert @entry.eof?
+ end
+
+ def test_full_name
+ assert_equal 'lib/foo', @entry.full_name
+ end
+
+ def test_full_name_null
+ @entry.header.prefix << "\000"
+
+ e = assert_raises Gem::Package::TarInvalidError do
+ @entry.full_name
+ end
+
+ assert_equal 'tar is corrupt, name contains null byte', e.message
+ end
+
+ def test_getc
+ assert_equal ?a, @entry.getc
+ end
+
+ def test_directory_eh
+ assert_equal false, @entry.directory?
+ dir_ent = util_dir_entry
+ assert_equal true, dir_ent.directory?
+ ensure
+ close_util_entry(dir_ent) if dir_ent
+ end
+
+ def test_file_eh
+ assert_equal true, @entry.file?
+ dir_ent = util_dir_entry
+ assert_equal false, dir_ent.file?
+ ensure
+ close_util_entry(dir_ent) if dir_ent
+ end
+
+ def test_pos
+ assert_equal 0, @entry.pos
+
+ @entry.getc
+
+ assert_equal 1, @entry.pos
+ end
+
+ def test_read
+ assert_equal @contents, @entry.read
+ end
+
+ def test_read_big
+ assert_equal @contents, @entry.read(@contents.size * 2)
+ end
+
+ def test_read_small
+ assert_equal @contents[0...100], @entry.read(100)
+ end
+
+ def test_rewind
+ char = @entry.getc
+
+ @entry.rewind
+
+ assert_equal 0, @entry.pos
+
+ assert_equal char, @entry.getc
+ end
+
+end
+