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

ruby-changes:28008

From: naruse <ko1@a...>
Date: Tue, 2 Apr 2013 15:28:31 +0900 (JST)
Subject: [ruby-changes:28008] naruse:r40060 (trunk): Use assert_separately to speed up on test-all

naruse	2013-04-02 15:28:17 +0900 (Tue, 02 Apr 2013)

  New Revision: 40060

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

  Log:
    Use assert_separately to speed up on test-all

  Modified files:
    trunk/test/ripper/test_files.rb

Index: test/ripper/test_files.rb
===================================================================
--- test/ripper/test_files.rb	(revision 40059)
+++ test/ripper/test_files.rb	(revision 40060)
@@ -1,46 +1,24 @@ https://github.com/ruby/ruby/blob/trunk/test/ripper/test_files.rb#L1
-begin
-  require 'ripper'
-  require 'find'
-  require 'stringio'
-  require 'test/unit'
-  ripper_test = true
-  module TestRipper; end
-rescue LoadError
-end
+require 'test/unit'
+require_relative '../ruby/envutil'
 
+module TestRipper; end
 class TestRipper::Generic < Test::Unit::TestCase
-  SRCDIR = File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__))))
-
-  class Parser < Ripper
-    PARSER_EVENTS.each {|n| eval "def on_#{n}(*args) r = [:#{n}, *args]; r.inspect; Object.new end" }
-    SCANNER_EVENTS.each {|n| eval "def on_#{n}(*args) r = [:#{n}, *args]; r.inspect; Object.new end" }
-  end
-
-  TEST_RATIO = 0.05 # testing all files needs too long time...
-
-  def capture_stderr
-    err = StringIO.new
-    begin
-      old = $stderr
-      $stderr = err
-      yield
-    ensure
-      $stderr = old
-    end
-    if TEST_RATIO == 1.0
-      puts err.string
-    end
-  end
-
   def test_parse_files
-    Find.find("#{SRCDIR}/lib", "#{SRCDIR}/ext", "#{SRCDIR}/sample", "#{SRCDIR}/test") {|n|
-      next if /\.rb\z/ !~ n || !File.file?(n)
-      next if TEST_RATIO < rand
-      assert_nothing_raised("ripper failed to parse: #{n.inspect}") {
-	capture_stderr {
-	  Parser.new(File.read(n)).parse
-	}
-      }
-    }
+    srcdir = File.expand_path("../../..", __FILE__)
+    assert_separately(%W[--disable-gem -rripper -r#{__dir__}/../ruby/envutil - #{srcdir}],
+                      __FILE__, __LINE__, <<-'eom', timeout: Float::INFINITY)
+      TEST_RATIO = 0.05 # testing all files needs too long time...
+      class Parser < Ripper
+        PARSER_EVENTS.each {|n| eval "def on_#{n}(*args) r = [:#{n}, *args]; r.inspect; Object.new end" }
+        SCANNER_EVENTS.each {|n| eval "def on_#{n}(*args) r = [:#{n}, *args]; r.inspect; Object.new end" }
+      end
+      dir = ARGV.shift
+      for script in Dir["#{dir}/{lib,sample,ext,test}/**/*.rb"].sort
+        next if TEST_RATIO < rand
+        assert_nothing_raised("ripper failed to parse: #{script.inspect}") {
+          Parser.new(File.read(script)).parse
+        }
+      end
+    eom
   end
-end if ripper_test
+end

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

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