class Jasmine::RspecFormatter

Public Instance Methods

declare_spec(parent, spec) click to toggle source
# File lib/jasmine/rspec_formatter.rb, line 32
def declare_spec(parent, spec)
  me = self
  example_name = spec["name"]
  backtrace = @results.example_location_for(parent.description + " " + example_name)
  if Jasmine::Dependencies.rspec2?
    parent.it example_name, {} do
      me.report_spec(spec["id"])
    end
  else
    parent.it example_name, {}, backtrace do
      me.report_spec(spec["id"])
    end
  end
end
declare_suites(suites) click to toggle source
# File lib/jasmine/rspec_formatter.rb, line 11
def declare_suites(suites)
  suites.each do |suite|
    #empty block for rspec 1
    group = example_group(suite["name"]) {}
    process_children(group, suite["children"])
  end
end
format_results(results) click to toggle source
# File lib/jasmine/rspec_formatter.rb, line 6
def format_results(results)
  @results = results
  declare_suites(@results.suites)
end
process_children(parent, children) click to toggle source
# File lib/jasmine/rspec_formatter.rb, line 19
def process_children(parent, children)
  children.each do |suite_or_spec|
    type = suite_or_spec["type"]
    if type == "suite"
      process_children(parent.describe(suite_or_spec["name"]), suite_or_spec["children"])
    elsif type == "spec"
      declare_spec(parent, suite_or_spec)
    else
      raise "unknown type #{type} for #{suite_or_spec.inspect}"
    end
  end
end
report_spec(spec_id) click to toggle source
# File lib/jasmine/rspec_formatter.rb, line 47
def report_spec(spec_id)
  spec_results = results_for(spec_id)
  out = ""
  messages = spec_results['messages'].each do |message|
    case
    when message["type"] == "log"
      puts message["text"]
      puts "\n"
    else
      unless message["message"] =~ /^Passed.$/
        STDERR << message["message"]
        STDERR << "\n"

        out << message["message"]
        out << "\n"
      end

      if !message["passed"] && message["trace"]["stack"]
        stack_trace = message["trace"]["stack"].gsub(/<br \/>/, "\n").gsub(/<\/?b>/, " ")
        STDERR << stack_trace.gsub(/\(.*\)@http:\/\/localhost:[0-9]+\/specs\//, "/spec/")
        STDERR << "\n"
      end
    end

  end
  fail out unless spec_results['result'] == 'passed'
  puts out unless out.empty?
end

Private Instance Methods

example_group(*args, &block) click to toggle source
# File lib/jasmine/rspec_formatter.rb, line 78
def example_group(*args, &block)
  if Jasmine::Dependencies.rspec2?
    RSpec::Core::ExampleGroup.describe(*args, &block).register
  else
    Spec::Example::ExampleGroupFactory.create_example_group(*args, &block)
  end
end
results_for(spec_id) click to toggle source
# File lib/jasmine/rspec_formatter.rb, line 86
def results_for(spec_id)
  @results.for_spec_id(spec_id.to_s)
end