From: Nobuyoshi Nakada Date: 2011-08-04T22:41:44+09:00 Subject: [ruby-core:38793] Re: [Ruby 1.9 - Bug #5135] Ruby 1.9.3-preview1 tests fails in Fedora Rawhide Hi, At Thu, 4 Aug 2011 20:00:34 +0900, Vit Ondruch wrote in [ruby-core:38786]: > > > 28) Failure: > > > test_noctty(TestIO_Console) [/builddir/build/BUILD/ruby-1.9.3-preview1/test/io/console/test_io_console.rb:183]: > > > <["nil"]> expected but was > > > <["#"]>. > > > > Please confirm two points. 1) does your system have /dev/tty? 2) Does your SELinux policy disallow to access it? > > mock-chroot> ls -lZ /dev/tty > crw-rw-rw-. root tty unconfined_u:object_r:mock_var_lib_t:s0 /dev/tty That tests if a daemon process has no control tty. Maybe If noclose is zero, daemon() on OpenBSD doesn't detach the ctty? Can you try this patch? diff --git a/test/io/console/test_io_console.rb b/test/io/console/test_io_console.rb index 233f57b..0945697 100644 --- a/test/io/console/test_io_console.rb +++ b/test/io/console/test_io_console.rb @@ -182,25 +182,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) -- Nobu Nakada