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

ruby-changes:20040

From: akr <ko1@a...>
Date: Tue, 14 Jun 2011 23:07:11 +0900 (JST)
Subject: [ruby-changes:20040] akr:r32087 (trunk): * bootstraptest/runner.rb (show_progress): extracted from assert_check.

akr	2011-06-14 23:07:02 +0900 (Tue, 14 Jun 2011)

  New Revision: 32087

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32087

  Log:
    * bootstraptest/runner.rb (show_progress): extracted from assert_check.
      (assert_check): use show_progress.
      (assert_normal_exit): ditto.
      (assert_finish): ditto.
      (flunk): ditto.

  Modified files:
    trunk/ChangeLog
    trunk/bootstraptest/runner.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32086)
+++ ChangeLog	(revision 32087)
@@ -1,3 +1,11 @@
+Tue Jun 14 23:02:36 2011  Tanaka Akira  <akr@f...>
+
+	* bootstraptest/runner.rb (show_progress): extracted from assert_check.
+	  (assert_check): use show_progress.
+	  (assert_normal_exit): ditto.
+	  (assert_finish): ditto.
+	  (flunk): ditto.
+
 Tue Jun 14 22:51:42 2011  Tadayoshi Funaba  <tadf@d...>
 
 	* test/date/test_*.rb: added tests.
Index: bootstraptest/runner.rb
===================================================================
--- bootstraptest/runner.rb	(revision 32086)
+++ bootstraptest/runner.rb	(revision 32087)
@@ -155,11 +155,9 @@
   end
 end
 
-def assert_check(testsrc, message = '', opt = '')
+def show_progress(message = '')
   $stderr.puts "\##{@count} #{@location}" if @verbose
-  result = get_result_string(testsrc, opt)
-  check_coredump
-  faildesc = yield(result)
+  faildesc = yield
   if !faildesc
     $stderr.print '.'
   else
@@ -171,6 +169,14 @@
   error err.message, message
 end
 
+def assert_check(testsrc, message = '', opt = '')
+  show_progress(message) {
+    result = get_result_string(testsrc, opt)
+    check_coredump
+    yield(result)
+  }
+end
+
 def assert_equal(expected, testsrc, message = '')
   newtest
   assert_check(testsrc, message) {|result|
@@ -215,107 +221,89 @@
 end
 
 def assert_normal_exit(testsrc, *rest)
+  newtest
   opt = {}
   opt = rest.pop if Hash === rest.last
   message, ignore_signals = rest
   message ||= ''
   timeout = opt[:timeout]
-  newtest
-  $stderr.puts "\##{@count} #{@location}" if @verbose
-  faildesc = nil
-  filename = make_srcfile(testsrc)
-  old_stderr = $stderr.dup
-  timeout_signaled = false
-  begin
-    $stderr.reopen("assert_normal_exit.log", "w")
-    io = IO.popen("#{@ruby} -W0 #{filename}")
-    pid = io.pid
-    th = Thread.new {
-      io.read
-      io.close
-      $?
-    }
-    if !th.join(timeout)
-      Process.kill :KILL, pid
-      timeout_signaled = true
+  show_progress(message) {
+    faildesc = nil
+    filename = make_srcfile(testsrc)
+    old_stderr = $stderr.dup
+    timeout_signaled = false
+    begin
+      $stderr.reopen("assert_normal_exit.log", "w")
+      io = IO.popen("#{@ruby} -W0 #{filename}")
+      pid = io.pid
+      th = Thread.new {
+        io.read
+        io.close
+        $?
+      }
+      if !th.join(timeout)
+        Process.kill :KILL, pid
+        timeout_signaled = true
+      end
+      status = th.value
+    ensure
+      $stderr.reopen(old_stderr)
+      old_stderr.close
     end
-    status = th.value
-  ensure
-    $stderr.reopen(old_stderr)
-    old_stderr.close
-  end
-  if status.signaled?
-    signo = status.termsig
-    signame = Signal.list.invert[signo]
-    unless ignore_signals and ignore_signals.include?(signame)
-      sigdesc = "signal #{signo}"
-      if signame
-        sigdesc = "SIG#{signame} (#{sigdesc})"
+    if status.signaled?
+      signo = status.termsig
+      signame = Signal.list.invert[signo]
+      unless ignore_signals and ignore_signals.include?(signame)
+        sigdesc = "signal #{signo}"
+        if signame
+          sigdesc = "SIG#{signame} (#{sigdesc})"
+        end
+        if timeout_signaled
+          sigdesc << " (timeout)"
+        end
+        faildesc = pretty(testsrc, "killed by #{sigdesc}", nil)
+        stderr_log = File.read("assert_normal_exit.log")
+        if !stderr_log.empty?
+          faildesc << "\n" if /\n\z/ !~ faildesc
+          stderr_log << "\n" if /\n\z/ !~ stderr_log
+          stderr_log.gsub!(/^.*\n/) { '| ' + $& }
+          faildesc << stderr_log
+        end
       end
-      if timeout_signaled
-        sigdesc << " (timeout)"
-      end
-      faildesc = pretty(testsrc, "killed by #{sigdesc}", nil)
-      stderr_log = File.read("assert_normal_exit.log")
-      if !stderr_log.empty?
-        faildesc << "\n" if /\n\z/ !~ faildesc
-        stderr_log << "\n" if /\n\z/ !~ stderr_log
-        stderr_log.gsub!(/^.*\n/) { '| ' + $& }
-        faildesc << stderr_log
-      end
     end
-  end
-  if !faildesc
-    $stderr.print '.'
-    true
-  else
-    $stderr.print 'F'
-    error faildesc, message
-    false
-  end
-rescue Exception => err
-  $stderr.print 'E'
-  error err.message, message
-  false
+    faildesc
+  }
 end
 
 def assert_finish(timeout_seconds, testsrc, message = '')
   newtest
-  $stderr.puts "\##{@count} #{@location}" if @verbose
-  faildesc = nil
-  filename = make_srcfile(testsrc)
-  io = IO.popen("#{@ruby} -W0 #{filename}")
-  pid = io.pid
-  waited = false
-  tlimit = Time.now + timeout_seconds
-  while Time.now < tlimit
-    if Process.waitpid pid, Process::WNOHANG
-      waited = true
-      break
+  show_progress(message) {
+    faildesc = nil
+    filename = make_srcfile(testsrc)
+    io = IO.popen("#{@ruby} -W0 #{filename}")
+    pid = io.pid
+    waited = false
+    tlimit = Time.now + timeout_seconds
+    while Time.now < tlimit
+      if Process.waitpid pid, Process::WNOHANG
+        waited = true
+        break
+      end
+      sleep 0.1
     end
-    sleep 0.1
-  end
-  if !waited
-    Process.kill(:KILL, pid)
-    Process.waitpid pid
-    faildesc = pretty(testsrc, "not finished in #{timeout_seconds} seconds", nil)
-  end
-  io.close
-  if !faildesc
-    $stderr.print '.'
-  else
-    $stderr.print 'F'
-    error faildesc, message
-  end
-rescue Exception => err
-  $stderr.print 'E'
-  error err.message, message
+    if !waited
+      Process.kill(:KILL, pid)
+      Process.waitpid pid
+      faildesc = pretty(testsrc, "not finished in #{timeout_seconds} seconds", nil)
+    end
+    io.close
+    faildesc
+  }
 end
 
 def flunk(message = '')
   newtest
-  $stderr.print 'F'
-  error message, ''
+  show_progress('') { message }
 end
 
 def pretty(src, desc, result)

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

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