diff options
author | Martin Emde <martin.emde@gmail.com> | 2023-01-31 15:43:01 -0800 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2023-02-02 17:17:33 +0000 |
commit | 0853703ec6484332ef0183ebd459a8c715d36a43 (patch) | |
tree | 5a4b4025c346a46254a98ed8e82ea5a4838d9f58 | |
parent | 188688a53e7708d25ab80e14d05e70ffcf792e13 (diff) |
[rubygems/rubygems] Test to show non-standard behavior of zero byte files in archive
Added more tests for some of the other behavior as well.
Tests were missing for readpartial with a buffer, and reading
remaining bytes after a partial read, using StringIO as reference.
https://github.com/rubygems/rubygems/commit/d600a657b1
-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 |