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-preview=
1/test/io/console/test_io_console.rb:183]:
> > > <["nil"]> expected but was
> > > <["#<File:/dev/tty>"]>.
> >
> > Please confirm two points. 1) does your system have /dev/tty? 2) Does y=
our 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?

=0C
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 =3D [EnvUtil.rubybin, "-e", "Process.daemon(true)"]
   when !(rubyw =3D RbConfig::CONFIG["RUBYW_INSTALL_NAME"]).empty?
-    require 'tempfile'
     dir, base =3D File.split(EnvUtil.rubybin)
-    RUBYW =3D File.join(dir, base.sub(/ruby/, rubyw))
+    noctty =3D [File.join(dir, base.sub(/ruby/, rubyw))]
+  end

+  if noctty
+    require 'tempfile'
+    NOCTTY =3D noctty
     def test_noctty
       t =3D Tempfile.new("console")
       t.close
-      cmd =3D [RUBYW, '-rio/console', '-e', 'STDOUT.reopen(ARGV[0]); p
IO.console', '--', t.path]
+      t2 =3D Tempfile.new("console")
+      t2.close
+      cmd =3D 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)
=0C

--=20
Nobu Nakada