class Tryouts::CLI::Run
def run
$ sergeant run [path/2/tryouts]
def run start = Time.now Tryouts.enable_debug if Drydock.debug? Tryouts.verbose = @global.quiet ? -1 : @global.verbose if Tryouts.verbose > 0 print "Tryouts #{Tryouts::VERSION} -- " print "#{Tryouts.sysinfo.to_s} (#{RUBY_VERSION}) -- " puts "#{start.strftime("%Y-%m-%d %H:%M:%S")}" end load_available_tryouts_files passed, failed = 0, 0 Tryouts.instances.each_pair do |group,tryouts_inst| puts '', ' %-80s'.att(:reverse) % group unless Tryouts.verbose < 0 puts " #{tryouts_inst.paths.join("\n ")}" if Tryouts.verbose > 0 tryouts_inst.tryouts.each_pair do |name,to| begin to.run to.report rescue SyntaxError, LoadError, Exception, TypeError, RuntimeError, NoMethodError, NameError => ex tryouts_inst.errors << ex end STDOUT.flush passed += to.passed failed += to.failed end unless tryouts_inst.errors.empty? title = '%-79s' % " RUNTIME ERRORS !?" puts $/, ' ' << title.color(:red).att(:reverse).bright tryouts_inst.errors.each do |ex| trace = Tryouts.verbose > 1 ? ex.backtrace : [ex.backtrace.first] puts '%14s: %s' % [ex.class, ex.message.to_s.split($/).join($/ + ' '*16)] puts puts '%14s %s' % ["", trace.join($/ + ' '*16)] puts end end end if Tryouts.verbose < 0 if (passed == 0 && failed == 0) exit -1 elsif failed == 0 && !Tryouts.failed? puts "PASS" exit 0 else puts "FAIL" exit 1 end else if Tryouts.verbose > 0 elapsed = Time.now - start puts $/, " Elapsed: %.3f seconds" % elapsed.to_f #if elapsed > 0.01 end if (passed == 0 && failed == 0) puts DEV if Tryouts.verbose > 4 msg = " You didn't even try to acheive your dreams :[ " puts $/, msg.att(:reverse) exit -1 elsif failed == 0 && !Tryouts.failed? puts PUG if Tryouts.verbose > 4 msg = passed > 1 ? "All %s dreams" : "Your only dream" msg = (" #{msg} came true " % [passed+failed]).color(:green) puts $/, msg.att(:reverse) exit 0 else puts BUG if Tryouts.verbose > 4 score = (passed.to_f / (passed.to_f+failed.to_f)) * 100 msg = " %s of %s dreams came true (%d%%) ".color(:red) msg = msg % [passed, passed+failed, score.to_i] puts $/, msg.att(:reverse) exit 1 end end end