diff options
author | Sutou Kouhei <kou@clear-code.com> | 2021-12-24 10:18:18 +0900 |
---|---|---|
committer | Sutou Kouhei <kou@cozmixng.org> | 2021-12-24 14:35:33 +0900 |
commit | 4a5d372ca8902a649928eb0689aca7edcfaa07b6 (patch) | |
tree | cd315c5b43a2a3741b36add194aafb0bcc531f4c /test | |
parent | 56a5ae9f52920982a2f1571a57090772c94c8243 (diff) |
[ruby/csv] parser: fix a keep bug that some texts may be dropped unexpectedly
Ruby: [Bug #18245] [ruby-core:105587]
Reported by Hassan Abdul Rehman.
https://github.com/ruby/csv/commit/5c6523da0a
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/5336
Diffstat (limited to 'test')
-rw-r--r-- | test/csv/parse/test_inputs_scanner.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/csv/parse/test_inputs_scanner.rb b/test/csv/parse/test_inputs_scanner.rb new file mode 100644 index 0000000000..dd0a64cc45 --- /dev/null +++ b/test/csv/parse/test_inputs_scanner.rb @@ -0,0 +1,37 @@ +require_relative "../helper" + +class TestCSVParseInputsScanner < Test::Unit::TestCase + include Helper + + def test_keep_over_chunks_nested_back + input = CSV::Parser::UnoptimizedStringIO.new("abcdefghijklmnl") + scanner = CSV::Parser::InputsScanner.new([input], + Encoding::UTF_8, + nil, + chunk_size: 2) + scanner.keep_start + assert_equal("abc", scanner.scan_all(/[a-c]+/)) + scanner.keep_start + assert_equal("def", scanner.scan_all(/[d-f]+/)) + scanner.keep_back + scanner.keep_back + assert_equal("abcdefg", scanner.scan_all(/[a-g]+/)) + end + + + def test_keep_over_chunks_nested_drop_back + input = CSV::Parser::UnoptimizedStringIO.new("abcdefghijklmnl") + scanner = CSV::Parser::InputsScanner.new([input], + Encoding::UTF_8, + nil, + chunk_size: 3) + scanner.keep_start + assert_equal("ab", scanner.scan(/../)) + scanner.keep_start + assert_equal("c", scanner.scan(/./)) + assert_equal("d", scanner.scan(/./)) + scanner.keep_drop + scanner.keep_back + assert_equal("abcdefg", scanner.scan_all(/[a-g]+/)) + end +end |