require 'open3' require 'rubygems' require 'rubylexer/test/testcases' require 'test/code/rubylexervsruby' SEP=''; 'caleb clausen'.each_byte{|ch| SEP<=timeout end while chunk end status=0 lines=data.split("\n") File.open(output,"w") { |outfd| lines.each{|line| outfd.puts(line) if /^Shifting/===line if /^#{DeleteWarns::WARNERRREX}|^Error|^(Now at end of input\.)/o===line outfd.puts(line) if status.zero? and $2!="warning" status=1 unless $4 #unless end of input seen @oracle.each{|fd| fd.close} if @oracle @oracle=nil end end } } return status end =end end require 'test/unit' class LexerTestse: e.message<<"\n"+'while lexing: #{esctc[0...1000]}' raise e end end ] }.to_s illegal_test_code= TestCases::ILLEGAL_TESTCASES.map{|tc| i+=1 name="testcase_#{i}__" esctc=tc.gsub(/['\\]/){"\\"+$&} %[ define_method '#{name}' do difflines=[] begin res=RubyLexerVsRuby.rubylexervsruby('__#{name}','#{esctc}',difflines) difflines.empty? or raise DifferencesFromMRILex, difflines res or raise LexerTestFailure, '' rescue LexerTestFailure: puts 'warning: test failure lexing "#{esctc}"' rescue Interrupt: exit rescue Exception=>e: e.message<<"\n"+'while lexing: #{esctc}' raise e end end ] }.to_s # puts test_code+illegal_test_code eval test_code+illegal_test_code end