Class: Evergreen::Runner::SpecRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/evergreen/runner.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(runner, spec) ⇒ SpecRunner

Returns a new instance of SpecRunner.


26
27
28
29
# File 'lib/evergreen/runner.rb', line 26

def initialize(runner, spec)
  @runner = runner
  @spec = spec
end

Instance Attribute Details

#runnerObject (readonly)

Returns the value of attribute runner


24
25
26
# File 'lib/evergreen/runner.rb', line 24

def runner
  @runner
end

#specObject (readonly)

Returns the value of attribute spec


24
25
26
# File 'lib/evergreen/runner.rb', line 24

def spec
  @spec
end

Instance Method Details

#dotsObject


77
78
79
# File 'lib/evergreen/runner.rb', line 77

def dots
  examples; ""
end

#examplesObject


46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/evergreen/runner.rb', line 46

def examples
  @results ||= begin
    session.visit(spec.url)

    previous_results = ""

    Evergreen.timeout(300) 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
  end
end

#failed_examplesObject


69
70
71
# File 'lib/evergreen/runner.rb', line 69

def failed_examples
  examples.select { |example| not example.passed? }
end

#failure_messagesObject


81
82
83
84
85
# File 'lib/evergreen/runner.rb', line 81

def failure_messages
  unless passed?
    examples.map { |example| example.failure_message }.compact.join("\n\n")
  end
end

#ioObject


35
36
37
# File 'lib/evergreen/runner.rb', line 35

def io
  runner.io
end

#passed?Boolean

Returns:

  • (Boolean)

73
74
75
# File 'lib/evergreen/runner.rb', line 73

def passed?
  examples.all? { |example| example.passed? }
end

#runObject


39
40
41
42
43
44
# File 'lib/evergreen/runner.rb', line 39

def run
  io.puts dots
  io.puts failure_messages
  io.puts "\n#{examples.size} examples, #{failed_examples.size} failures"
  passed?
end

#sessionObject


31
32
33
# File 'lib/evergreen/runner.rb', line 31

def session
  runner.session
end