diff options
author | nagachika <nagachika@ruby-lang.org> | 2021-09-18 16:07:30 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2021-09-18 16:07:30 +0900 |
commit | e6e25b794d8db52e1df85a02f28846ad7eb82d49 (patch) | |
tree | 35ed9d6c0fea1d52c123e7e38c7af71b3d6ac0da /test/ruby/test_io.rb | |
parent | 650af7d29d98de6a3c2631e31edc6fbe435ece89 (diff) |
merge revision(s) 13939d61b4b69bd109c5f41303c79868d639fa44: [Backport #17661]
Check if closed after each yield [Bug #17661]
---
io.c | 4 +++-
test/ruby/test_io.rb | 36 ++++++++++++++++++++++++++++++++++++
2 files changed, 39 insertions(+), 1 deletion(-)
Diffstat (limited to 'test/ruby/test_io.rb')
-rw-r--r-- | test/ruby/test_io.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index 9f9318eaf7..58a739be22 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -394,6 +394,24 @@ class TestIO < Test::Unit::TestCase } end + def test_each_byte_closed + pipe(proc do |w| + w << "abc def" + w.close + end, proc do |r| + assert_raise(IOError) do + r.each_byte {|byte| r.close if byte == 32 } + end + end) + make_tempfile {|t| + File.open(t, 'rt') {|f| + assert_raise(IOError) do + f.each_byte {|c| f.close if c == 10} + end + } + } + end + def test_each_codepoint make_tempfile {|t| bug2959 = '[ruby-core:28650]' @@ -405,6 +423,24 @@ class TestIO < Test::Unit::TestCase } end + def test_each_codepoint_closed + pipe(proc do |w| + w.print("abc def") + w.close + end, proc do |r| + assert_raise(IOError) do + r.each_codepoint {|c| r.close if c == 32} + end + end) + make_tempfile {|t| + File.open(t, 'rt') {|f| + assert_raise(IOError) do + f.each_codepoint {|c| f.close if c == 10} + end + } + } + end + def test_rubydev33072 t = make_tempfile path = t.path |