class BladeRunner::TestResults

Attributes

failures[R]
lines[R]
passes[R]
session_id[R]
status[R]

Public Class Methods

new(session_id) click to toggle source
# File lib/blade_runner/test_results.rb, line 4
def initialize(session_id)
  @session_id = session_id
  reset

  BR.subscribe("/tests") do |details|
    if details["session_id"] == session_id
      process_test_result(details)
    end
  end
end

Public Instance Methods

process_test_result(details) click to toggle source
# File lib/blade_runner/test_results.rb, line 24
def process_test_result(details)
  publication = {}

  case details["event"]
  when "begin"
    reset
    @status = "running"
    @total = details["total"]
    @lines << publication[:line] = "1..#{@total}"
  when "result"
    pass = details["result"]
    args = details.values_at("name", "message")

    if pass
      line = Pass.new(*args).to_s
      @passes << line
    else
      line = Failure.new(*args).to_s
      @failures << line
      @status = "failing"
    end
    @lines << line

    publication.merge!(line: line, pass: pass)
  when "end"
    @status = failures.any? ? "failed" : "finished"
    @completed = true
  end

  publication.merge!(status: status, session_id: session_id, completed: @completed)
  BR.publish("/results", publication)
end
reset() click to toggle source
# File lib/blade_runner/test_results.rb, line 15
def reset
  @lines = []
  @passes = []
  @failures = []
  @completed = false
  @status = "pending"
  @total = nil
end
to_s() click to toggle source
# File lib/blade_runner/test_results.rb, line 65
def to_s
  lines.join("\n") + "\n"
end
total() click to toggle source
# File lib/blade_runner/test_results.rb, line 57
def total
  if @total
    @total
  elsif @completed
    passes.size + failures.size
  end
end