From f28755df62ba4808604bc22cc26b02befce76229 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 4 Aug 2011 22:00:36 +0000 Subject: * test/io/console/test_io_console.rb (test_noctty): daemon() on OpenBSD seems not to detach the controlling terminal, when the argument noclose is non-zero. ref: [Bug #5135] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@32848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ test/io/console/test_io_console.rb | 23 +++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6fac238164..ad9c2f2e87 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Aug 5 07:00:31 2011 Nobuyoshi Nakada + + * test/io/console/test_io_console.rb (test_noctty): daemon() on + OpenBSD seems not to detach the controlling terminal, when the + argument noclose is non-zero. ref: [Bug #5135] + Wed Aug 4 02:35:00 2011 Kenta Murata * configure.in: use build_os variable for checking C and C++ compilers diff --git a/test/io/console/test_io_console.rb b/test/io/console/test_io_console.rb index a73fe69576..b0fcbb7588 100644 --- a/test/io/console/test_io_console.rb +++ b/test/io/console/test_io_console.rb @@ -179,25 +179,32 @@ class TestIO_Console < Test::Unit::TestCase case when Process.respond_to?(:daemon) - def test_noctty - assert_in_out_err(["-rio/console"], - "Process.daemon(true, true); p IO.console", - ["nil"]) - end + noctty = [EnvUtil.rubybin, "-e", "Process.daemon(true)"] when !(rubyw = RbConfig::CONFIG["RUBYW_INSTALL_NAME"]).empty? - require 'tempfile' dir, base = File.split(EnvUtil.rubybin) - RUBYW = File.join(dir, base.sub(/ruby/, rubyw)) + noctty = [File.join(dir, base.sub(/ruby/, rubyw))] + end + if noctty + require 'tempfile' + NOCTTY = noctty def test_noctty t = Tempfile.new("console") t.close - cmd = [RUBYW, '-rio/console', '-e', 'STDOUT.reopen(ARGV[0]); p IO.console', '--', t.path] + t2 = Tempfile.new("console") + t2.close + cmd = NOCTTY + [ + '-rio/console', + '-e', 'open(ARGV[0], "w") {|f| f.puts IO.console.inspect}', + '-e', 'File.unlink(ARGV[1])', + '--', t.path, t2.path] system(*cmd) + sleep 0.1 while File.exist?(t2.path) t.open assert_equal("nil", t.gets.chomp) ensure t.close! if t and !t.closed? + t2.close! end end end if defined?(IO.console) -- cgit v1.2.3