mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 044e6f12be
			
		
	
	
		044e6f12be
		
	
	
	
	
		
			
			* win32/win32.c (rb_w32_write): writing to closed pipe fails with ERROR_NO_DATA but msvcrt maps it to EINVAL. map it to EPIPE. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62150 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			913 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			913 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: false
 | |
| require 'test/unit'
 | |
| require_relative 'ut_eof'
 | |
| 
 | |
| class TestPipe < Test::Unit::TestCase
 | |
|   include TestEOF
 | |
|   def open_file(content)
 | |
|     r, w = IO.pipe
 | |
|     w << content
 | |
|     w.close
 | |
|     begin
 | |
|       yield r
 | |
|     ensure
 | |
|       r.close
 | |
|     end
 | |
|   end
 | |
|   class WithConversion < self
 | |
|     def open_file(content)
 | |
|       r, w = IO.pipe
 | |
|       w << content
 | |
|       w.close
 | |
|       r.set_encoding("us-ascii:utf-8")
 | |
|       begin
 | |
|         yield r
 | |
|       ensure
 | |
|         r.close
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def test_stdout_epipe
 | |
|     assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}")
 | |
|     begin;
 | |
|       io = STDOUT
 | |
|       begin
 | |
|         save = io.dup
 | |
|         IO.popen("echo", "w", out: IO::NULL) do |f|
 | |
|           io.reopen(f)
 | |
|           Process.wait(f.pid)
 | |
|           assert_raise(Errno::EPIPE) do
 | |
|             io.print "foo\n"
 | |
|           end
 | |
|         end
 | |
|       ensure
 | |
|         io.reopen(save)
 | |
|       end
 | |
|     end;
 | |
|   end
 | |
| end
 |