lib/konacha/runner.rb in konacha-1.5.1 vs lib/konacha/runner.rb in konacha-2.0.0.beta1

- old
+ new

@@ -5,34 +5,50 @@ class Runner def self.start new.run end - attr_reader :io + attr_reader :io, :examples def initialize(options = {}) @io = options[:output] || STDOUT end def run before = Time.now - spec_runners.each { |spec_runner| spec_runner.run } # prints dots + begin + session.visit("/") + + dots_printed = 0 + begin + sleep 0.1 + done, dots = session.evaluate_script('[Konacha.done, Konacha.dots]') + if dots + io.write colorize_dots(dots[dots_printed..-1]) + io.flush + dots_printed = dots.length + end + end until done + + @examples = JSON.parse(session.evaluate_script('Konacha.getResults()')).map do |row| + Example.new(row) + end + rescue => e + raise e, "Error communicating with browser process: #{e}", e.backtrace + end + io.puts "" io.puts "" failure_messages.each { |msg| io.write("#{msg}\n\n") } seconds = "%.2f" % (Time.now - before) io.puts "Finished in #{seconds} seconds" io.puts "#{examples.size} examples, #{failed_examples.size} failures, #{pending_examples.size} pending" passed? end - def examples - spec_runners.map { |spec_runner| spec_runner.examples }.flatten - end - def pending_examples examples.select { |example| example.pending? } end def failed_examples @@ -49,31 +65,10 @@ def session @session ||= Capybara::Session.new(Konacha.driver, Konacha.application) end - def spec_runners - @spec_runners ||= Konacha::Spec.all.map { |spec| SpecRunner.new(self, spec) } - end - end - - class SpecRunner - attr_reader :runner, :spec, :examples - - def initialize(runner, spec) - @runner = runner - @spec = spec - end - - def session - runner.session - end - - def io - runner.io - end - def colorize_dots(dots) dots = dots.chars.map do |d| case d when 'E', 'F'; d.red when 'P'; d.yellow @@ -81,31 +76,10 @@ else; d end end dots.join '' end - - def run - session.visit(spec.url) - - dots_printed = 0 - begin - sleep 0.1 - done, dots = session.evaluate_script('[Konacha.done, Konacha.dots]') - if dots - io.write colorize_dots(dots[dots_printed..-1]) - io.flush - dots_printed = dots.length - end - end until done - - @examples = JSON.parse(session.evaluate_script('Konacha.getResults()')).map do |row| - Example.new(row) - end - rescue => e - raise e, "Error communicating with browser process: #{e}", e.backtrace - end end class Example def initialize(row) @row = row @@ -131,17 +105,8 @@ msg << " in #{@row['trace']['fileName']}:#{@row['trace']['lineNumber']}" if @row['trace'] msg.join("\n").red elsif pending? " Pending: #{@row['name']}".yellow end - end - end - - class Error < StandardError - attr_accessor :original - - def initialize(msg, original=nil); - super(msg); - @original = original; end end end