| Class | Expectations::SuiteResults |
| In: |
lib/expectations/suite_results.rb
|
| Parent: | Object |
| expectations | [RW] | |
| out | [RW] |
# File lib/expectations/suite_results.rb, line 4 4: def initialize(out) 5: self.out, self.expectations = out, [] 6: out.print "Expectations " 7: end
# 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
# File lib/expectations/suite_results.rb, line 23
23: def errors
24: expectations.select { |expectation| expectation.error? }
25: end
# File lib/expectations/suite_results.rb, line 27
27: def failures
28: expectations.select { |expectation| expectation.failure? }
29: end
# 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
# File lib/expectations/suite_results.rb, line 19
19: def fulfilled
20: expectations.select { |expectation| expectation.fulfilled? }
21: end
# 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
# File lib/expectations/suite_results.rb, line 15
15: def succeeded?
16: expectations.all? { |expectation| expectation.fulfilled? }
17: end
# 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