lib/tryouts/cli/run.rb in tryouts-0.6.2 vs lib/tryouts/cli/run.rb in tryouts-0.6.3

- old
+ new

@@ -30,44 +30,86 @@ end # $ sergeant run [path/2/tryouts] # Executes all tryouts that can be found from the current working directory. def run + start = Time.now Tryouts.enable_debug if Drydock.debug? - Tryouts.verbose = @global.verbose + 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 - puts "#{Tryouts.sysinfo.to_s} (#{RUBY_VERSION})" if Tryouts.verbose > 0 - load_available_tryouts_files - + passed, failed = 0, 0 Tryouts.instances.each_pair do |group,tryouts_inst| - puts '', ' %-60s'.att(:reverse) % group + puts '', ' %-60s'.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| - to.run - to.report + begin + to.run + to.report + rescue SyntaxError, LoadError, Exception, + RuntimeError, NoMethodError, NameError => ex + tryouts_inst.errors << ex + end STDOUT.flush passed += to.passed failed += to.failed end + + unless tryouts_inst.errors.empty? + title = '%-61s' % " RUNTIME ERRORS !?" + puts $/, title.color(:red).att(:reverse).bright + tryouts_inst.errors.each do |ex| + trace = Tryouts.verbose > 0 ? ex.backtrace : [ex.backtrace.first] + puts '%12s: %s (%s)' % ["error", ex.message.inspect, ex.class] + puts '%12s: %s' % ["trace", trace.join($/ + ' '*14)] + puts + end + end end - unless @global.quiet + + 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 :[ " - elsif failed == 0 + 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 - puts $/, msg.att(:reverse) + end end # $ sergeant list # Displays all known tryouts from the current working directory