diff options
| author | ksss <[email protected]> | 2015-11-23 21:58:38 +0900 |
|---|---|---|
| committer | ksss <[email protected]> | 2015-11-24 14:24:24 +0900 |
| commit | a55accd736e13307f7e925af86751ca878be2058 (patch) | |
| tree | e2378bf7375f94a377efcaba099eedbe85fbc762 /test | |
| parent | c9a4091b83b06b20d8e9178ce748d5b101925a2e (diff) | |
| download | mruby-a55accd736e13307f7e925af86751ca878be2058.tar.gz mruby-a55accd736e13307f7e925af86751ca878be2058.zip | |
Implement IO.pipe
Diffstat (limited to 'test')
| -rw-r--r-- | test/io.rb | 75 |
1 files changed, 53 insertions, 22 deletions
diff --git a/test/io.rb b/test/io.rb index 434607959..a35d7a074 100644 --- a/test/io.rb +++ b/test/io.rb @@ -402,28 +402,23 @@ assert('IO#close_on_exec') do io.close io.closed? - # # Use below when IO.pipe is implemented. - # begin - # r, w = IO.pipe - # assert_equal(false, r.close_on_exec?) - # r.close_on_exec = true - # assert_equal(true, r.close_on_exec?) - # r.close_on_exec = false - # assert_equal(false, r.close_on_exec?) - # r.close_on_exec = true - # assert_equal(true, r.close_on_exec?) - - # assert_equal(false, w.close_on_exec?) - # w.close_on_exec = true - # assert_equal(true, w.close_on_exec?) - # w.close_on_exec = false - # assert_equal(false, w.close_on_exec?) - # w.close_on_exec = true - # assert_equal(true, w.close_on_exec?) - # ensure - # r.close unless r.closed? - # w.close unless w.closed? - # end + begin + r, w = IO.pipe + assert_equal(true, r.close_on_exec?) + r.close_on_exec = false + assert_equal(false, r.close_on_exec?) + r.close_on_exec = true + assert_equal(true, r.close_on_exec?) + + assert_equal(true, w.close_on_exec?) + w.close_on_exec = false + assert_equal(false, w.close_on_exec?) + w.close_on_exec = true + assert_equal(true, w.close_on_exec?) + ensure + r.close unless r.closed? + w.close unless w.closed? + end end assert('IO#sysseek') do @@ -434,6 +429,42 @@ assert('IO#sysseek') do end end +assert('IO.pipe') do + called = false + IO.pipe do |r, w| + assert_true r.kind_of?(IO) + assert_true w.kind_of?(IO) + assert_false r.closed? + assert_false w.closed? + assert_true FileTest.pipe?(r) + assert_true FileTest.pipe?(w) + assert_nil r.pid + assert_nil w.pid + assert_true 2 < r.fileno + assert_true 2 < w.fileno + assert_true r.fileno != w.fileno + assert_false r.sync + assert_true w.sync + assert_equal 8, w.write('test for') + assert_equal 'test', r.read(4) + assert_equal ' for', r.read(4) + assert_equal 5, w.write(' pipe') + assert_equal nil, w.close + assert_equal ' pipe', r.read + called = true + assert_raise(IOError) { r.write 'test' } + # TODO: + # This assert expect raise IOError but got RuntimeError + # Because mruby-io not have flag for I/O readable + # assert_raise(IOError) { w.read } + end + assert_true called + + assert_nothing_raised do + IO.pipe { |r, w| r.close; w.close } + end +end + assert('`cmd`') do assert_equal `echo foo`, "foo\n" end |
