summaryrefslogtreecommitdiff
path: root/test/io/console/test_io_console.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-08-04 22:00:36 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-08-04 22:00:36 +0000
commit5fd10124aa7adb1b3e8aa0299909b6522397799e (patch)
treed34f943fff9b551e68f93bdc7f3ae7aad78009a1 /test/io/console/test_io_console.rb
parent1d69f7ccf10618d34fcf363c323217e475c16b12 (diff)
* 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/trunk@32848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/io/console/test_io_console.rb')
-rw-r--r--test/io/console/test_io_console.rb23
1 files changed, 15 insertions, 8 deletions
diff --git a/test/io/console/test_io_console.rb b/test/io/console/test_io_console.rb
index 233f57bee7..3420248415 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)