[前][次][番号順一覧][スレッド一覧]

ruby-changes:56812

From: Nobuyoshi <ko1@a...>
Date: Mon, 5 Aug 2019 10:49:29 +0900 (JST)
Subject: [ruby-changes:56812] Nobuyoshi Nakada: 29092d35d3 (master): Moved FailDesc to EnvUtil.failure_description

https://git.ruby-lang.org/ruby.git/commit/?id=29092d35d3

From 29092d35d33d3a879634e173604edc9d201aa87a Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Mon, 5 Aug 2019 10:47:36 +0900
Subject: Moved FailDesc to EnvUtil.failure_description

So EnvUtil does not depends on test/unit.

diff --git a/tool/lib/envutil.rb b/tool/lib/envutil.rb
index b4eb63d..bc08ad3 100644
--- a/tool/lib/envutil.rb
+++ b/tool/lib/envutil.rb
@@ -150,6 +150,7 @@ module EnvUtil https://github.com/ruby/ruby/blob/trunk/tool/lib/envutil.rb#L150
         timeout_error = nil
       else
         status = terminate(pid, signal, opt[:pgroup], reprieve)
+        terminated = Time.now
       end
       stdout = th_stdout.value if capture_stdout
       stderr = th_stderr.value if capture_stderr && capture_stderr != :merge_to_stdout
@@ -161,7 +162,7 @@ module EnvUtil https://github.com/ruby/ruby/blob/trunk/tool/lib/envutil.rb#L162
       if timeout_error
         bt = caller_locations
         msg = "execution of #{bt.shift.label} expired timeout (#{timeout} sec)"
-        msg = Test::Unit::Assertions::FailDesc[status, msg, [stdout, stderr].join("\n")].()
+        msg = failure_description(status, terminated, msg, [stdout, stderr].join("\n"))
         raise timeout_error, msg, bt.map(&:to_s)
       end
       return stdout, stderr, status
@@ -286,6 +287,37 @@ module EnvUtil https://github.com/ruby/ruby/blob/trunk/tool/lib/envutil.rb#L287
     end
   end
 
+  def self.failure_description(status, now, message = "", out = "")
+    pid = status.pid
+    if signo = status.termsig
+      signame = Signal.signame(signo)
+      sigdesc = "signal #{signo}"
+    end
+    log = diagnostic_reports(signame, pid, now)
+    if signame
+      sigdesc = "SIG#{signame} (#{sigdesc})"
+    end
+    if status.coredump?
+      sigdesc = "#{sigdesc} (core dumped)"
+    end
+    full_message = ''.dup
+    message = message.call if Proc === message
+    if message and !message.empty?
+      full_message << message << "\n"
+    end
+    full_message << "pid #{pid}"
+    full_message << " exit #{status.exitstatus}" if status.exited?
+    full_message << " killed by #{sigdesc}" if sigdesc
+    if out and !out.empty?
+      full_message << "\n" << out.b.gsub(/^/, '| ')
+      full_message.sub!(/(?<!\n)\z/, "\n")
+    end
+    if log
+      full_message << "Diagnostic reports:\n" << log.b.gsub(/^/, '| ')
+    end
+    full_message
+  end
+
   def self.gc_stress_to_class?
     unless defined?(@gc_stress_to_class)
       _, _, status = invoke_ruby(["-e""exit GC.respond_to?(:add_stress_to_class)"])
diff --git a/tool/lib/test/unit/core_assertions.rb b/tool/lib/test/unit/core_assertions.rb
index b637748..1801b91 100644
--- a/tool/lib/test/unit/core_assertions.rb
+++ b/tool/lib/test/unit/core_assertions.rb
@@ -41,38 +41,10 @@ module Test https://github.com/ruby/ruby/blob/trunk/tool/lib/test/unit/core_assertions.rb#L41
       end
 
       FailDesc = proc do |status, message = "", out = ""|
-        pid = status.pid
         now = Time.now
-        faildesc = proc do
-          if signo = status.termsig
-            signame = Signal.signame(signo)
-            sigdesc = "signal #{signo}"
-          end
-          log = EnvUtil.diagnostic_reports(signame, pid, now)
-          if signame
-            sigdesc = "SIG#{signame} (#{sigdesc})"
-          end
-          if status.coredump?
-            sigdesc = "#{sigdesc} (core dumped)"
-          end
-          full_message = ''.dup
-          message = message.call if Proc === message
-          if message and !message.empty?
-            full_message << message << "\n"
-          end
-          full_message << "pid #{pid}"
-          full_message << " exit #{status.exitstatus}" if status.exited?
-          full_message << " killed by #{sigdesc}" if sigdesc
-          if out and !out.empty?
-            full_message << "\n" << out.b.gsub(/^/, '| ')
-            full_message.sub!(/(?<!\n)\z/, "\n")
-          end
-          if log
-            full_message << "Diagnostic reports:\n" << log.b.gsub(/^/, '| ')
-          end
-          full_message
+        proc do
+          EnvUtil.failure_description(status, now, message, out)
         end
-        faildesc
       end
 
       def assert_in_out_err(args, test_stdin = "", test_stdout = [], test_stderr = [], message = nil,
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]