summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorshirosaki <shirosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-08 12:01:05 +0000
committershirosaki <shirosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-08 12:01:05 +0000
commit7e134cf71e2535b562cd2d81e3ff69cbe49d0ce0 (patch)
tree651e1602aa125a6935ef8790472954a6da525438 /test/ruby
parentc45d780b830dba93d67fd49bccafc401b3805bcb (diff)
* io.c (io_unread): fix IO#pos with mode 'r' bug on Windows.
If the end of reading buffer is CR, io_unread() needs to unread one more byte. [ruby-core:44874] [Bug #6401] * test/ruby/test_io_m17n.rb (TestIO_M17N#test_pos_with_buffer_end_cr): add a test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35594 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_io_m17n.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/ruby/test_io_m17n.rb b/test/ruby/test_io_m17n.rb
index 719214d491..b6358e0d92 100644
--- a/test/ruby/test_io_m17n.rb
+++ b/test/ruby/test_io_m17n.rb
@@ -2432,6 +2432,22 @@ EOT
}
end if /mswin|mingw/ =~ RUBY_PLATFORM
+ def test_pos_with_buffer_end_cr
+ bug6401 = '[ruby-core:44874]'
+ with_tmpdir {
+ # Read buffer size is 8191. This generates '\r' at 8191.
+ lines = ["X" * 8187, "X"]
+ generate_file("tmp", lines.join("\r\n") + "\r\n")
+
+ open("tmp", "r") do |f|
+ lines.each do |line|
+ f.pos
+ assert_equal(line, f.readline.chomp, bug6401)
+ end
+ end
+ }
+ end if /mswin|mingw/ =~ RUBY_PLATFORM
+
def test_read_crlf_and_eof
bug6271 = '[ruby-core:44189]'
with_tmpdir {