ci_reporter_cucumber 1.0.1 → 1.0.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +4 -0
- data/acceptance/cucumber/cucumber_example.feature +4 -0
- data/acceptance/verification_spec.rb +8 -1
- data/lib/ci/reporter/cucumber.rb +11 -1
- data/lib/ci/reporter/cucumber/version.rb +1 -1
- data/spec/ci/reporter/cucumber_spec.rb +66 -12
- metadata +21 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd4c396df29bf6194a8528abbb74a8dbb2668f35
|
4
|
+
data.tar.gz: f91220e91ec7aff8c74108813ab6efbb381e646c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b11188238074ed454bb14011cc257c0723e5e66d55c0f5555cfc7947f85b87310d8b9a1147d60117f3bd4ec970a59f9be50e7e0daa51176ac753162980da3d3c
|
7
|
+
data.tar.gz: 4f2d47e2efd71f28501ceb9ec2ebbe86ed40043afc3fc7560dd6f8e0a6eddef569374f4d29819140dacff3e4e2b3a9fb6f77f4fb68ef332fddf64b222835c19d
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -46,6 +46,10 @@ task :cucumber => 'ci:setup:cucumber'
|
|
46
46
|
|
47
47
|
### Advanced usage
|
48
48
|
|
49
|
+
If you want to treat `undefined` and `pending` steps as failures
|
50
|
+
(instead of skipping them), set the `CI_PENDING_IS_FAILURE`
|
51
|
+
environment variable to `true`.
|
52
|
+
|
49
53
|
Refer to the shared [documentation][ci] for details on setting up
|
50
54
|
CI::Reporter.
|
51
55
|
|
@@ -13,6 +13,10 @@ Feature: Example Cucumber feature
|
|
13
13
|
And I don't bother writing cucumber features
|
14
14
|
Then I should be fired
|
15
15
|
|
16
|
+
Scenario: Forgetful hacker
|
17
|
+
Given that I am a forgetful hacker
|
18
|
+
And I forgot to define a cucumber step
|
19
|
+
|
16
20
|
Scenario: Bad coder
|
17
21
|
Given that I can't code for peanuts
|
18
22
|
And I write step definitions that throw exceptions
|
@@ -15,8 +15,9 @@ describe "Cucumber acceptance" do
|
|
15
15
|
subject(:result) { Accessor.new(load_xml_result(report_path)) }
|
16
16
|
|
17
17
|
it { is_expected.to have(0).errors }
|
18
|
+
it { expect(result.skipped_count).to be 1 }
|
18
19
|
it { is_expected.to have(2).failures }
|
19
|
-
it { is_expected.to have(
|
20
|
+
it { is_expected.to have(4).testcases }
|
20
21
|
|
21
22
|
it_behaves_like "a report with consistent attribute counts"
|
22
23
|
it_behaves_like "assertions are not tracked"
|
@@ -36,6 +37,12 @@ describe "Cucumber acceptance" do
|
|
36
37
|
end
|
37
38
|
end
|
38
39
|
|
40
|
+
describe "the test the forgetful hacker wrote" do
|
41
|
+
subject(:testcase) { result.testcase('Forgetful hacker (PENDING)') }
|
42
|
+
|
43
|
+
it { is_expected.to be_skipped }
|
44
|
+
end
|
45
|
+
|
39
46
|
describe "the test the bad coder wrote" do
|
40
47
|
subject(:testcase) { result.testcase('Bad coder') }
|
41
48
|
|
data/lib/ci/reporter/cucumber.rb
CHANGED
@@ -74,14 +74,24 @@ module CI
|
|
74
74
|
@test_case.start
|
75
75
|
end
|
76
76
|
|
77
|
+
def treat_pending_as_failure?
|
78
|
+
ENV['CI_PENDING_IS_FAILURE'] == 'true'
|
79
|
+
end
|
80
|
+
|
77
81
|
def after_steps(steps)
|
78
82
|
@test_case.finish
|
79
83
|
|
80
84
|
case steps.status
|
81
85
|
when :pending, :undefined
|
82
|
-
|
86
|
+
if treat_pending_as_failure?
|
87
|
+
@test_case.failures << CucumberFailure.new(steps)
|
88
|
+
else
|
89
|
+
@test_case.name = "#{@test_case.name} (PENDING)"
|
90
|
+
@test_case.skipped = true
|
91
|
+
end
|
83
92
|
when :skipped
|
84
93
|
@test_case.name = "#{@test_case.name} (SKIPPED)"
|
94
|
+
@test_case.skipped = true
|
85
95
|
when :failed
|
86
96
|
@test_case.failures << CucumberFailure.new(steps)
|
87
97
|
end
|
@@ -106,7 +106,10 @@ module CI::Reporter
|
|
106
106
|
|
107
107
|
context "after steps" do
|
108
108
|
before :each do
|
109
|
+
allow(cucumber).to receive(:treat_pending_as_failure?).and_return(false)
|
109
110
|
cucumber.before_steps(step)
|
111
|
+
allow(test_case).to receive(:name=)
|
112
|
+
allow(test_case).to receive(:skipped=)
|
110
113
|
end
|
111
114
|
|
112
115
|
it "indicates that the test case has finished" do
|
@@ -121,22 +124,73 @@ module CI::Reporter
|
|
121
124
|
expect(testcases.first).to eql test_case
|
122
125
|
end
|
123
126
|
|
124
|
-
|
125
|
-
allow(step).to receive(:status).and_return(:pending)
|
126
|
-
|
127
|
-
|
127
|
+
context "a pending test" do
|
128
|
+
before { allow(step).to receive(:status).and_return(:pending) }
|
129
|
+
|
130
|
+
it "alters the name of a test case that is pending to include '(PENDING)'" do
|
131
|
+
expect(test_case).to receive(:name=).with("Step Name (PENDING)")
|
132
|
+
cucumber.after_steps(step)
|
133
|
+
end
|
134
|
+
|
135
|
+
it "marks the test case as skipped" do
|
136
|
+
expect(test_case).to receive(:skipped=).with(true)
|
137
|
+
cucumber.after_steps(step)
|
138
|
+
end
|
128
139
|
end
|
129
140
|
|
130
|
-
|
131
|
-
allow(step).to receive(:status).and_return(:undefined)
|
132
|
-
|
133
|
-
|
141
|
+
context "an undefined test" do
|
142
|
+
before { allow(step).to receive(:status).and_return(:undefined) }
|
143
|
+
|
144
|
+
it "alters the name of a test case that is undefined to include '(PENDING)'" do
|
145
|
+
expect(test_case).to receive(:name=).with("Step Name (PENDING)")
|
146
|
+
cucumber.after_steps(step)
|
147
|
+
end
|
148
|
+
|
149
|
+
it "marks the test case as skipped" do
|
150
|
+
expect(test_case).to receive(:skipped=).with(true)
|
151
|
+
cucumber.after_steps(step)
|
152
|
+
end
|
134
153
|
end
|
135
154
|
|
136
|
-
|
137
|
-
allow(step).to receive(:status).and_return(:skipped)
|
138
|
-
|
139
|
-
|
155
|
+
context "a skipped test" do
|
156
|
+
before { allow(step).to receive(:status).and_return(:skipped) }
|
157
|
+
|
158
|
+
it "alters the name of a test case that was skipped to include '(SKIPPED)'" do
|
159
|
+
expect(test_case).to receive(:name=).with("Step Name (SKIPPED)")
|
160
|
+
cucumber.after_steps(step)
|
161
|
+
end
|
162
|
+
|
163
|
+
it "marks the test case as skipped" do
|
164
|
+
expect(test_case).to receive(:skipped=).with(true)
|
165
|
+
cucumber.after_steps(step)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
context "when treating undefined/pending steps as failures" do
|
170
|
+
let(:failures) { [] }
|
171
|
+
let(:cucumber_failure) { double("cucumber_failure") }
|
172
|
+
|
173
|
+
before :each do
|
174
|
+
allow(cucumber).to receive(:treat_pending_as_failure?).and_return(true)
|
175
|
+
allow(test_case).to receive(:failures).and_return(failures)
|
176
|
+
allow(CI::Reporter::CucumberFailure).to receive(:new).and_return(cucumber_failure)
|
177
|
+
end
|
178
|
+
|
179
|
+
it "creates a new cucumber failure with a pending step" do
|
180
|
+
allow(step).to receive(:status).and_return(:pending)
|
181
|
+
expect(failures).to be_empty
|
182
|
+
cucumber.after_steps(step)
|
183
|
+
expect(failures).to_not be_empty
|
184
|
+
expect(failures.first).to eql cucumber_failure
|
185
|
+
end
|
186
|
+
|
187
|
+
it "creates a new cucumber failure with an undefined step" do
|
188
|
+
allow(step).to receive(:status).and_return(:undefined)
|
189
|
+
expect(failures).to be_empty
|
190
|
+
cucumber.after_steps(step)
|
191
|
+
expect(failures).to_not be_empty
|
192
|
+
expect(failures.first).to eql cucumber_failure
|
193
|
+
end
|
140
194
|
end
|
141
195
|
end
|
142
196
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ci_reporter_cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sieger
|
@@ -9,104 +9,104 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-12-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cucumber
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - ~>
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: 1.3.3
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - ~>
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 1.3.3
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: ci_reporter
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - ~>
|
32
|
+
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '2.0'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - ~>
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '2.0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: bundler
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - ~>
|
46
|
+
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '1.6'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - ~>
|
53
|
+
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '1.6'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rake
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rspec
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - ~>
|
74
|
+
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '3.0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - ~>
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '3.0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: rspec-collection_matchers
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- -
|
88
|
+
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- -
|
95
|
+
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: ci_reporter_test_utils
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- -
|
102
|
+
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '0'
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- -
|
109
|
+
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
112
|
description:
|
@@ -117,8 +117,8 @@ executables: []
|
|
117
117
|
extensions: []
|
118
118
|
extra_rdoc_files: []
|
119
119
|
files:
|
120
|
-
- .gitignore
|
121
|
-
- .travis.yml
|
120
|
+
- ".gitignore"
|
121
|
+
- ".travis.yml"
|
122
122
|
- CHANGELOG.md
|
123
123
|
- Gemfile
|
124
124
|
- LICENSE.txt
|
@@ -147,17 +147,17 @@ require_paths:
|
|
147
147
|
- lib
|
148
148
|
required_ruby_version: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
154
|
requirements:
|
155
|
-
- -
|
155
|
+
- - ">="
|
156
156
|
- !ruby/object:Gem::Version
|
157
157
|
version: '0'
|
158
158
|
requirements: []
|
159
159
|
rubyforge_project:
|
160
|
-
rubygems_version: 2.
|
160
|
+
rubygems_version: 2.4.8
|
161
161
|
signing_key:
|
162
162
|
specification_version: 4
|
163
163
|
summary: Connects CI::Reporter to Cucumber
|