Class Expectations::SuiteResults
In: lib/expectations/suite_results.rb
Parent: Object

Methods

Attributes

expectations  [RW] 
out  [RW] 

Public Class methods

[Source]

   # File lib/expectations/suite_results.rb, line 4
4:   def initialize(out)
5:     self.out, self.expectations = out, []
6:     out.print "Expectations "
7:   end

Public Instance methods

[Source]

    # File lib/expectations/suite_results.rb, line 9
 9:   def <<(expectation_result)
10:     out.print expectation_result.char
11:     self.expectations << expectation_result
12:     self
13:   end

[Source]

    # File lib/expectations/suite_results.rb, line 23
23:   def errors
24:     expectations.select { |expectation| expectation.error? }
25:   end

[Source]

    # File lib/expectations/suite_results.rb, line 27
27:   def failures
28:     expectations.select { |expectation| expectation.failure? }
29:   end

[Source]

    # File lib/expectations/suite_results.rb, line 85
85:   def filter_backtrace(trace)
86:     patterns_to_strip = [/\/expectations\/lib\/expectations\//, /\/lib\/ruby\/1\.8\//]
87:     result = patterns_to_strip.inject(trace) do |result, element|
88:       result = result.select { |line| line !~ element}
89:     end
90:     result.collect do |line|
91:       "\n  #{line}"
92:     end
93:   end

[Source]

    # File lib/expectations/suite_results.rb, line 19
19:   def fulfilled
20:     expectations.select { |expectation| expectation.fulfilled? }
21:   end

[Source]

    # File lib/expectations/suite_results.rb, line 31
31:   def print_results(benchmark)
32:     run_time = benchmark.real
33:     run_time = 0.001 if run_time < 0.001
34:     out.puts "\nFinished in #{run_time.to_s.gsub(/(\d*)\.(\d{0,5}).*/,'\1.\2')} seconds"
35:     if succeeded?
36:       out.puts "\nSuccess: #{fulfilled.size} fulfilled"
37:     else
38:       out.puts "\nFailure: #{failures.size} failed, #{errors.size} errors, #{fulfilled.size} fulfilled"
39:       out.puts "\n--Errors--" if errors.any?
40:       errors.each do |error|
41:         out.puts " #{error.file}:#{error.line}:in `expect'" if ENV["TM_MODE"]
42:         out.puts "file <#{error.file}>"
43:         out.puts "line <#{error.line}>"
44:         out.puts "error <#{error.exception.message}>"
45:         out.puts "trace #{filter_backtrace(error.exception.backtrace)}"
46:         out.puts "#{error.message}" if error.message && error.message.any?
47:         out.puts "\n"
48:       end
49:       out.puts "\n--Failures--" if failures.any?
50:       failures.each do |failure|
51:         out.puts " #{failure.file}:#{failure.line}:in `expect'" if ENV["TM_MODE"]
52:         out.puts "file <#{failure.file}>"
53:         out.puts "line <#{failure.line}>"
54:         out.puts "#{failure.message}\n\n"
55:       end
56:     end
57:   end

[Source]

    # File lib/expectations/suite_results.rb, line 15
15:   def succeeded?
16:     expectations.all? { |expectation| expectation.fulfilled? }
17:   end

[Source]

    # File lib/expectations/suite_results.rb, line 59
59:   def write_junit_xml(path)
60:     FileUtils.rm_rf path if File.exist?(path)
61:     FileUtils.mkdir_p path
62:     grouped_expectations = expectations.inject({}) do |result, expectation| 
63:       result[expectation.file] = [] if result[expectation.file].nil?
64:       result[expectation.file] << expectation
65:       result
66:     end
67:     grouped_expectations.keys.each do |file_name|
68:       class_name = "#{File.basename(file_name, ".rb")}.xml"
69:       File.open("#{path}/TEST-#{class_name}", "w") do |file|
70:         file << '<?xml version="1.0" encoding="UTF-8" ?>'
71:         grouped_fulfilled = grouped_expectations[file_name].select { |expectation| expectation.fulfilled? }
72:         grouped_errors = grouped_expectations[file_name].select { |expectation| expectation.error? }
73:         grouped_failures = grouped_expectations[file_name].select { |expectation| expectation.failure? }
74:         file << %[<testsuite errors="#{grouped_errors.size}" skipped="0" tests="#{grouped_expectations[file_name].size}" time="0.00" failures="#{grouped_failures.size}" name="#{class_name}">]
75:         grouped_expectations[file_name].each do |expectation|
76:           file << %[<testcase time="0.0" name="line:#{expectation.line}">]
77:           file << %[<failure type="java.lang.AssertionError" message="#{ERB::Util.h(expectation.message)}"/>] if expectation.failure?
78:           file << %[</testcase>]
79:         end
80:         file << %[</testsuite>]
81:       end
82:     end
83:   end

[Validate]