mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			23 lines
		
	
	
	
		
			921 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
	
		
			921 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require 'test/unit'
 | 
						|
 | 
						|
module TestRipper; end
 | 
						|
class TestRipper::Generic < Test::Unit::TestCase
 | 
						|
  def test_parse_files
 | 
						|
    srcdir = File.expand_path("../../..", __FILE__)
 | 
						|
    assert_separately(%W[--disable-gem -rripper - #{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), script).parse
 | 
						|
        }
 | 
						|
      end
 | 
						|
    eom
 | 
						|
  end
 | 
						|
end
 |