yarjuf 1.0.3 → 1.0.4
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 +8 -1
- data/lib/yarjuf.rb +38 -28
- metadata +2 -2
data/HISTORY.txt
CHANGED
data/lib/yarjuf.rb
CHANGED
@@ -3,6 +3,9 @@ require 'builder'
|
|
3
3
|
require 'rspec/core/formatters/base_formatter'
|
4
4
|
|
5
5
|
class JUnit < RSpec::Core::Formatters::BaseFormatter
|
6
|
+
|
7
|
+
#rspec formatter methods we care about
|
8
|
+
|
6
9
|
def initialize(output)
|
7
10
|
super output
|
8
11
|
@test_suite_results = {}
|
@@ -20,6 +23,14 @@ class JUnit < RSpec::Core::Formatters::BaseFormatter
|
|
20
23
|
add_to_test_suite_results(example)
|
21
24
|
end
|
22
25
|
|
26
|
+
def dump_summary(duration, example_count, failure_count, pending_count)
|
27
|
+
builder = Builder::XmlMarkup.new :indent => 2
|
28
|
+
build_results builder, duration, example_count, failure_count, pending_count
|
29
|
+
output.puts builder.target!
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
23
34
|
def add_to_test_suite_results(example)
|
24
35
|
suite_name = root_group_name_for(example)
|
25
36
|
@test_suite_results[suite_name] = [] unless @test_suite_results.keys.include?(suite_name)
|
@@ -27,17 +38,13 @@ class JUnit < RSpec::Core::Formatters::BaseFormatter
|
|
27
38
|
end
|
28
39
|
|
29
40
|
def root_group_name_for(example)
|
30
|
-
group_hierarchy_for(example).first[:description]
|
31
|
-
end
|
32
|
-
|
33
|
-
def group_hierarchy_for(example)
|
34
41
|
group_hierarchy = []
|
35
42
|
current_example_group = example.metadata[:example_group]
|
36
43
|
until current_example_group.nil? do
|
37
44
|
group_hierarchy.unshift current_example_group
|
38
45
|
current_example_group = current_example_group[:example_group]
|
39
46
|
end
|
40
|
-
group_hierarchy
|
47
|
+
group_hierarchy.first[:description]
|
41
48
|
end
|
42
49
|
|
43
50
|
def failure_details_for(example)
|
@@ -45,36 +52,39 @@ class JUnit < RSpec::Core::Formatters::BaseFormatter
|
|
45
52
|
exception.nil? ? "" : "#{exception.message}\n#{format_backtrace(exception.backtrace, example).join("\n")}"
|
46
53
|
end
|
47
54
|
|
48
|
-
def
|
49
|
-
suite.select {|example| example.metadata[:execution_result][:status] ==
|
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
|
50
57
|
end
|
51
58
|
|
52
|
-
|
53
|
-
suite.select {|example| example.metadata[:execution_result][:status] == "pending"}.size
|
54
|
-
end
|
59
|
+
#methods to build the xml for test suites and individual tests
|
55
60
|
|
56
|
-
def
|
57
|
-
builder = Builder::XmlMarkup.new :indent => 2
|
61
|
+
def build_results(builder, duration, example_count, failure_count, pending_count)
|
58
62
|
builder.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
|
59
63
|
builder.testsuites :errors => 0, :failures => failure_count, :skipped => pending_count, :tests => example_count, :time => duration, :timestamp => Time.now.iso8601 do
|
60
|
-
@test_suite_results.each
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
64
|
+
@test_suite_results.each {|suite_name, tests| build_test_suite builder, suite_name, tests}
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def build_test_suite(builder, suite_name, tests)
|
69
|
+
builder.testsuite :name => suite_name, :tests => tests.size, :errors => 0, :failures => count_in_suite_of_type(tests, "failed"), :skipped => count_in_suite_of_type(tests, "pending") do
|
70
|
+
builder.properties
|
71
|
+
tests.each {|test| build_test builder, test}
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def build_test(builder, test)
|
76
|
+
builder.testcase :name => test.metadata[:full_description], :time => test.metadata[:execution_result][:run_time] do
|
77
|
+
case test.metadata[:execution_result][:status]
|
78
|
+
when "pending" then builder.skipped
|
79
|
+
when "failed" then build_failed_test builder, test
|
75
80
|
end
|
76
81
|
end
|
77
|
-
|
82
|
+
end
|
83
|
+
|
84
|
+
def build_failed_test(builder, test)
|
85
|
+
builder.failure :message => "failed #{test.metadata[:full_description]}", :type => "failed" do
|
86
|
+
builder.cdata! failure_details_for test
|
87
|
+
end
|
78
88
|
end
|
79
89
|
end
|
80
90
|
|
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.4
|
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: 2012-12-
|
12
|
+
date: 2012-12-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|