jasmine_junitxml_formatter 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74ea953e808ffa3eaf7adc0e8fd7e4ad872a6f48
|
4
|
+
data.tar.gz: ec49d74c850a98ddac1784422a846e2c9a95f306
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab473edbef2b69ca95e6d6613be1ce3cacd6b81bcf5331cbcf7e1093ff184dabb0d86d1e5bdded8ebcde8fafbf5237638635bce951436a62f871328c98fc8807
|
7
|
+
data.tar.gz: 541198a2fc2ebf1543b8113be98703542e187267726fa800a170679ca02fa619e5cea2b188efafe9c6eb5fe1a2c41e72f58b75c68ed4822058b3bbbc2b97b6d6
|
@@ -4,7 +4,7 @@ module Jasmine
|
|
4
4
|
module Formatters
|
5
5
|
class JunitXml
|
6
6
|
def initialize
|
7
|
-
load_config
|
7
|
+
load_config ENV['JASMINE_JUNIT_XML_CONFIG_PATH']
|
8
8
|
@doc = Nokogiri::XML '<testsuites></testsuites>', nil, 'UTF-8'
|
9
9
|
end
|
10
10
|
|
@@ -37,6 +37,7 @@ module Jasmine
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def done
|
40
|
+
FileUtils.mkdir_p(output_dir)
|
40
41
|
File.open(File.join(output_dir, 'junit_results.xml'), 'w') do |file|
|
41
42
|
file.puts doc.to_xml(indent: 2)
|
42
43
|
end
|
@@ -49,8 +50,8 @@ module Jasmine
|
|
49
50
|
config['junit_xml_path'] || Dir.pwd
|
50
51
|
end
|
51
52
|
|
52
|
-
def load_config
|
53
|
-
filepath
|
53
|
+
def load_config(filepath=nil)
|
54
|
+
filepath ||= File.join(Dir.pwd, 'spec', 'javascripts', 'support', 'jasmine_junitxml_formatter.yml')
|
54
55
|
@config = YAML::load(ERB.new(File.read(filepath)).result(binding)) if File.exist?(filepath)
|
55
56
|
@config ||= {}
|
56
57
|
end
|
@@ -17,11 +17,15 @@ describe Jasmine::Formatters::JunitXml do
|
|
17
17
|
|
18
18
|
let(:file_stub) { FakeFile.new }
|
19
19
|
|
20
|
+
before do
|
21
|
+
allow(FileUtils).to receive(:mkdir_p)
|
22
|
+
end
|
23
|
+
|
20
24
|
describe 'creating the xml' do
|
21
25
|
before do
|
22
|
-
Dir.
|
23
|
-
File.
|
24
|
-
File.
|
26
|
+
allow(Dir).to receive(:pwd).and_return('/junit_path')
|
27
|
+
allow(File).to receive(:open).and_call_original
|
28
|
+
allow(File).to receive(:open).with('/junit_path/junit_results.xml', 'w').and_yield(file_stub)
|
25
29
|
end
|
26
30
|
|
27
31
|
describe 'when the full suite passes' do
|
@@ -34,12 +38,12 @@ describe Jasmine::Formatters::JunitXml do
|
|
34
38
|
xml = Nokogiri::XML(file_stub.content)
|
35
39
|
|
36
40
|
testsuite = xml.xpath('/testsuites/testsuite').first
|
37
|
-
testsuite['tests'].
|
38
|
-
testsuite['failures'].
|
39
|
-
testsuite['name'].
|
41
|
+
expect(testsuite['tests']).to eq '1'
|
42
|
+
expect(testsuite['failures']).to eq '0'
|
43
|
+
expect(testsuite['name']).to eq 'Passing'
|
40
44
|
|
41
|
-
xml.xpath('//testcase').size.
|
42
|
-
xml.xpath('//testcase').first['name'].
|
45
|
+
expect(xml.xpath('//testcase').size).to eq 1
|
46
|
+
expect(xml.xpath('//testcase').first['name']).to eq 'test'
|
43
47
|
end
|
44
48
|
end
|
45
49
|
|
@@ -55,32 +59,32 @@ describe Jasmine::Formatters::JunitXml do
|
|
55
59
|
xml = Nokogiri::XML(file_stub.content)
|
56
60
|
|
57
61
|
testsuite = xml.xpath('/testsuites/testsuite').first
|
58
|
-
testsuite['tests'].
|
59
|
-
testsuite['failures'].
|
62
|
+
expect(testsuite['tests']).to eq '1'
|
63
|
+
expect(testsuite['failures']).to eq '0'
|
60
64
|
|
61
65
|
testsuite = xml.xpath('/testsuites/testsuite')[1]
|
62
|
-
testsuite['tests'].
|
63
|
-
testsuite['failures'].
|
66
|
+
expect(testsuite['tests']).to eq '1'
|
67
|
+
expect(testsuite['failures']).to eq '1'
|
64
68
|
|
65
|
-
xml.xpath('//testcase').size.
|
66
|
-
xml.xpath('//testcase/failure').size.
|
67
|
-
xml.xpath('//testcase/failure').first['message'].
|
68
|
-
xml.xpath('//testcase/failure').first.content.
|
69
|
+
expect(xml.xpath('//testcase').size).to eq 2
|
70
|
+
expect(xml.xpath('//testcase/failure').size).to eq 1
|
71
|
+
expect(xml.xpath('//testcase/failure').first['message']).to eq 'a failure message'
|
72
|
+
expect(xml.xpath('//testcase/failure').first.content).to eq 'a stack trace'
|
69
73
|
end
|
70
74
|
end
|
71
75
|
end
|
72
76
|
|
73
77
|
describe 'when the output directory has been customized' do
|
74
78
|
before do
|
75
|
-
Dir.
|
79
|
+
allow(Dir).to receive(:pwd).and_return('/default_path')
|
76
80
|
config_path = File.join('/default_path', 'spec', 'javascripts', 'support', 'jasmine_junitxml_formatter.yml')
|
77
|
-
File.
|
78
|
-
File.
|
81
|
+
allow(File).to receive(:exist?).with(config_path).and_return(true)
|
82
|
+
allow(File).to receive(:read).with(config_path).and_return <<-YAML
|
79
83
|
---
|
80
84
|
junit_xml_path: "/custom_path"
|
81
85
|
YAML
|
82
|
-
File.
|
83
|
-
File.
|
86
|
+
allow(File).to receive(:open).and_call_original
|
87
|
+
allow(File).to receive(:open).with('/custom_path/junit_results.xml', 'w').and_yield(file_stub)
|
84
88
|
end
|
85
89
|
|
86
90
|
it 'writes to the specified location' do
|
@@ -89,7 +93,50 @@ YAML
|
|
89
93
|
|
90
94
|
subject.format(results)
|
91
95
|
subject.done
|
92
|
-
file_stub.content.
|
96
|
+
expect(file_stub.content).to_not eq ''
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'creates the directory if it does not exist' do
|
100
|
+
subject = Jasmine::Formatters::JunitXml.new
|
101
|
+
|
102
|
+
subject.format([])
|
103
|
+
expect(FileUtils).to receive(:mkdir_p).with('/custom_path')
|
104
|
+
subject.done
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe 'with a custom config file path' do
|
109
|
+
before do
|
110
|
+
allow(Dir).to receive(:pwd).and_return('/default_path')
|
111
|
+
config_path = File.join('/other_path', 'jasmine_junitxml_formatter.yml')
|
112
|
+
allow(File).to receive(:exist?).with(config_path).and_return(true)
|
113
|
+
allow(File).to receive(:read).with(config_path).and_return <<-YAML
|
114
|
+
---
|
115
|
+
junit_xml_path: "/other_custom_path"
|
116
|
+
YAML
|
117
|
+
allow(File).to receive(:open).and_call_original
|
118
|
+
allow(File).to receive(:open).with('/other_custom_path/junit_results.xml', 'w').and_yield(file_stub)
|
119
|
+
end
|
120
|
+
|
121
|
+
subject do
|
122
|
+
ENV['JASMINE_JUNIT_XML_CONFIG_PATH'] = '/other_path/jasmine_junitxml_formatter.yml'
|
123
|
+
formatter = Jasmine::Formatters::JunitXml.new
|
124
|
+
ENV.delete 'JASMINE_JUNIT_XML_CONFIG_PATH'
|
125
|
+
formatter
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'writes to the specified location' do
|
129
|
+
results = [passing_result('fullName' => 'Passing test', 'description' => 'test')]
|
130
|
+
|
131
|
+
subject.format(results)
|
132
|
+
subject.done
|
133
|
+
expect(file_stub.content).to_not eq ''
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'creates the directory if it does not exist' do
|
137
|
+
subject.format([])
|
138
|
+
expect(FileUtils).to receive(:mkdir_p).with('/other_custom_path')
|
139
|
+
subject.done
|
93
140
|
end
|
94
141
|
end
|
95
142
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jasmine_junitxml_formatter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Van Hove
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
122
|
version: '0'
|
123
123
|
requirements: []
|
124
124
|
rubyforge_project:
|
125
|
-
rubygems_version: 2.0.
|
125
|
+
rubygems_version: 2.0.3
|
126
126
|
signing_key:
|
127
127
|
specification_version: 4
|
128
128
|
summary: Format jasmine results as junit compatible XML so CI servers, like Hudson/Jenkins
|