yarjuf 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/HISTORY.txt +4 -0
- data/lib/yarjuf.rb +58 -34
- metadata +2 -2
data/HISTORY.txt
CHANGED
data/lib/yarjuf.rb
CHANGED
@@ -2,6 +2,7 @@ require 'time'
|
|
2
2
|
require 'builder'
|
3
3
|
require 'rspec/core/formatters/base_formatter'
|
4
4
|
|
5
|
+
#An RSpec formatter for generating results in JUnit format
|
5
6
|
class JUnit < RSpec::Core::Formatters::BaseFormatter
|
6
7
|
|
7
8
|
#rspec formatter methods we care about
|
@@ -9,35 +10,46 @@ class JUnit < RSpec::Core::Formatters::BaseFormatter
|
|
9
10
|
def initialize(output)
|
10
11
|
super output
|
11
12
|
@test_suite_results = {}
|
13
|
+
@builder = Builder::XmlMarkup.new :indent => 2
|
12
14
|
end
|
13
15
|
|
14
16
|
def example_passed(example)
|
15
|
-
add_to_test_suite_results
|
17
|
+
add_to_test_suite_results example
|
16
18
|
end
|
17
19
|
|
18
20
|
def example_failed(example)
|
19
|
-
add_to_test_suite_results
|
21
|
+
add_to_test_suite_results example
|
20
22
|
end
|
21
23
|
|
22
24
|
def example_pending(example)
|
23
|
-
add_to_test_suite_results
|
25
|
+
add_to_test_suite_results example
|
24
26
|
end
|
25
27
|
|
26
28
|
def dump_summary(duration, example_count, failure_count, pending_count)
|
27
|
-
|
28
|
-
|
29
|
-
output.puts builder.target!
|
29
|
+
build_results duration, example_count, failure_count, pending_count
|
30
|
+
output.puts @builder.target!
|
30
31
|
end
|
31
32
|
|
32
33
|
protected
|
33
34
|
|
34
35
|
def add_to_test_suite_results(example)
|
35
|
-
suite_name = root_group_name_for
|
36
|
-
@test_suite_results[suite_name] = [] unless @test_suite_results.keys.include?
|
36
|
+
suite_name = JUnit.root_group_name_for example
|
37
|
+
@test_suite_results[suite_name] = [] unless @test_suite_results.keys.include? suite_name
|
37
38
|
@test_suite_results[suite_name] << example
|
38
39
|
end
|
39
40
|
|
40
|
-
def
|
41
|
+
def failure_details_for(example)
|
42
|
+
exception = example.metadata[:execution_result][:exception]
|
43
|
+
exception.nil? ? "" : "#{exception.message}\n#{format_backtrace(exception.backtrace, example).join("\n")}"
|
44
|
+
end
|
45
|
+
|
46
|
+
#utility methods
|
47
|
+
|
48
|
+
def self.count_in_suite_of_type(suite, test_case_result_type)
|
49
|
+
suite.select {|example| example.metadata[:execution_result][:status] == test_case_result_type}.size
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.root_group_name_for(example)
|
41
53
|
group_hierarchy = []
|
42
54
|
current_example_group = example.metadata[:example_group]
|
43
55
|
until current_example_group.nil? do
|
@@ -47,43 +59,55 @@ class JUnit < RSpec::Core::Formatters::BaseFormatter
|
|
47
59
|
group_hierarchy.first[:description]
|
48
60
|
end
|
49
61
|
|
50
|
-
def failure_details_for(example)
|
51
|
-
exception = example.metadata[:execution_result][:exception]
|
52
|
-
exception.nil? ? "" : "#{exception.message}\n#{format_backtrace(exception.backtrace, example).join("\n")}"
|
53
|
-
end
|
54
|
-
|
55
|
-
def count_in_suite_of_type(suite, test_case_result_type)
|
56
|
-
suite.select {|example| example.metadata[:execution_result][:status] == test_case_result_type}.size
|
57
|
-
end
|
58
|
-
|
59
62
|
#methods to build the xml for test suites and individual tests
|
60
63
|
|
61
|
-
def build_results(
|
62
|
-
builder.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
|
63
|
-
builder.testsuites :errors => 0, :failures => failure_count, :skipped => pending_count, :tests => example_count, :time => duration, :timestamp => Time.now.iso8601 do
|
64
|
-
|
64
|
+
def build_results(duration, example_count, failure_count, pending_count)
|
65
|
+
@builder.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
|
66
|
+
@builder.testsuites :errors => 0, :failures => failure_count, :skipped => pending_count, :tests => example_count, :time => duration, :timestamp => Time.now.iso8601 do
|
67
|
+
build_all_suites
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def build_all_suites
|
72
|
+
@test_suite_results.each do |suite_name, tests|
|
73
|
+
build_test_suite suite_name, tests
|
65
74
|
end
|
66
75
|
end
|
67
76
|
|
68
|
-
def build_test_suite(
|
69
|
-
|
70
|
-
|
71
|
-
|
77
|
+
def build_test_suite(suite_name, tests)
|
78
|
+
failure_count = JUnit.count_in_suite_of_type tests, "failed"
|
79
|
+
skipped_count = JUnit.count_in_suite_of_type tests, "pending"
|
80
|
+
|
81
|
+
@builder.testsuite :name => suite_name, :tests => tests.size, :errors => 0, :failures => failure_count, :skipped => skipped_count do
|
82
|
+
@builder.properties
|
83
|
+
build_all_tests tests
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def build_all_tests(tests)
|
88
|
+
tests.each do |test|
|
89
|
+
build_test test
|
72
90
|
end
|
73
91
|
end
|
74
92
|
|
75
|
-
def build_test(
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
93
|
+
def build_test(test)
|
94
|
+
test_name = test.metadata[:full_description]
|
95
|
+
execution_time = test.metadata[:execution_result][:run_time]
|
96
|
+
test_status = test.metadata[:execution_result][:status]
|
97
|
+
|
98
|
+
@builder.testcase :name => test_name, :time => execution_time do
|
99
|
+
case test_status
|
100
|
+
when "pending" then @builder.skipped
|
101
|
+
when "failed" then build_failed_test test
|
80
102
|
end
|
81
103
|
end
|
82
104
|
end
|
83
105
|
|
84
|
-
def build_failed_test(
|
85
|
-
|
86
|
-
|
106
|
+
def build_failed_test(test)
|
107
|
+
failure_message = "failed #{test.metadata[:full_description]}"
|
108
|
+
|
109
|
+
@builder.failure :message => failure_message, :type => "failed" do
|
110
|
+
@builder.cdata! failure_details_for test
|
87
111
|
end
|
88
112
|
end
|
89
113
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yarjuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|