bellows 2.0.1 → 2.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.
- data/CHANGELOG +5 -0
- data/VERSION +1 -1
- data/lib/bellows/smoke_stack.rb +24 -4
- data/test/test_smoke_stack.rb +134 -0
- metadata +3 -3
data/CHANGELOG
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
* Mon Aug 19 2013 Dan Prince <dprince@redhat.com> - 2.0.2
|
2
|
+
- Add support for new SS status types ('BuildFail', 'TestFail', etc.)
|
3
|
+
- Add support for automatic test failure approval.
|
4
|
+
- Add support for automatic build failure approval.
|
5
|
+
|
1
6
|
* Mon Aug 12 2013 Dan Prince <dprince@redhat.com> - 2.0.1
|
2
7
|
- Rename quantum to neutron.
|
3
8
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.0.2
|
data/lib/bellows/smoke_stack.rb
CHANGED
@@ -191,15 +191,35 @@ module Bellows
|
|
191
191
|
|
192
192
|
#returns true if jobs all passed (green) or all failed results are approved
|
193
193
|
def self.complete?(job_datas)
|
194
|
-
|
194
|
+
complete = true
|
195
195
|
job_datas.each do |arr|
|
196
196
|
job_type = arr[0]
|
197
197
|
job_data = arr[1]
|
198
|
-
if job_data.nil? or (job_data['status']
|
199
|
-
|
198
|
+
return false if job_data.nil? or (job_data['status'] and ['Pending', 'Running'].include?(job_data['status'])) # waiting on pending jobs or data
|
199
|
+
|
200
|
+
# if bellows doesn't understand the status then we fail
|
201
|
+
if not ['Pending', 'Running', 'Success', 'Failed', 'BuildFail', 'TestFail'].include?(job_data['status']) then
|
202
|
+
return false
|
200
203
|
end
|
204
|
+
|
205
|
+
next if job_type['auto_approved'] # global auto_approved
|
206
|
+
|
207
|
+
# special case for build failures
|
208
|
+
if job_data['status'] == 'BuildFail' and not job_type['buildfail_auto_approved'] and not job_data['approved_by'] then
|
209
|
+
complete = false
|
210
|
+
end
|
211
|
+
|
212
|
+
# special case for test failures
|
213
|
+
if job_data['status'] == 'TestFail' and not job_type['testfail_auto_approved'] and not job_data['approved_by'] then
|
214
|
+
complete = false
|
215
|
+
end
|
216
|
+
|
217
|
+
if job_data['status'] == 'Failed' and not job_data['approved_by'] then
|
218
|
+
complete = false
|
219
|
+
end
|
220
|
+
|
201
221
|
end
|
202
|
-
|
222
|
+
complete
|
203
223
|
end
|
204
224
|
|
205
225
|
end
|
data/test/test_smoke_stack.rb
CHANGED
@@ -57,4 +57,138 @@ class SmokeStackTest < Test::Unit::TestCase
|
|
57
57
|
|
58
58
|
end
|
59
59
|
|
60
|
+
def test_complete_with_single_success
|
61
|
+
|
62
|
+
comment_config = {'auto_approved' => false}
|
63
|
+
job_data = {'status' => 'Success', 'approved_by' => nil}
|
64
|
+
job_datas = [[comment_config, job_data]]
|
65
|
+
|
66
|
+
assert_equal true, Bellows::SmokeStack.complete?(job_datas)
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_complete_with_single_failed
|
71
|
+
|
72
|
+
comment_config = {'auto_approved' => false}
|
73
|
+
job_data = {'status' => 'Failed', 'approved_by' => nil}
|
74
|
+
job_datas = [[comment_config, job_data]]
|
75
|
+
|
76
|
+
assert_equal false, Bellows::SmokeStack.complete?(job_datas)
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_complete_with_single_failed_manually_approved
|
81
|
+
|
82
|
+
comment_config = {'auto_approved' => false}
|
83
|
+
job_data = {'status' => 'Failed', 'approved_by' => 'dprince'}
|
84
|
+
job_datas = [[comment_config, job_data]]
|
85
|
+
|
86
|
+
assert_equal true, Bellows::SmokeStack.complete?(job_datas)
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_complete_with_single_failed_auto_approved
|
91
|
+
|
92
|
+
comment_config = {'auto_approved' => true}
|
93
|
+
job_data = {'status' => 'Failed', 'approved_by' => nil}
|
94
|
+
job_datas = [[comment_config, job_data]]
|
95
|
+
|
96
|
+
assert_equal true, Bellows::SmokeStack.complete?(job_datas)
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_complete_with_invalid_job_status
|
101
|
+
|
102
|
+
comment_config = {'auto_approved' => true}
|
103
|
+
job_data = {'status' => 'Foo', 'approved_by' => 'dprince'}
|
104
|
+
job_datas = [[comment_config, job_data]]
|
105
|
+
|
106
|
+
assert_equal false, Bellows::SmokeStack.complete?(job_datas)
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_complete_with_job_pending
|
111
|
+
|
112
|
+
job_datas = []
|
113
|
+
comment_config = {'auto_approved' => true}
|
114
|
+
job_data = {'status' => 'Success', 'approved_by' => nil}
|
115
|
+
job_datas << [comment_config, job_data]
|
116
|
+
comment_config = {'auto_approved' => true}
|
117
|
+
job_data = {'status' => 'Pending', 'approved_by' => 'dprince'}
|
118
|
+
job_datas << [comment_config, job_data]
|
119
|
+
|
120
|
+
assert_equal false, Bellows::SmokeStack.complete?(job_datas)
|
121
|
+
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_complete_with_job_running
|
125
|
+
|
126
|
+
job_datas = []
|
127
|
+
comment_config = {'auto_approved' => true}
|
128
|
+
job_data = {'status' => 'Success', 'approved_by' => nil}
|
129
|
+
job_datas << [comment_config, job_data]
|
130
|
+
comment_config = {'auto_approved' => true}
|
131
|
+
job_data = {'status' => 'Pending', 'approved_by' => 'dprince'}
|
132
|
+
job_datas << [comment_config, job_data]
|
133
|
+
|
134
|
+
assert_equal false, Bellows::SmokeStack.complete?(job_datas)
|
135
|
+
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_complete_with_build_fail_auto_approved
|
139
|
+
|
140
|
+
job_datas = []
|
141
|
+
comment_config = {'buildfail_auto_approved' => true}
|
142
|
+
job_data = {'status' => 'BuildFail', 'approved_by' => nil}
|
143
|
+
job_datas << [comment_config, job_data]
|
144
|
+
comment_config = {}
|
145
|
+
job_data = {'status' => 'Success', 'approved_by' => nil}
|
146
|
+
job_datas << [comment_config, job_data]
|
147
|
+
|
148
|
+
assert_equal true, Bellows::SmokeStack.complete?(job_datas)
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_complete_with_build_fail_manually_approved
|
153
|
+
|
154
|
+
job_datas = []
|
155
|
+
comment_config = {'buildfail_auto_approved' => false}
|
156
|
+
job_data = {'status' => 'BuildFail', 'approved_by' => 'dprince'}
|
157
|
+
job_datas << [comment_config, job_data]
|
158
|
+
comment_config = {}
|
159
|
+
job_data = {'status' => 'Success', 'approved_by' => nil}
|
160
|
+
job_datas << [comment_config, job_data]
|
161
|
+
|
162
|
+
assert_equal true, Bellows::SmokeStack.complete?(job_datas)
|
163
|
+
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_complete_with_build_fail_auto_approved
|
167
|
+
|
168
|
+
job_datas = []
|
169
|
+
comment_config = {'testfail_auto_approved' => true}
|
170
|
+
job_data = {'status' => 'TestFail', 'approved_by' => nil}
|
171
|
+
job_datas << [comment_config, job_data]
|
172
|
+
comment_config = {}
|
173
|
+
job_data = {'status' => 'Success', 'approved_by' => nil}
|
174
|
+
job_datas << [comment_config, job_data]
|
175
|
+
|
176
|
+
assert_equal true, Bellows::SmokeStack.complete?(job_datas)
|
177
|
+
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_complete_with_build_fail_manually_approved
|
181
|
+
|
182
|
+
job_datas = []
|
183
|
+
comment_config = {'testfail_auto_approved' => false}
|
184
|
+
job_data = {'status' => 'TestFail', 'approved_by' => 'dprince'}
|
185
|
+
job_datas << [comment_config, job_data]
|
186
|
+
comment_config = {}
|
187
|
+
job_data = {'status' => 'Success', 'approved_by' => nil}
|
188
|
+
job_datas << [comment_config, job_data]
|
189
|
+
|
190
|
+
assert_equal true, Bellows::SmokeStack.complete?(job_datas)
|
191
|
+
|
192
|
+
end
|
193
|
+
|
60
194
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bellows
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
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: 2013-08-
|
12
|
+
date: 2013-08-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -173,7 +173,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
173
173
|
version: '0'
|
174
174
|
segments:
|
175
175
|
- 0
|
176
|
-
hash: -
|
176
|
+
hash: -3928135736151112540
|
177
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
178
|
none: false
|
179
179
|
requirements:
|