mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	$0. [ruby-dev:35261] * lib/test/unit/ui/console/testrunner.rb (TestRunner#finished): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17612 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
module InlineTest
 | 
						|
  def eval_part(libname, sep, part)
 | 
						|
    path = libpath(libname)
 | 
						|
    program = File.open(path) { |f| f.read }
 | 
						|
    mainpart, endpart = program.split(sep)
 | 
						|
    if endpart.nil?
 | 
						|
      raise RuntimeError.new("No #{part} part in the library '#{path}'")
 | 
						|
    end
 | 
						|
    eval(endpart, TOPLEVEL_BINDING, path, mainpart.count("\n")+1)
 | 
						|
  end
 | 
						|
  module_function :eval_part
 | 
						|
 | 
						|
  def loadtest(libname)
 | 
						|
    require(libname)
 | 
						|
    in_critical do
 | 
						|
      in_progname(libpath(libname)) do
 | 
						|
        eval_part(libname, /^(?=if\s+(?:\$0\s*==\s*__FILE__|__FILE__\s*==\s*\$0)(?:[\#\s]|$))/, '$0 == __FILE__')
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
  module_function :loadtest
 | 
						|
 | 
						|
  def loadtest__END__part(libname)
 | 
						|
    require(libname)
 | 
						|
    eval_part(libname, /^__END__\r?$/, '__END__')
 | 
						|
  end
 | 
						|
  module_function :loadtest__END__part
 | 
						|
 | 
						|
  @mutex = Mutex.new
 | 
						|
 | 
						|
  def self.in_critical(&block)
 | 
						|
    @mutex.synchronize(&block)
 | 
						|
  end
 | 
						|
 | 
						|
  def self.in_progname(progname)
 | 
						|
    $program_name = progname
 | 
						|
    alias $0 $program_name
 | 
						|
    begin
 | 
						|
      yield
 | 
						|
    ensure
 | 
						|
      alias $0 $PROGRAM_NAME
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def self.libpath(libname)
 | 
						|
    libpath = nil
 | 
						|
    $:.find do |path|
 | 
						|
      File.file?(testname = File.join(path, libname)) && libpath = testname
 | 
						|
    end
 | 
						|
    if libpath.nil?
 | 
						|
      raise RuntimeError.new("'#{libname}' not found")
 | 
						|
    end
 | 
						|
    libpath
 | 
						|
  end
 | 
						|
end
 |