From 106445d1448958b97b29681197b1d94b5c79a9ca Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 23 Jul 2016 15:04:12 +0000 Subject: dtrace: suppress an empty line * test/dtrace/helper.rb (DTrace::TestCase#trap_probe): suppress an extra empty line to the controlling tty by dtrace on Darwin. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55736 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/dtrace/helper.rb | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'test/dtrace') diff --git a/test/dtrace/helper.rb b/test/dtrace/helper.rb index 5a2ff79682..4beda271c8 100644 --- a/test/dtrace/helper.rb +++ b/test/dtrace/helper.rb @@ -10,6 +10,16 @@ elsif (sudo = ENV["SUDO"]) and !sudo.empty? and (`#{sudo} echo ok` rescue false) else ok = false end +if ok + case RUBY_PLATFORM + when /darwin/i + begin + require 'pty' + rescue LoadError + ok = false + end + end +end ok &= (`dtrace -V` rescue false) module DTrace class TestCase < Test::Unit::TestCase @@ -19,10 +29,20 @@ module DTrace when /solaris/i # increase bufsize to 8m (default 4m on Solaris) DTRACE_CMD = %w[dtrace -b 8m] + when /darwin/i + READ_PROBES = proc do |cmd| + PTY.spawn(*cmd) do |io, _| + break io.readlines + end + end end DTRACE_CMD ||= %w[dtrace] + READ_PROBES ||= proc do |cmd| + IO.popen(cmd, err: [:child, :out], &:readlines) + end + case rubybin = EnvUtil.rubybin when /\/ruby-runner#{Regexp.quote(RbConfig::CONFIG["EXEEXT"])}\z/ RUBYBIN = File.dirname(rubybin)+"/miniruby#{RbConfig::CONFIG["EXEEXT"]}" @@ -51,9 +71,7 @@ module DTrace end cmd.unshift(sudo) end - probes = IO.popen(cmd, err: [:child, :out]) do |io| - io.readlines - end + probes = READ_PROBES.(cmd) d.close(true) rb.close(true) yield(d_path, rb_path, probes) -- cgit v1.2.3