Class: RSpec::Hermetic::Formatter

Inherits:
Object
  • Object
show all
Defined in:
lib/rspec/hermetic/formatter.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.forensic_message(example, changes, last_writers) ⇒ Object



12
13
14
# File 'lib/rspec/hermetic/formatter.rb', line 12

def self.forensic_message(example, changes, last_writers)
  new.forensic_message(example, changes, last_writers)
end

.pollution_message(example, result, change_set) ⇒ Object



8
9
10
# File 'lib/rspec/hermetic/formatter.rb', line 8

def self.pollution_message(example, result, change_set)
  new.pollution_message(example, result, change_set)
end

.probe_error_message(example, change_set) ⇒ Object



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

def self.probe_error_message(example, change_set)
  new.probe_error_message(example, change_set)
end

Instance Method Details

#forensic_message(example, changes, last_writers) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/rspec/hermetic/formatter.rb', line 30

def forensic_message(example, changes, last_writers)
  lines = ["VICTIM    #{example_location(example)} started with dirty shared state"]
  changes.each do |change|
    writer = last_writers[[change.probe, change.key]]
    suffix = writer ? "  (last changed by #{writer})" : ""
    lines << "  #{format_change(change)}#{suffix}"
  end
  lines.join("\n")
end

#pollution_message(example, result, change_set) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/rspec/hermetic/formatter.rb', line 20

def pollution_message(example, result, change_set)
  lines = ["POLLUTER  #{example_location(example)}"]
  result.pollutions.each { |change| lines << "  #{format_change(change)}" }
  result.warnings.each { |change| lines << "  #{format_change(change)}  (append-only warning)" }
  append_probe_errors(lines, change_set)
  append_timings(lines, change_set)
  lines << "  hint: this example left shared state changed for later examples"
  lines.join("\n")
end

#probe_error_message(example, change_set) ⇒ Object



40
41
42
43
44
45
# File 'lib/rspec/hermetic/formatter.rb', line 40

def probe_error_message(example, change_set)
  lines = ["HERMETIC PROBE ERROR  #{example_location(example)}"]
  append_probe_errors(lines, change_set)
  append_timings(lines, change_set)
  lines.join("\n")
end