From 0384bd597fee64c720e0cb56897a2a28e55ac239 Mon Sep 17 00:00:00 2001 From: Jonas Nicklas Date: Thu, 21 Oct 2010 21:05:39 +0200 Subject: [PATCH] Successively print out spec results --- lib/evergreen/resources/evergreen.js | 3 +++ lib/evergreen/runner.rb | 21 +++++++++++++++------ spec/spec_helper.rb | 5 +++-- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/lib/evergreen/resources/evergreen.js b/lib/evergreen/resources/evergreen.js index cce63e3..fe6f553 100644 --- a/lib/evergreen/resources/evergreen.js +++ b/lib/evergreen/resources/evergreen.js @@ -2,6 +2,8 @@ if(!this.JSON){this.JSON={};} var Evergreen = {}; +Evergreen.dots = "" + Evergreen.ReflectiveReporter = function() { this.reportRunnerStarting = function(runner) { Evergreen.results = []; @@ -15,6 +17,7 @@ Evergreen.ReflectiveReporter = function() { message: item.message, trace: item.trace }); + Evergreen.dots += (results.failedCount === 0) ? "." : "F"; }; this.reportRunnerResults = function(runner) { Evergreen.done = true; diff --git a/lib/evergreen/runner.rb b/lib/evergreen/runner.rb index 36d3be8..876373c 100644 --- a/lib/evergreen/runner.rb +++ b/lib/evergreen/runner.rb @@ -9,10 +9,6 @@ def passed? @row['passed'] end - def dot - if passed? then '.' else 'F' end - end - def failure_message unless passed? msg = [] @@ -50,7 +46,20 @@ def run def examples @results ||= begin session.visit(spec.url) - session.wait_until(180) { session.evaluate_script('Evergreen.done') } + + previous_results = "" + + session.wait_until(180) do + dots = session.evaluate_script('Evergreen.dots') + io.print dots.sub(/^#{Regexp.escape(previous_results)}/, '') + io.flush + previous_results = dots + session.evaluate_script('Evergreen.done') + end + + dots = session.evaluate_script('Evergreen.dots') + io.print dots.sub(/^#{Regexp.escape(previous_results)}/, '') + JSON.parse(session.evaluate_script('Evergreen.getResults()')).map do |row| Example.new(row) end @@ -66,7 +75,7 @@ def passed? end def dots - examples.map { |example| example.dot }.join + examples; "" end def failure_messages diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a8df928..373439b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -17,11 +17,12 @@ module EvergreenMatchers class PassSpec # :nodoc: def matches?(actual) @actual = actual - @actual.passed? + @runner = Evergreen::Runner.new(actual.suite, StringIO.new).spec_runner(@actual) + @runner.passed? end def failure_message - "expected #{@actual.name} to pass, but it failed with:\n\n#{@actual.failure_messages}" + "expected #{@actual.name} to pass, but it failed with:\n\n#{@runner.failure_messages}" end def negative_failure_message