summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-07-23 15:04:12 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-07-23 15:04:12 +0000
commit106445d1448958b97b29681197b1d94b5c79a9ca (patch)
tree6fa724e67e57acf615edaff01f09a2b26b2738ac
parentd98dd4731391cc95bc34830e6415aab32d091013 (diff)
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
-rw-r--r--test/dtrace/helper.rb24
1 files changed, 21 insertions, 3 deletions
diff --git a/test/dtrace/helper.rb b/test/dtrace/helper.rb
index 5a2ff79..4beda27 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)