Module: Qspec::Formatters::RedisFormatterFactory

Defined in:
lib/qspec/formatters/redis_formatter.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build(id, file) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/qspec/formatters/redis_formatter.rb', line 6

def self.build(id, file)
  Class.new(RSpec::Core::Formatters::BaseFormatter) do
    @@id = id
    @@file = file
    include RedisFormatterFactory
  end
end

Instance Method Details

#dump_failuresObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/qspec/formatters/redis_formatter.rb', line 19

def dump_failures
  failed_examples.each do |example|
    ex = example.execution_result[:exception]
    data = {
      description: example.full_description,
      exception: format_exception(example, ex),
      backtrace: format_backtrace(ex.backtrace, example)
    }
    @ipc.rpush("failure_#{@@id}", Marshal.dump(data))
  end
end

#dump_summary(duration, example_count, failure_count, pending_count) ⇒ Object



31
32
33
34
# File 'lib/qspec/formatters/redis_formatter.rb', line 31

def dump_summary(duration, example_count, failure_count, pending_count)
  data = [@@file, duration, example_count, failure_count, pending_count]
  @ipc.rpush("stat_#{@@id}", Marshal.dump(data))
end

#format_exception(example, ex) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/qspec/formatters/redis_formatter.rb', line 36

def format_exception(example, ex)
  exception_class_name = ex.class.to_s
  output = StringIO.new
  output.puts "* #{example.full_description}"
  output.puts "\tFailure/Error: #{read_failed_line(ex, example)}"
  output.puts "\t#{exception_class_name}:" unless exception_class_name =~ /RSpec/
  ex.message.to_s.split("\n").each { |line| output.puts "\t  #{line}" } if ex.message
  output.string
end

#initialize(output) ⇒ Object



14
15
16
17
# File 'lib/qspec/formatters/redis_formatter.rb', line 14

def initialize(output)
  @ipc = IPC.default
  super
end