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