diff options
author | Seiei Miyagi <hanachin@gmail.com> | 2019-11-25 10:06:59 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-07-20 02:32:49 +0900 |
commit | 3c5b67e0db22ec9a15cef6c4961abf6f91373dd3 (patch) | |
tree | 411ce6296968dee8b017b8c6213a424eafb91e75 /test/csv | |
parent | d57bc03ba98649661c7dedbb46ec2f2bb6bee9be (diff) |
[ruby/csv] Ensuring StringIO's encoding in CSV.generate (#111)
https://github.com/ruby/csv/commit/dbf55ef008
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3332
Diffstat (limited to 'test/csv')
-rw-r--r-- | test/csv/helper.rb | 24 | ||||
-rw-r--r-- | test/csv/test_encodings.rb | 10 | ||||
-rw-r--r-- | test/csv/write/test_general.rb | 26 |
3 files changed, 36 insertions, 24 deletions
diff --git a/test/csv/helper.rb b/test/csv/helper.rb index eadff54408..1f9cf96979 100644 --- a/test/csv/helper.rb +++ b/test/csv/helper.rb @@ -15,4 +15,28 @@ module Helper ENV["CSV_PARSER_SCANNER_TEST_CHUNK_SIZE"] = chunk_size_keep end end + + def with_verbose(verbose) + original = $VERBOSE + begin + $VERBOSE = verbose + yield + ensure + $VERBOSE = original + end + end + + def with_default_internal(encoding) + original = Encoding.default_internal + begin + with_verbose(false) do + Encoding.default_internal = encoding + end + yield + ensure + with_verbose(false) do + Encoding.default_internal = original + end + end + end end diff --git a/test/csv/test_encodings.rb b/test/csv/test_encodings.rb index acee03db45..cd63af6a83 100644 --- a/test/csv/test_encodings.rb +++ b/test/csv/test_encodings.rb @@ -5,6 +5,7 @@ require_relative "helper" class TestCSVEncodings < Test::Unit::TestCase extend DifferentOFS + include Helper def setup super @@ -249,6 +250,15 @@ class TestCSVEncodings < Test::Unit::TestCase assert_equal(["foo,\u3042\n".encode(Encoding::Windows_31J), Encoding::Windows_31J], [s, s.encoding], bug9766) end + def test_encoding_with_default_internal + with_default_internal(Encoding::UTF_8) do + s = CSV.generate(String.new(encoding: Encoding::Big5), encoding: Encoding::Big5) do |csv| + csv << ["漢字"] + end + assert_equal(["漢字\n".encode(Encoding::Big5), Encoding::Big5], [s, s.encoding]) + end + end + def test_row_separator_detection_with_invalid_encoding csv = CSV.new("invalid,\xF8\r\nvalid,x\r\n".force_encoding("UTF-8"), encoding: "UTF-8") diff --git a/test/csv/write/test_general.rb b/test/csv/write/test_general.rb index bdc8aadd55..677119e1ae 100644 --- a/test/csv/write/test_general.rb +++ b/test/csv/write/test_general.rb @@ -4,6 +4,8 @@ require_relative "../helper" module TestCSVWriteGeneral + include Helper + def test_tab assert_equal("\t#{$INPUT_RECORD_SEPARATOR}", generate_line(["\t"])) @@ -221,30 +223,6 @@ module TestCSVWriteGeneral generate_line(row)) end end - - def with_verbose(verbose) - original = $VERBOSE - begin - $VERBOSE = verbose - yield - ensure - $VERBOSE = original - end - end - - def with_default_internal(encoding) - original = Encoding.default_internal - begin - with_verbose(false) do - Encoding.default_internal = encoding - end - yield - ensure - with_verbose(false) do - Encoding.default_internal = original - end - end - end end class TestCSVWriteGeneralGenerateLine < Test::Unit::TestCase |