diff options
Diffstat (limited to 'test/rubygems/test_gem_package_tar_reader_entry.rb')
-rw-r--r-- | test/rubygems/test_gem_package_tar_reader_entry.rb | 62 |
1 files changed, 60 insertions, 2 deletions
diff --git a/test/rubygems/test_gem_package_tar_reader_entry.rb b/test/rubygems/test_gem_package_tar_reader_entry.rb index ffb4542178..99952b4b6c 100644 --- a/test/rubygems/test_gem_package_tar_reader_entry.rb +++ b/test/rubygems/test_gem_package_tar_reader_entry.rb @@ -125,6 +125,18 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase assert_equal @contents, @entry.read end + def test_consecutive_read + expected = StringIO.new(@contents) + assert_equal expected.read, @entry.read + assert_equal expected.read, @entry.read + end + + def test_consecutive_read_bytes_past_eof + expected = StringIO.new(@contents) + assert_equal expected.read, @entry.read + assert_equal expected.read(1), @entry.read(1) + end + def test_read_big assert_equal @contents, @entry.read(@contents.size * 2) end @@ -133,9 +145,24 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase assert_equal @contents[0...100], @entry.read(100) end - def test_readpartial + def test_read_remaining + @entry.read(100) + assert_equal @contents[100..-1], @entry.read + end + + def test_read_partial + assert_equal @contents[0...100], @entry.readpartial(100) + end + + def test_read_partial_buffer + buffer = "".b + @entry.readpartial(100, buffer) + assert_equal @contents[0...100], buffer + end + + def test_readpartial_past_eof + @entry.readpartial(@contents.size) assert_raise(EOFError) do - @entry.read(@contents.size) @entry.readpartial(1) end end @@ -149,4 +176,35 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase assert_equal char, @entry.getc end + + def test_read_zero + expected = StringIO.new("") + assert_equal expected.read(0), @entry.read(0) + end + + def test_readpartial_zero + expected = StringIO.new("") + assert_equal expected.readpartial(0), @entry.readpartial(0) + end + + def util_zero_byte_entry + tar = String.new + tar << tar_file_header("lib/empty", "", 0, 0, Time.now) + tar << "\0" * (512 - (tar.size % 512)) + util_entry tar + end + + def test_zero_byte_file_read + zero_entry = util_zero_byte_entry + expected = StringIO.new("") + + assert_equal expected.read, zero_entry.read + end + + def test_zero_byte_file_readpartial + zero_entry = util_zero_byte_entry + expected = StringIO.new("") + + assert_equal expected.readpartial(0), zero_entry.readpartial(0) + end end |