jenkins_pipeline_builder 0.6.0 → 0.7.0
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/.rubocop.yml +3 -11
- data/README.md +19 -29
- data/commit_build.sh +1 -4
- data/lib/jenkins_pipeline_builder.rb +9 -13
- data/lib/jenkins_pipeline_builder/cli/describe.rb +14 -5
- data/lib/jenkins_pipeline_builder/cli/helper.rb +2 -0
- data/lib/jenkins_pipeline_builder/cli/list.rb +11 -4
- data/lib/jenkins_pipeline_builder/extensions.rb +151 -40
- data/lib/jenkins_pipeline_builder/{builders.rb → extensions/builders.rb} +22 -15
- data/lib/jenkins_pipeline_builder/{job_builder.rb → extensions/job_attributes.rb} +37 -27
- data/lib/jenkins_pipeline_builder/{publishers.rb → extensions/publishers.rb} +55 -20
- data/lib/jenkins_pipeline_builder/{triggers.rb → extensions/triggers.rb} +18 -8
- data/lib/jenkins_pipeline_builder/{wrappers.rb → extensions/wrappers.rb} +23 -36
- data/lib/jenkins_pipeline_builder/generator.rb +29 -62
- data/lib/jenkins_pipeline_builder/module_registry.rb +21 -9
- data/lib/jenkins_pipeline_builder/pull_request.rb +1 -1
- data/lib/jenkins_pipeline_builder/version.rb +1 -1
- data/pipeline/Jenkins-Pipeline-Builder.yaml +3 -7
- data/pipeline/project.yaml +10 -0
- data/spec/lib/jenkins_pipeline_builder/compiler_spec.rb +9 -1
- data/spec/lib/jenkins_pipeline_builder/extensions/builders_spec.rb +53 -0
- data/spec/lib/jenkins_pipeline_builder/extensions/publishers_spec.rb +140 -0
- data/spec/lib/jenkins_pipeline_builder/extensions_spec.rb +113 -31
- data/spec/lib/jenkins_pipeline_builder/generator_spec.rb +12 -4
- data/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb +202 -44
- data/spec/lib/jenkins_pipeline_builder/spec_helper.rb +5 -5
- data/spec/requests/pipeline_spec.rb +20 -0
- metadata +16 -7
@@ -42,12 +42,6 @@ describe JenkinsPipelineBuilder::Extension do
|
|
42
42
|
expect(extension.plugin_id).to eq 'foo'
|
43
43
|
end
|
44
44
|
end
|
45
|
-
context 'min_version' do
|
46
|
-
it 'sets the min_version if a parameter is provided' do
|
47
|
-
extension.min_version('foo')
|
48
|
-
expect(extension.min_version).to eq 'foo'
|
49
|
-
end
|
50
|
-
end
|
51
45
|
context 'jenkins_name' do
|
52
46
|
it 'sets the jenkins_name if a parameter is provided' do
|
53
47
|
extension.jenkins_name('foo')
|
@@ -78,51 +72,39 @@ describe JenkinsPipelineBuilder::Extension do
|
|
78
72
|
expect(extension.type).to eq 'foo'
|
79
73
|
end
|
80
74
|
end
|
75
|
+
context 'min_version' do
|
76
|
+
it 'sets the min_version if a parameter is provided' do
|
77
|
+
extension.min_version('foo')
|
78
|
+
expect(extension.min_version).to eq 'foo'
|
79
|
+
end
|
80
|
+
end
|
81
81
|
context 'xml' do
|
82
82
|
it 'saves the block' do
|
83
|
-
extension.xml
|
84
|
-
true
|
85
|
-
end
|
83
|
+
extension.xml -> { true }
|
86
84
|
expect(extension.xml.call).to be true
|
87
85
|
end
|
88
|
-
it 'uses the path if provided' do
|
89
|
-
extension.xml('foo') do
|
90
|
-
true
|
91
|
-
end
|
92
|
-
expect(extension.path).to eq 'foo'
|
93
|
-
end
|
94
86
|
it 'returns the saved block if there none is provided' do
|
95
|
-
extension.xml
|
96
|
-
true
|
97
|
-
end
|
87
|
+
extension.xml -> { true }
|
98
88
|
expect(extension.xml).to be_kind_of Proc
|
99
89
|
end
|
100
90
|
end
|
101
91
|
context 'after' do
|
102
92
|
it 'saves the block' do
|
103
|
-
extension.after
|
104
|
-
true
|
105
|
-
end
|
93
|
+
extension.after -> { true }
|
106
94
|
expect(extension.after.call).to be true
|
107
95
|
end
|
108
96
|
it 'returns the saved block if there none is provided' do
|
109
|
-
extension.after
|
110
|
-
true
|
111
|
-
end
|
97
|
+
extension.after -> { true }
|
112
98
|
expect(extension.after).to be_kind_of Proc
|
113
99
|
end
|
114
100
|
end
|
115
101
|
context 'before' do
|
116
102
|
it 'saves the block' do
|
117
|
-
extension.before
|
118
|
-
true
|
119
|
-
end
|
103
|
+
extension.before -> { true }
|
120
104
|
expect(extension.before.call).to be true
|
121
105
|
end
|
122
106
|
it 'returns the saved block if there none is provided' do
|
123
|
-
extension.before
|
124
|
-
true
|
125
|
-
end
|
107
|
+
extension.before -> { true }
|
126
108
|
expect(extension.before).to be_kind_of Proc
|
127
109
|
end
|
128
110
|
end
|
@@ -130,7 +112,8 @@ describe JenkinsPipelineBuilder::Extension do
|
|
130
112
|
it 'returns true if errors is empty' do
|
131
113
|
extension.name 'foo'
|
132
114
|
extension.plugin_id 'foo'
|
133
|
-
extension.min_version '
|
115
|
+
extension.min_version '0.2'
|
116
|
+
extension.xml -> { true }
|
134
117
|
extension.type 'foo'
|
135
118
|
extension.path 'foo'
|
136
119
|
expect(extension.errors).to be_empty
|
@@ -143,3 +126,102 @@ describe JenkinsPipelineBuilder::Extension do
|
|
143
126
|
end
|
144
127
|
end
|
145
128
|
end
|
129
|
+
|
130
|
+
describe JenkinsPipelineBuilder::ExtensionSet do
|
131
|
+
subject(:set) { JenkinsPipelineBuilder::ExtensionSet.new }
|
132
|
+
|
133
|
+
before :each do
|
134
|
+
set.name 'example'
|
135
|
+
end
|
136
|
+
|
137
|
+
context 'xml' do
|
138
|
+
it 'returns the block for the correct version'
|
139
|
+
it 'sets the min_version if a parameter is provided' do
|
140
|
+
set.xml version: '0.2' do
|
141
|
+
true
|
142
|
+
end
|
143
|
+
expect(set.blocks).to have_key '0.2'
|
144
|
+
end
|
145
|
+
it 'uses the path if provided' do
|
146
|
+
set.xml path: 'foo' do
|
147
|
+
true
|
148
|
+
end
|
149
|
+
expect(set.blocks['0'][:path]).to eq 'foo'
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
context '#extension' do
|
154
|
+
def new_ext(version = '0.0')
|
155
|
+
ext = JenkinsPipelineBuilder::Extension.new
|
156
|
+
ext.name 'foo'
|
157
|
+
ext.plugin_id 'foo'
|
158
|
+
ext.min_version version
|
159
|
+
ext.xml -> { true }
|
160
|
+
ext.type 'foo'
|
161
|
+
ext.path 'foo'
|
162
|
+
ext
|
163
|
+
end
|
164
|
+
|
165
|
+
def ext_versions(versions)
|
166
|
+
versions.each do |v|
|
167
|
+
ext = new_ext(v)
|
168
|
+
expect(ext).to be_valid
|
169
|
+
set.extensions << ext
|
170
|
+
end
|
171
|
+
|
172
|
+
expect(set).to be_valid
|
173
|
+
expect(set.extensions.size).to eq versions.size
|
174
|
+
end
|
175
|
+
|
176
|
+
it 'returns an extension' do
|
177
|
+
ext_versions ['0.0']
|
178
|
+
set.installed_version = '0.1'
|
179
|
+
expect(set.extension).to be_kind_of JenkinsPipelineBuilder::Extension
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'returns the highest that is lower than the installed version' do
|
183
|
+
ext_versions ['0.0', '0.2']
|
184
|
+
|
185
|
+
set.installed_version = '0.1'
|
186
|
+
|
187
|
+
expect(set.extension.min_version).to eq '0.0'
|
188
|
+
end
|
189
|
+
|
190
|
+
it 'returns highest available if the installed version is higher' do
|
191
|
+
ext_versions ['0.0', '0.2']
|
192
|
+
|
193
|
+
set.installed_version = '0.3'
|
194
|
+
|
195
|
+
expect(set.extension.min_version).to eq '0.2'
|
196
|
+
end
|
197
|
+
|
198
|
+
it 'works for complicated version comparions' do
|
199
|
+
ext_versions ['10.5', '9.2', '100.4']
|
200
|
+
|
201
|
+
set.installed_version = '11.3'
|
202
|
+
|
203
|
+
expect(set.extension.min_version).to eq '10.5'
|
204
|
+
end
|
205
|
+
|
206
|
+
it 'raises an error if the registered versions are too high' do
|
207
|
+
ext_versions ['10.5', '9.2']
|
208
|
+
|
209
|
+
set.installed_version = '1.3'
|
210
|
+
|
211
|
+
expect { set.extension.min_version }.to raise_error
|
212
|
+
end
|
213
|
+
|
214
|
+
it 'works for snapshot/beta stuff' do
|
215
|
+
ext_versions ['1.9', '2.3']
|
216
|
+
|
217
|
+
set.installed_version = '2.0-SNAPSHOT (private-06/06/2014 09:51-bgaulin)'
|
218
|
+
# Other examples
|
219
|
+
# set.installed_version = '2.0-beta-1'
|
220
|
+
# set.installed_version = '2.0+build.93'
|
221
|
+
# set.installed_version = '2.0.8'
|
222
|
+
|
223
|
+
expect(set.extension.min_version).to eq '1.9'
|
224
|
+
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require File.expand_path('../spec_helper', __FILE__)
|
2
2
|
|
3
3
|
describe JenkinsPipelineBuilder::Generator do
|
4
|
+
after :each do
|
5
|
+
JenkinsPipelineBuilder.registry.clear_versions
|
6
|
+
end
|
4
7
|
|
5
8
|
before(:all) do
|
6
9
|
JenkinsPipelineBuilder.credentials = {
|
@@ -10,7 +13,6 @@ describe JenkinsPipelineBuilder::Generator do
|
|
10
13
|
password: 'password',
|
11
14
|
log_location: '/dev/null'
|
12
15
|
}
|
13
|
-
JenkinsPipelineBuilder.client
|
14
16
|
@generator = JenkinsPipelineBuilder.generator
|
15
17
|
end
|
16
18
|
|
@@ -18,8 +20,6 @@ describe JenkinsPipelineBuilder::Generator do
|
|
18
20
|
@generator.debug = false
|
19
21
|
@generator.job_collection = {}
|
20
22
|
@generator.remote_depends = {}
|
21
|
-
@generator.module_registry = JenkinsPipelineBuilder::ModuleRegistry.new
|
22
|
-
JenkinsPipelineBuilder.load_registry
|
23
23
|
end
|
24
24
|
|
25
25
|
describe 'initialized in before(:example)' do
|
@@ -67,6 +67,10 @@ describe JenkinsPipelineBuilder::Generator do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
describe '#bootstrap' do
|
70
|
+
before :each do
|
71
|
+
allow(JenkinsPipelineBuilder.client).to receive(:plugin).and_return double(
|
72
|
+
list_installed: { 'description' => '20.0', 'git' => '20.0' })
|
73
|
+
end
|
70
74
|
it 'produces no errors while creating pipeline SamplePipeline with view' do
|
71
75
|
@generator.debug = true
|
72
76
|
job_name = 'SamplePipeline'
|
@@ -97,6 +101,10 @@ describe JenkinsPipelineBuilder::Generator do
|
|
97
101
|
end
|
98
102
|
|
99
103
|
describe '#pull_request' do
|
104
|
+
before :each do
|
105
|
+
allow(JenkinsPipelineBuilder.client).to receive(:plugin).and_return double(
|
106
|
+
list_installed: { 'description' => '20.0', 'git' => '20.0' })
|
107
|
+
end
|
100
108
|
it 'produces no errors while creating pipeline PullRequest' do
|
101
109
|
# Dummy data
|
102
110
|
purge = []
|
@@ -129,7 +137,7 @@ describe JenkinsPipelineBuilder::Generator do
|
|
129
137
|
@generator.debug = true
|
130
138
|
job_name = 'PullRequest'
|
131
139
|
path = File.expand_path('../fixtures/generator_tests/pullrequest_pipeline', __FILE__)
|
132
|
-
JenkinsPipelineBuilder::PullRequestGenerator.
|
140
|
+
expect(JenkinsPipelineBuilder::PullRequestGenerator).to receive(:new).once.and_return(
|
133
141
|
double(purge: purge, create: create, jobs: jobs)
|
134
142
|
)
|
135
143
|
success = @generator.pull_request(path, job_name)
|
@@ -1,26 +1,29 @@
|
|
1
1
|
require File.expand_path('../spec_helper', __FILE__)
|
2
2
|
|
3
3
|
describe JenkinsPipelineBuilder::ModuleRegistry do
|
4
|
+
after :each do
|
5
|
+
JenkinsPipelineBuilder.registry.clear_versions
|
6
|
+
end
|
4
7
|
describe '#register' do
|
5
8
|
it 'should return item by a specified path' do
|
6
9
|
|
7
10
|
registry = JenkinsPipelineBuilder::ModuleRegistry.new
|
8
|
-
|
9
|
-
allow(
|
10
|
-
registry.register [:job],
|
11
|
+
set = double
|
12
|
+
allow(set).to receive(:name).and_return :foo
|
13
|
+
registry.register [:job], set
|
11
14
|
|
12
|
-
expect(registry.get('job/foo').
|
15
|
+
expect(registry.get('job/foo').name).to eq :foo
|
13
16
|
end
|
14
17
|
|
15
18
|
it 'registered the builders correctly' do
|
16
19
|
builders = {
|
17
|
-
multi_job: [0],
|
18
|
-
maven3: [0],
|
19
|
-
shell_command: [0],
|
20
|
-
inject_vars_file: [0],
|
21
|
-
blocking_downstream: [0],
|
22
|
-
remote_job: [0],
|
23
|
-
copy_artifact: [0]
|
20
|
+
multi_job: ['0'],
|
21
|
+
maven3: ['0'],
|
22
|
+
shell_command: ['0'],
|
23
|
+
inject_vars_file: ['0'],
|
24
|
+
blocking_downstream: ['0'],
|
25
|
+
remote_job: ['0'],
|
26
|
+
copy_artifact: ['0']
|
24
27
|
}
|
25
28
|
registry = JenkinsPipelineBuilder.registry.registry
|
26
29
|
expect(registry[:job][:builders].size).to eq builders.size
|
@@ -32,12 +35,13 @@ describe JenkinsPipelineBuilder::ModuleRegistry do
|
|
32
35
|
end
|
33
36
|
end
|
34
37
|
end
|
38
|
+
|
35
39
|
it 'registered the triggers correctly' do
|
36
40
|
triggers = {
|
37
|
-
git_push: [0],
|
38
|
-
scm_polling: [0],
|
39
|
-
periodic_build: [0],
|
40
|
-
upstream: [0]
|
41
|
+
git_push: ['0'],
|
42
|
+
scm_polling: ['0'],
|
43
|
+
periodic_build: ['0'],
|
44
|
+
upstream: ['0']
|
41
45
|
}
|
42
46
|
registry = JenkinsPipelineBuilder.registry.registry
|
43
47
|
expect(registry[:job][:triggers].size).to eq triggers.size
|
@@ -51,15 +55,15 @@ describe JenkinsPipelineBuilder::ModuleRegistry do
|
|
51
55
|
end
|
52
56
|
it 'registered the job_attributes correctly' do
|
53
57
|
job_attributes = {
|
54
|
-
description: [0],
|
55
|
-
scm_params: [0],
|
56
|
-
hipchat: [0],
|
57
|
-
priority: [0],
|
58
|
-
parameters: [0],
|
59
|
-
discard_old: [0],
|
60
|
-
throttle: [0],
|
61
|
-
prepare_environment: [0],
|
62
|
-
concurrent_build: [0]
|
58
|
+
description: ['0'],
|
59
|
+
scm_params: ['0'],
|
60
|
+
hipchat: ['0'],
|
61
|
+
priority: ['0'],
|
62
|
+
parameters: ['0'],
|
63
|
+
discard_old: ['0'],
|
64
|
+
throttle: ['0'],
|
65
|
+
prepare_environment: ['0'],
|
66
|
+
concurrent_build: ['0']
|
63
67
|
}
|
64
68
|
registry = JenkinsPipelineBuilder.registry.registry
|
65
69
|
# There are 4 sub types so, we don't count those
|
@@ -74,22 +78,21 @@ describe JenkinsPipelineBuilder::ModuleRegistry do
|
|
74
78
|
end
|
75
79
|
it 'registered the publishers correctly' do
|
76
80
|
publishers = {
|
77
|
-
description_setter: [0],
|
78
|
-
downstream: [0],
|
79
|
-
hipchat: [0],
|
80
|
-
git: [0],
|
81
|
-
junit_result: [0],
|
82
|
-
coverage_result: [0],
|
83
|
-
post_build_script: [0],
|
84
|
-
groovy_postbuild: [0],
|
85
|
-
archive_artifact: [0],
|
86
|
-
email_notifications: [0]
|
81
|
+
description_setter: ['0'],
|
82
|
+
downstream: ['0'],
|
83
|
+
hipchat: ['0'],
|
84
|
+
git: ['0'],
|
85
|
+
junit_result: ['0'],
|
86
|
+
coverage_result: ['0'],
|
87
|
+
post_build_script: ['0'],
|
88
|
+
groovy_postbuild: ['0'],
|
89
|
+
archive_artifact: ['0'],
|
90
|
+
email_notifications: ['0'],
|
91
|
+
sonar_result: ['0']
|
87
92
|
}
|
88
93
|
registry = JenkinsPipelineBuilder.registry.registry
|
89
|
-
expect(registry[:job][:publishers].
|
94
|
+
expect(registry[:job][:publishers].keys).to match_array publishers.keys
|
90
95
|
publishers.each do |publisher, versions|
|
91
|
-
expect(registry[:job][:publishers]).to have_key publisher
|
92
|
-
|
93
96
|
versions.each do |version|
|
94
97
|
expect(registry[:job][:publishers][publisher]).to have_min_version version
|
95
98
|
end
|
@@ -97,14 +100,13 @@ describe JenkinsPipelineBuilder::ModuleRegistry do
|
|
97
100
|
end
|
98
101
|
it 'registered the wrappers correctly' do
|
99
102
|
wrappers = {
|
100
|
-
ansicolor: [0],
|
101
|
-
timestamp: [0],
|
102
|
-
name: [0],
|
103
|
+
ansicolor: ['0'],
|
104
|
+
timestamp: ['0'],
|
103
105
|
rvm: ['0', '0.5'],
|
104
|
-
inject_passwords: [0],
|
105
|
-
inject_env_var: [0],
|
106
|
-
artifactory: [0],
|
107
|
-
maven3artifactory: [0]
|
106
|
+
inject_passwords: ['0'],
|
107
|
+
inject_env_var: ['0'],
|
108
|
+
artifactory: ['0'],
|
109
|
+
maven3artifactory: ['0']
|
108
110
|
}
|
109
111
|
registry = JenkinsPipelineBuilder.registry.registry
|
110
112
|
expect(registry[:job][:wrappers].size).to eq wrappers.size
|
@@ -121,6 +123,23 @@ describe JenkinsPipelineBuilder::ModuleRegistry do
|
|
121
123
|
|
122
124
|
end
|
123
125
|
|
126
|
+
describe '#version' do
|
127
|
+
before :all do
|
128
|
+
JenkinsPipelineBuilder.credentials = {
|
129
|
+
server_ip: '127.0.0.1',
|
130
|
+
server_port: 8080,
|
131
|
+
username: 'username',
|
132
|
+
password: 'password',
|
133
|
+
log_location: '/dev/null'
|
134
|
+
}
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'pulls the version from the registry if it is not memoized' do
|
138
|
+
expect(JenkinsPipelineBuilder.client).to receive(:plugin).and_return double(list_installed: { 'one' => '0.1' })
|
139
|
+
subject.versions
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
124
143
|
describe '#entries' do
|
125
144
|
|
126
145
|
end
|
@@ -144,4 +163,143 @@ describe JenkinsPipelineBuilder::ModuleRegistry do
|
|
144
163
|
describe '#execute_extension' do
|
145
164
|
end
|
146
165
|
|
166
|
+
describe 'executing a registry item' do
|
167
|
+
before :all do
|
168
|
+
class XmlException < StandardError
|
169
|
+
end
|
170
|
+
class BeforeException < StandardError
|
171
|
+
end
|
172
|
+
class AfterException < StandardError
|
173
|
+
end
|
174
|
+
JenkinsPipelineBuilder.credentials = {
|
175
|
+
server_ip: '127.0.0.1',
|
176
|
+
server_port: 8080,
|
177
|
+
username: 'username',
|
178
|
+
password: 'password',
|
179
|
+
log_location: '/dev/null'
|
180
|
+
}
|
181
|
+
end
|
182
|
+
|
183
|
+
let(:params) { { wrappers: { test_name: :foo } } }
|
184
|
+
|
185
|
+
before :each do
|
186
|
+
allow(JenkinsPipelineBuilder.client).to receive(:plugin).and_return double(
|
187
|
+
list_installed: { 'test_name' => '20.0', 'unorderedTest' => '20.0' })
|
188
|
+
@n_xml = Nokogiri::XML::Document.new
|
189
|
+
|
190
|
+
wrapper do
|
191
|
+
name :test_name
|
192
|
+
plugin_id 'test_name'
|
193
|
+
|
194
|
+
xml do
|
195
|
+
true
|
196
|
+
end
|
197
|
+
end
|
198
|
+
expect(JenkinsPipelineBuilder.registry.registry[:job][:wrappers]).to have_key :test_name
|
199
|
+
@ext = JenkinsPipelineBuilder.registry.registry[:job][:wrappers][:test_name].extension
|
200
|
+
|
201
|
+
end
|
202
|
+
|
203
|
+
after :each do
|
204
|
+
JenkinsPipelineBuilder.registry.registry[:job][:wrappers].delete :test_name
|
205
|
+
end
|
206
|
+
|
207
|
+
it 'calls the xml block when executing the item' do
|
208
|
+
@ext.xml -> (_) { fail XmlException, 'foo' }
|
209
|
+
|
210
|
+
expect do
|
211
|
+
JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
|
212
|
+
end.to raise_error XmlException
|
213
|
+
end
|
214
|
+
|
215
|
+
it 'calls the before block' do
|
216
|
+
@ext.before -> (_) { fail BeforeException, 'foo' }
|
217
|
+
|
218
|
+
expect do
|
219
|
+
JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
|
220
|
+
end.to raise_error BeforeException
|
221
|
+
end
|
222
|
+
|
223
|
+
it 'calls the after block' do
|
224
|
+
@ext.after -> (_) { fail AfterException, 'foo' }
|
225
|
+
|
226
|
+
expect do
|
227
|
+
JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
|
228
|
+
end.to raise_error AfterException
|
229
|
+
end
|
230
|
+
|
231
|
+
context 'unordered dsl' do
|
232
|
+
let(:params) { { wrappers: { unordered_test: :foo } } }
|
233
|
+
|
234
|
+
after :each do
|
235
|
+
JenkinsPipelineBuilder.registry.registry[:job][:wrappers].delete :unordered_test
|
236
|
+
end
|
237
|
+
|
238
|
+
it 'works with before first' do
|
239
|
+
wrapper do
|
240
|
+
name :unordered_test
|
241
|
+
plugin_id 'unorderedTest'
|
242
|
+
|
243
|
+
before do
|
244
|
+
fail BeforeException, 'foo'
|
245
|
+
end
|
246
|
+
|
247
|
+
xml do
|
248
|
+
true
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
expect(JenkinsPipelineBuilder.registry.registry[:job][:wrappers]).to have_key :unordered_test
|
253
|
+
@ext = JenkinsPipelineBuilder.registry.registry[:job][:wrappers][:unordered_test].extension
|
254
|
+
|
255
|
+
expect do
|
256
|
+
JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
|
257
|
+
end.to raise_error BeforeException
|
258
|
+
end
|
259
|
+
|
260
|
+
it 'works with after first' do
|
261
|
+
wrapper do
|
262
|
+
name :unordered_test
|
263
|
+
plugin_id 'unorderedTest'
|
264
|
+
|
265
|
+
after do
|
266
|
+
fail AfterException, 'foo'
|
267
|
+
end
|
268
|
+
|
269
|
+
xml do
|
270
|
+
true
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
expect(JenkinsPipelineBuilder.registry.registry[:job][:wrappers]).to have_key :unordered_test
|
275
|
+
@ext = JenkinsPipelineBuilder.registry.registry[:job][:wrappers][:unordered_test].extension
|
276
|
+
|
277
|
+
expect do
|
278
|
+
JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
|
279
|
+
end.to raise_error AfterException
|
280
|
+
end
|
281
|
+
|
282
|
+
it 'works with xml first' do
|
283
|
+
wrapper do
|
284
|
+
name :unordered_test
|
285
|
+
plugin_id 'unorderedTest'
|
286
|
+
|
287
|
+
xml do
|
288
|
+
fail XmlException, 'foo'
|
289
|
+
end
|
290
|
+
|
291
|
+
after do
|
292
|
+
true
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
expect(JenkinsPipelineBuilder.registry.registry[:job][:wrappers]).to have_key :unordered_test
|
297
|
+
@ext = JenkinsPipelineBuilder.registry.registry[:job][:wrappers][:unordered_test].extension
|
298
|
+
|
299
|
+
expect do
|
300
|
+
JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
|
301
|
+
end.to raise_error XmlException
|
302
|
+
end
|
303
|
+
end
|
304
|
+
end
|
147
305
|
end
|