Class: RSpecSystem::Formatter

Inherits:
RSpec::Core::Formatters::BaseTextFormatter
  • Object
show all
Defined in:
lib/rspec-system/formatter.rb

Overview

This custom formatter is designed for rspec-system test presentation

Because rspec-system tests are often wordier and require lots of diagnostic information to be enabled for future debugging, the traditional document and progress formatters just simply aren’t sufficient.

This formatter instead treats each test as a document section, splitting up the output with obvious breaks so the user can clearly see when a test has started and finished. It also attempts to use color for visibility as well as listing test case information in a more verbose way.

Instance Method Summary collapse

Constructor Details

#initialize(output) ⇒ Formatter

Initialize formatter



16
17
18
# File 'lib/rspec-system/formatter.rb', line 16

def initialize(output)
  super(output)
end

Instance Method Details

#example_failed(example) ⇒ void

This method returns an undefined value.

Display output when an example has failed

Parameters:

  • example (RSpec::Core::Example)

    example that is running



69
70
71
72
73
74
75
# File 'lib/rspec-system/formatter.rb', line 69

def example_failed(example)
  super(example)
  msg = example.execution_result[:exception]
  output << "\n" << bold('Result: ') << failure_color('failed') << "\n"
  output << bold("Reason:\n") << "#{msg}\n\n"
  output << "=end=============================================================\n\n"
end

#example_passed(example) ⇒ void

This method returns an undefined value.

Display output when an example has passed

Parameters:

  • example (RSpec::Core::Example)

    example that is running



47
48
49
50
51
# File 'lib/rspec-system/formatter.rb', line 47

def example_passed(example)
  super(example)
  output << "\n" << bold('Result: ') << success_color('passed') << "\n\n"
  output << "=end=============================================================\n\n"
end

#example_pending(example) ⇒ void

This method returns an undefined value.

Display output when an example is pending

Parameters:

  • example (RSpec::Core::Example)

    example that is running



57
58
59
60
61
62
63
# File 'lib/rspec-system/formatter.rb', line 57

def example_pending(example)
  super(example)
  msg = example.execution_result[:pending_message]
  output << "\n" << bold('Result: ') << pending_color('pending') << "\n"
  output << bold("Reason: ") << "#{msg}\n\n"
  output << "=end=============================================================\n\n"
end

#example_started(example) ⇒ void

This method returns an undefined value.

Display output when an example has started

Parameters:

  • example (RSpec::Core::Example)

    example that is running



36
37
38
39
40
41
# File 'lib/rspec-system/formatter.rb', line 36

def example_started(example)
  super(example)
  output << "\n=begin===========================================================\n\n"
  output << bold("Running test: ") << "#{next_index} of #{@max_tests}" << "\n"
  output << bold("Description:\n  ") << color(example.full_description, :magenta) << "\n\n"
end

#next_indexFixnum

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Obtains next index value so we can keep a count of what test we are upto

Returns:

  • (Fixnum)

    index #



81
82
83
84
# File 'lib/rspec-system/formatter.rb', line 81

def next_index
  @next_index ||= 0
  @next_index += 1
end

#start(count) ⇒ void

This method returns an undefined value.

Display test start information

Parameters:

  • count (Fixnum)

    number of tests to run



24
25
26
27
28
29
30
# File 'lib/rspec-system/formatter.rb', line 24

def start(count)
  @max_tests = count
  super(count)
  output << "\n"
  output << bold("Commencing rspec-system tests\n")
  output << bold("Total Test Count: ") << color(count, :cyan) << "\n\n"
end