From f0526d7b98cca67a24289cce8889260ac724ec42 Mon Sep 17 00:00:00 2001 From: Sebastian Henke Date: Wed, 19 Feb 2020 14:23:02 +0100 Subject: [PATCH] Set OutputStream.write_buffer's default buffer to binmode --- lib/zip/output_stream.rb | 2 +- test/output_stream_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/zip/output_stream.rb b/lib/zip/output_stream.rb index 2f628931..af12599b 100644 --- a/lib/zip/output_stream.rb +++ b/lib/zip/output_stream.rb @@ -57,7 +57,7 @@ def open(file_name, encrypter = nil) end # Same as #open but writes to a filestream instead - def write_buffer(io = ::StringIO.new(''), encrypter = nil) + def write_buffer(io = ::StringIO.new('').binmode, encrypter = nil) zos = new(io, true, encrypter) yield zos zos.close_buffer diff --git a/test/output_stream_test.rb b/test/output_stream_test.rb index 40205076..df13973c 100644 --- a/test/output_stream_test.rb +++ b/test/output_stream_test.rb @@ -6,6 +6,8 @@ class ZipOutputStreamTest < MiniTest::Test TEST_ZIP = TestZipFile::TEST_ZIP2.clone TEST_ZIP.zip_name = 'test/data/generated/output.zip' + ASCII8BIT = 'ASCII-8BIT' + def test_new zos = ::Zip::OutputStream.new(TEST_ZIP.zip_name) zos.comment = TEST_ZIP.comment @@ -32,6 +34,14 @@ def test_write_buffer assert_test_zip_contents(TEST_ZIP) end + def test_write_buffer_binmode + buffer = ::Zip::OutputStream.write_buffer do |zos| + zos.comment = TEST_ZIP.comment + write_test_zip(zos) + end + assert buffer.external_encoding.name === ASCII8BIT + end + def test_write_buffer_with_temp_file tmp_file = Tempfile.new('')