Class: Testa::Reporter

Inherits:
Object
  • Object
show all
Defined in:
lib/testa.rb

Overview

Reporter object print out test result. It should have the following methods:

#after_each(result)
#after_all(results)

Constant Summary collapse

CHARS =
{:passed => ".",
:failed => "F",
:error  => "E",
:todo   => "*"}

Instance Method Summary collapse

Constructor Details

#initialize(out = nil) ⇒ Reporter



108
109
110
111
112
113
114
# File 'lib/testa.rb', line 108

def initialize(out=nil)
  @out = out || $stdout
  @stat = {:passed => 0,
           :failed => 0,
           :error  => 0,
           :todo   => 0}
end

Instance Method Details

#after_all(results) ⇒ Object



122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/testa.rb', line 122

def after_all(results)
  @out.puts

  results.each {|result|
    case result.status
    when :failed, :error
      @out.puts
      @out.puts "[#{result.status.upcase}] #{result.test.location}",
        (result.test.description || "*NO DESCRIPTION*")
      @out.puts "\t#{result.exception.message}"
      @out.puts result.exception.backtrace.reject {|m| m[__FILE__] }

    when :todo
      @out.puts
      @out.puts "[#{result.status.upcase}] #{result.test.location}",
        result.test.description || "*NO DESCRIPTION*"
    end
  }

  @out.puts
  @out.puts "  PASSED: #{@stat[:passed]}"
  @out.puts "  FAILED: #{@stat[:failed]}"
  @out.puts "   ERROR: #{@stat[:error]}"
  @out.puts "    TODO: #{@stat[:todo]}"
  @out.puts "   TOTAL: #{@stat.values.inject(:+)}"
  @out.puts
end

#after_each(result) ⇒ Object



116
117
118
119
120
# File 'lib/testa.rb', line 116

def after_each(result)
  return unless result
  @stat[result.status] += 1
  @out.print CHARS[result.status]
end