jenkins_pipeline_builder 0.10.12 → 0.10.13

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.
@@ -22,6 +22,8 @@ describe 'builders' do
22
22
 
23
23
  after :each do |example|
24
24
  name = example.description.gsub ' ', '_'
25
+ require 'fileutils'
26
+ FileUtils.mkdir_p 'out/xml'
25
27
  File.open("./out/xml/builder_#{name}.xml", 'w') { |f| @n_xml.write_xml_to f }
26
28
  end
27
29
 
@@ -63,13 +65,20 @@ describe 'builders' do
63
65
 
64
66
  it 'provides job specific config' do
65
67
  params = { builders: { multi_job: { phases: { foo: { jobs: [{ name: 'foo', config: {
66
- predefined_build_parameters: 'bar'
68
+ predefined_build_parameters: 'bar',
69
+ properties_file: { file: 'props', skip_if_missing: true }
67
70
  } }] } } } } }
68
71
 
69
72
  JenkinsPipelineBuilder.registry.traverse_registry_path('job', params, @n_xml)
70
73
 
71
74
  node = @n_xml.xpath '//hudson.plugins.parameterizedtrigger.PredefinedBuildParameters'
72
75
  expect(node.children.first.content).to eq 'bar'
76
+
77
+ node = @n_xml.xpath '//hudson.plugins.parameterizedtrigger.FileBuildParameters/propertiesFile'
78
+ expect(node.children.first.content).to eq 'props'
79
+
80
+ node = @n_xml.xpath '//hudson.plugins.parameterizedtrigger.FileBuildParameters/failTriggerOnMissing'
81
+ expect(node.children.first.content).to eq 'true'
73
82
  end
74
83
  end
75
84
  end
@@ -1,11 +1,7 @@
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
7
-
8
- before(:all) do
4
+ before :all do
9
5
  JenkinsPipelineBuilder.credentials = {
10
6
  server_ip: '127.0.0.1',
11
7
  server_port: 8080,
@@ -13,11 +9,17 @@ describe JenkinsPipelineBuilder::Generator do
13
9
  password: 'password',
14
10
  log_location: '/dev/null'
15
11
  }
12
+ end
13
+
14
+ after :each do
15
+ JenkinsPipelineBuilder.registry.clear_versions
16
+ end
17
+
18
+ before :each do
16
19
  @generator = JenkinsPipelineBuilder.generator
17
20
  end
18
21
 
19
22
  after(:each) do
20
- JenkinsPipelineBuilder.no_debug!
21
23
  @generator.job_collection = JenkinsPipelineBuilder::JobCollection.new
22
24
  end
23
25
 
@@ -109,80 +111,37 @@ describe JenkinsPipelineBuilder::Generator do
109
111
 
110
112
  describe '#pull_request' do
111
113
  before :each do
112
- allow(JenkinsPipelineBuilder.client).to receive(:plugin).and_return double(
113
- list_installed: { 'description' => '20.0', 'git' => '20.0' })
114
- JenkinsPipelineBuilder.debug!
114
+ allow(JenkinsPipelineBuilder).to receive(:debug).and_return true
115
+ JenkinsPipelineBuilder.registry.registry[:job][:scm_params].installed_version = '1000.0'
115
116
  end
116
- let(:jobs) do
117
- {
118
- '{{name}}-10-SampleJob' => {
119
- name: '{{name}}-10-SampleJob',
120
- type: :job,
121
- value: {
122
- name: '{{name}}-10-SampleJob',
123
- scm_branch: 'origin/pr/{{pull_request_number}}/head',
124
- scm_params: {
125
- refspec: 'refs/pull/*:refs/remotes/origin/pr/*'
126
- }
127
- }
128
- }
129
- }
117
+ after :each do
118
+ JenkinsPipelineBuilder.registry.registry[:job][:scm_params].clear_installed_version
130
119
  end
120
+
131
121
  let(:path) { File.expand_path('../fixtures/generator_tests/pullrequest_pipeline', __FILE__) }
132
122
  it 'produces no errors while creating pipeline PullRequest' do
133
- # Dummy data
134
- purge = []
135
- create = [
136
- {
137
- name: 'PullRequest-PR1',
138
- type: :project,
139
- value: {
140
- name: 'PullRequest-PR1',
141
- pull_request_number: '1',
142
- jobs: [
143
- '{{name}}-10-SampleJob'
144
- ]
145
- }
146
- }
147
- ]
148
- # Run the test
149
123
  job_name = 'PullRequest'
150
- expect(JenkinsPipelineBuilder::PullRequestGenerator).to receive(:new).once.and_return(
151
- double(purge: purge, create: create, jobs: jobs)
152
- )
124
+ allow_any_instance_of(JenkinsPipelineBuilder::PullRequestGenerator).to receive(:check_for_pull).and_return([1])
125
+ allow_any_instance_of(JenkinsPipelineBuilder::PullRequestGenerator).to receive(:purge_jobs).and_return(true)
153
126
  success = @generator.pull_request(path, job_name)
154
127
  expect(success).to be_truthy
155
128
  end
156
129
 
157
- it 'correclty creates jobs when there are multiple pulls open' do
158
- purge = []
159
- create = %w(1 2).map do |n|
160
- {
161
- name: "PullRequest-PR#{n}",
162
- type: :project,
163
- value: {
164
- pull_request_number: n,
165
- name: "PullRequest-PR#{n}",
166
- jobs: [
167
- '{{name}}-10-SampleJob'
168
- ]
169
- }
170
- }
171
- end
130
+ it 'correctly creates jobs when there are multiple pulls open' do
172
131
  job_name = 'PullRequest'
173
- expect(JenkinsPipelineBuilder::PullRequestGenerator).to receive(:new).once.and_return(
174
- double(purge: purge, create: create, jobs: jobs)
175
- )
132
+ allow_any_instance_of(JenkinsPipelineBuilder::PullRequestGenerator).to receive(:check_for_pull).and_return([1, 2])
176
133
  job1 = double name: 'job name'
177
134
  job2 = double name: 'job name'
178
135
  expect(JenkinsPipelineBuilder::Job).to receive(:new).once.with(
179
136
  name: 'PullRequest-PR1-10-SampleJob', scm_branch: 'origin/pr/1/head', scm_params: {
180
- refspec: 'refs/pull/*:refs/remotes/origin/pr/*'
137
+ refspec: 'refs/pull/1/head:refs/remotes/origin/pr/1/head',
138
+ changelog_to_branch: { remote: 'origin', branch: 'pr/1/head' }
181
139
  }
182
140
  ).and_return job1
183
141
  expect(JenkinsPipelineBuilder::Job).to receive(:new).once.with(
184
142
  name: 'PullRequest-PR2-10-SampleJob', scm_branch: 'origin/pr/2/head', scm_params: {
185
- refspec: 'refs/pull/*:refs/remotes/origin/pr/*'
143
+ refspec: 'refs/pull/2/head:refs/remotes/origin/pr/2/head',
144
+ changelog_to_branch: { remote: 'origin', branch: 'pr/2/head' }
186
145
  }
187
146
  ).and_return job2
188
147
  expect(job1).to receive(:create_or_update).and_return true
@@ -195,7 +154,7 @@ describe JenkinsPipelineBuilder::Generator do
195
154
  # Fails to purge old PR jobs from Jenkins
196
155
  end
197
156
 
198
- describe '#load_collection_from_path' do
157
+ describe '#load_from_path' do
199
158
  let(:project_hash) do
200
159
  [{ 'defaults' => { 'name' => 'global', 'description' => 'Tests, all the tests' } },
201
160
  { 'project' => { 'name' => 'TestProject', 'jobs' => ['{{name}}-part1'] } }]
@@ -206,28 +165,23 @@ describe JenkinsPipelineBuilder::Generator do
206
165
  }]
207
166
  end
208
167
 
209
- before :each do
210
- expect(@generator.job_collection).to receive(:load_file).once.with(view_hash, false).and_return(true)
211
- expect(@generator.job_collection).to receive(:load_file).once.with(project_hash, false).and_return(true)
212
- end
213
-
214
168
  it 'loads a yaml collection from a path' do
215
169
  path = File.expand_path('../fixtures/generator_tests/test_yaml_files', __FILE__)
216
- @generator.job_collection.send(:load_from_path, path)
170
+ @generator.job_collection.load_from_path path
217
171
  end
218
172
  it 'loads a json collection from a path' do
219
173
  path = File.expand_path('../fixtures/generator_tests/test_json_files', __FILE__)
220
- @generator.job_collection.send(:load_from_path, path)
174
+ @generator.job_collection.load_from_path path
221
175
  end
222
176
  it 'loads both yaml and json files from a path' do
223
177
  path = File.expand_path('../fixtures/generator_tests/test_combo_files', __FILE__)
224
- @generator.job_collection.send(:load_from_path, path)
178
+ @generator.job_collection.load_from_path path
225
179
  end
226
180
  end
227
181
 
228
182
  describe '#dump' do
229
183
  it "writes a job's config XML to a file" do
230
- JenkinsPipelineBuilder.debug!
184
+ allow(JenkinsPipelineBuilder).to receive(:debug).and_return true
231
185
  job_name = 'test_job'
232
186
  body = ''
233
187
  test_path = File.expand_path('../fixtures/generator_tests', __FILE__)
@@ -0,0 +1,142 @@
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+
3
+ describe JenkinsPipelineBuilder::Job do
4
+ before :all do
5
+ JenkinsPipelineBuilder.credentials = {
6
+ server_ip: '127.0.0.1',
7
+ server_port: 8080,
8
+ username: 'username',
9
+ password: 'password',
10
+ log_location: '/dev/null'
11
+ }
12
+ end
13
+
14
+ before :each do
15
+ allow(JenkinsPipelineBuilder).to receive(:logger).and_return double(
16
+ debug: true,
17
+ info: true,
18
+ warn: true,
19
+ error: true,
20
+ fatal: true
21
+ )
22
+ end
23
+
24
+ context '#create_or_update' do
25
+ before :each do
26
+ @job_double = double
27
+ @client = double job: @job_double
28
+ allow(JenkinsPipelineBuilder).to receive(:client).and_return @client
29
+ end
30
+
31
+ let(:job) { described_class.new name: 'asdf' }
32
+
33
+ it 'fails if to_xml fails' do
34
+ expect(job).to receive(:to_xml).ordered.and_return [false, 'oops']
35
+ expect(job.create_or_update).to eq [false, 'oops']
36
+ end
37
+
38
+ it 'does not call the client in debug mode' do
39
+ expect(job).to receive(:to_xml).and_return [true, '']
40
+ expect(JenkinsPipelineBuilder).to receive(:debug).and_return true
41
+ expect(JenkinsPipelineBuilder).to_not receive(:file_mode)
42
+ expect(JenkinsPipelineBuilder.client.job).to_not receive(:exists?)
43
+ job.create_or_update
44
+ end
45
+
46
+ it 'does not call the client in file mode' do
47
+ expect(job).to receive(:to_xml).and_return [true, '']
48
+ expect(JenkinsPipelineBuilder).to receive(:debug).and_return false
49
+ expect(JenkinsPipelineBuilder).to receive(:file_mode).and_return true
50
+ expect(JenkinsPipelineBuilder.client.job).to_not receive(:exists?)
51
+ job.create_or_update
52
+ end
53
+
54
+ it 'creates if the job does not exist' do
55
+ expect(JenkinsPipelineBuilder).to receive(:debug).and_return false
56
+ expect(JenkinsPipelineBuilder).to receive(:file_mode).and_return false
57
+ expect(job).to receive(:to_xml).and_return [true, '']
58
+ expect(@job_double).to receive(:exists?).with('asdf').and_return false
59
+ expect(@job_double).to receive(:create).and_return true
60
+ job.create_or_update
61
+ end
62
+
63
+ it 'updates if the job exists' do
64
+ expect(JenkinsPipelineBuilder).to receive(:debug).and_return false
65
+ expect(JenkinsPipelineBuilder).to receive(:file_mode).and_return false
66
+ expect(job).to receive(:to_xml).and_return [true, '']
67
+ expect(@job_double).to receive(:exists?).with('asdf').and_return true
68
+ expect(@job_double).to receive(:update).and_return true
69
+ job.create_or_update
70
+ end
71
+ end
72
+
73
+ context '#to_xml' do
74
+ it 'fails if the job has no name' do
75
+ job = described_class.new foo: :bar
76
+ expect { job.to_xml }.to raise_error 'Job name is not specified'
77
+ end
78
+
79
+ it 'parses inline job dsl' do
80
+ job = described_class.new job_type: 'job_dsl', name: 'asdf', job_dsl: 'this is my job dsl'
81
+
82
+ success, xml = job.to_xml
83
+ expect(success).to be true
84
+ expect(xml).to include 'javaposse.jobdsl.plugin.ExecuteDslScripts'
85
+ expect(xml).to include 'usingScriptText>true'
86
+ expect(xml).to include 'this is my job dsl'
87
+ end
88
+
89
+ it 'parses job dsl from a file' do
90
+ job = described_class.new job_type: 'job_dsl', name: 'asdf', job_dsl_targets: 'targets'
91
+
92
+ success, xml = job.to_xml
93
+ expect(success).to be true
94
+ expect(xml).to include 'javaposse.jobdsl.plugin.ExecuteDslScripts'
95
+ expect(xml).to include 'targets>targets'
96
+ expect(xml).to include 'usingScriptText>false'
97
+ end
98
+
99
+ it 'parses multi_job' do
100
+ job = described_class.new job_type: 'multi_project', name: 'asdf'
101
+
102
+ success, xml = job.to_xml
103
+ expect(success).to be true
104
+ expect(xml).to include 'com.tikal.jenkins.plugins.multijob.MultiJobProject'
105
+ end
106
+
107
+ it 'parses build flow' do
108
+ job = described_class.new job_type: 'build_flow', name: 'asdf'
109
+
110
+ success, xml = job.to_xml
111
+ expect(success).to be true
112
+ expect(xml).to include 'com.cloudbees.plugins.flow.BuildFlow'
113
+ end
114
+
115
+ it 'parses freestyle' do
116
+ job = described_class.new job_type: 'free_style', name: 'asdf'
117
+
118
+ success, xml = job.to_xml
119
+ expect(success).to be true
120
+ expect(xml).to_not include 'com.cloudbees.plugins.flow.BuildFlow'
121
+ expect(xml).to_not include 'javaposse.jobdsl.plugin.ExecuteDslScripts'
122
+ expect(xml).to_not include 'com.tikal.jenkins.plugins.multijob.MultiJobProject'
123
+ end
124
+
125
+ it 'parses pull request generator' do
126
+ job = described_class.new job_type: 'pull_request_generator', name: 'asdf'
127
+
128
+ success, xml = job.to_xml
129
+ expect(success).to be true
130
+ expect(xml).to_not include 'com.cloudbees.plugins.flow.BuildFlow'
131
+ expect(xml).to_not include 'javaposse.jobdsl.plugin.ExecuteDslScripts'
132
+ expect(xml).to_not include 'com.tikal.jenkins.plugins.multijob.MultiJobProject'
133
+ end
134
+
135
+ it 'fails on an unknown type' do
136
+ job = described_class.new job_type: 'unknonw', name: 'asdf'
137
+
138
+ success, _ = job.to_xml
139
+ expect(success).to be false
140
+ end
141
+ end
142
+ end
@@ -139,6 +139,8 @@ describe JenkinsPipelineBuilder::ModuleRegistry do
139
139
  end
140
140
 
141
141
  it 'pulls the version from the registry if it is not memoized' do
142
+ subject.clear_versions
143
+ expect(JenkinsPipelineBuilder).to receive(:debug).and_return false
142
144
  expect(JenkinsPipelineBuilder.client).to receive(:plugin).and_return double(list_installed: { 'one' => '0.1' })
143
145
  subject.versions
144
146
  end
@@ -3,10 +3,10 @@ require 'webmock/rspec'
3
3
 
4
4
  describe JenkinsPipelineBuilder::PullRequestGenerator do
5
5
  let(:pull_request_generator) { JenkinsPipelineBuilder::PullRequestGenerator }
6
- let(:project) { { name: 'pull_req_test', type: :project, value: { name: 'pull_req_test', jobs: ['{{name}}-00', '{{name}}-10', '{{name}}-11'] } } }
6
+ let(:project) { { name: 'pull_req_test', type: :project, value: { name: 'pull_req_test', jobs: [{ name: '{{name}}-00', type: :job, name: '{{name}}-00', job_type: 'pull_request_generator', git_url: 'https://www.github.com/', git_repo: 'jenkins_pipeline_builder', git_org: 'constantcontact', jobs: ['{{name}}-10', '{{name}}-11'], builders: [{ shell_command: 'generate -v || gem install jenkins_pipeline_builder\ngenerate pipeline -c config/{{login_config}} pull_request pipeline/ {{name}}\n' }] }, '{{name}}-10', '{{name}}-11'] } } }
7
7
  let(:jobs) { { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }] } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}' } } } }
8
8
  let(:create_jobs) { [{ name: 'pull_req_test-PR5', type: :project, value: { name: 'pull_req_test-PR5', jobs: ['{{name}}-10', '{{name}}-11'], pull_request_number: '5' } }, { name: 'pull_req_test-PR6', type: :project, value: { name: 'pull_req_test-PR6', jobs: ['{{name}}-10', '{{name}}-11'], pull_request_number: '6' } }] }
9
- let(:pull_request) { { name: '{{name}}-00', type: :job, name: '{{name}}-00', job_type: 'pull_request_generator', git_url: 'https://www.github.com/', git_repo: 'jenkins_pipeline_builder', git_org: 'constantcontact', jobs: ['{{name}}-10', '{{name}}-11'], builders: [{ shell_command: 'generate -v || gem install jenkins_pipeline_builder\ngenerate pipeline -c config/{{login_config}} pull_request pipeline/ {{name}}\n' }] } }
9
+ let(:generator) { JenkinsPipelineBuilder::Generator.new }
10
10
  before do
11
11
  # Request to get current pull requests from github
12
12
  stub_request(:any, 'https://www.github.com/api/v3/repos/constantcontact/jenkins_pipeline_builder/pulls').to_return(body: '[{"number": 5,"state": "open","title": "Update README again" },{"number": 6,"state": "open", "title": "Update README again2"}]')
@@ -16,13 +16,17 @@ describe JenkinsPipelineBuilder::PullRequestGenerator do
16
16
  after(:all) do
17
17
  FileUtils.rm_r 'pull_requests.csv'
18
18
  end
19
+
19
20
  it 'can work without a csv' do
20
- pull = pull_request_generator.new(project, jobs, pull_request)
21
+ pending 'rework this'
22
+ pull = pull_request_generator.new(project, generator)
23
+ generator.job_collection.collection = jobs
21
24
  expect(pull.purge.count).to eq(0)
22
25
  expect(pull.create).to eq(create_jobs)
23
26
  end
24
27
  it 'can work with a csv' do
25
- pull = pull_request_generator.new(project, jobs, pull_request)
28
+ pending 'rework this'
29
+ pull = pull_request_generator.new(project, generator)
26
30
  expect(pull.purge.count).to eq(0)
27
31
  expect(pull.create).to eq(create_jobs)
28
32
  end
@@ -2,14 +2,20 @@ require File.expand_path('../spec_helper', __FILE__)
2
2
  require 'webmock/rspec'
3
3
 
4
4
  describe JenkinsPipelineBuilder::PullRequest do
5
+ before :each do
6
+ JenkinsPipelineBuilder.registry.registry[:job][:scm_params].installed_version = '1000.0'
7
+ end
8
+ after :each do
9
+ JenkinsPipelineBuilder.registry.registry[:job][:scm_params].clear_installed_version
10
+ end
5
11
  let(:pull_request_class) { JenkinsPipelineBuilder::PullRequest }
6
12
  let(:project) { { name: 'pull_req_test', type: :project, value: { name: 'pull_req_test', jobs: ['{{name}}-00', '{{name}}-10', '{{name}}-11'] } } }
7
- let(:pull_request) { { name: '{{name}}-00', type: :job, name: '{{name}}-00', job_type: 'pull_request_generator', git_url: 'https://www.github.com/', git_repo: 'jenkins_pipeline_builder', git_org: 'constantcontact', jobs: ['{{name}}-10', '{{name}}-11'], builders: [{ shell_command: 'generate -v || gem install jenkins_pipeline_builder\ngenerate pipeline -c config/{{login_config}} pull_request pipeline/ {{name}}\n' }] } }
13
+ let(:pull_request) { { name: '{{name}}-00', type: :job, name: '{{name}}-00', job_type: 'pull_request_generator', git_url: 'https://www.github.com/', git_repo: 'jenkins_pipeline_builder', git_org: 'constantcontact', value: { jobs: ['{{name}}-10', '{{name}}-11'] }, builders: [{ shell_command: 'generate -v || gem install jenkins_pipeline_builder\ngenerate pipeline -c config/{{login_config}} pull_request pipeline/ {{name}}\n' }] } }
8
14
  let(:jobs) { { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }] } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}' } } } }
9
15
  describe '#initialize' do
10
16
  it 'process pull_request' do
11
17
  pull = pull_request_class.new(project, 2, jobs, pull_request)
12
- post_jobs = { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }], scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { refspec: 'refs/pull/*:refs/remotes/origin/pr/*' } } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}', scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { refspec: 'refs/pull/*:refs/remotes/origin/pr/*' } } } }
18
+ post_jobs = { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }], scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { changelog_to_branch: { remote: 'origin', branch: 'pr/{{pull_request_number}}/head' }, refspec: 'refs/pull/{{pull_request_number}}/head:refs/remotes/origin/pr/{{pull_request_number}}/head' } } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}', scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { changelog_to_branch: { remote: 'origin', branch: 'pr/{{pull_request_number}}/head' }, refspec: 'refs/pull/{{pull_request_number}}/head:refs/remotes/origin/pr/{{pull_request_number}}/head' } } } }
13
19
  post_project = { name: 'pull_req_test-PR2', type: :project, value: { name: 'pull_req_test-PR2', jobs: ['{{name}}-00', '{{name}}-10', '{{name}}-11'], pull_request_number: '2' } }
14
20
 
15
21
  expect(pull.project).to eq(post_project)
@@ -23,7 +29,7 @@ describe JenkinsPipelineBuilder::PullRequest do
23
29
  end
24
30
  it 'process pull_request' do
25
31
  pull = pull_request_class.new(project, 2, jobs, pull_request)
26
- post_jobs = { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }], scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { refspec: 'refs/pull/*:refs/remotes/origin/pr/*' } } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}', scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { refspec: 'refs/pull/*:refs/remotes/origin/pr/*' } } } }
32
+ post_jobs = { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }], scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { refspec: 'refs/pull/{{pull_request_number}}/head:refs/remotes/origin/pr/{{pull_request_number}}/head' } } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}', scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { refspec: 'refs/pull/{{pull_request_number}}/head:refs/remotes/origin/pr/{{pull_request_number}}/head' } } } }
27
33
  expect(pull.jobs).to eq(post_jobs)
28
34
  end
29
35
  end
@@ -34,7 +40,7 @@ describe JenkinsPipelineBuilder::PullRequest do
34
40
  end
35
41
  it 'process pull_request' do
36
42
  pull = pull_request_class.new(project, 2, jobs, pull_request)
37
- post_jobs = { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }], scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { refspec: 'refs/pull/*:refs/remotes/origin/pr/*', changelog_to_branch: { remote: 'origin', branch: 'pr/{{pull_request_number}}/head' } } } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}', scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { refspec: 'refs/pull/*:refs/remotes/origin/pr/*', changelog_to_branch: { remote: 'origin', branch: 'pr/{{pull_request_number}}/head' } } } } }
43
+ post_jobs = { '{{name}}-10' => { name: '{{name}}-10', type: :'job-template', value: { name: '{{name}}-10', description: '{{description}}', publishers: [{ downstream: { project: '{{job@{{name}}-11}}' } }], scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { refspec: 'refs/pull/{{pull_request_number}}/head:refs/remotes/origin/pr/{{pull_request_number}}/head', changelog_to_branch: { remote: 'origin', branch: 'pr/{{pull_request_number}}/head' } } } }, '{{name}}-11' => { name: '{{name}}-11', type: :'job-template', value: { name: '{{name}}-11', description: '{{description}}', scm_branch: 'origin/pr/{{pull_request_number}}/head', scm_params: { refspec: 'refs/pull/{{pull_request_number}}/head:refs/remotes/origin/pr/{{pull_request_number}}/head', changelog_to_branch: { remote: 'origin', branch: 'pr/{{pull_request_number}}/head' } } } } }
38
44
  expect(pull.jobs).to eq(post_jobs)
39
45
  end
40
46
  end
@@ -27,6 +27,7 @@ describe JenkinsPipelineBuilder::View do
27
27
  stub_request(:any, 'http://username:password@127.0.0.1:8080/api/json').to_return(body: '{"assignedLabels":[{}],"mode":"NORMAL","nodeDescription":"the master Jenkins node","nodeName":"","numExecutors":2,"description":null,"jobs":[{"name":"PurgeTest-PR1","url":"http://localhost:8080/job/PurgeTest-PR1/","color":"notbuilt" },{"name":"PurgeTest-PR3","url":"http://localhost:8080/job/PurgeTest-PR3/","color":"notbuilt" },{"name":"PurgeTest-PR4","url":"http://localhost:8080/job/PurgeTest-PR4/","color":"notbuilt"}],"overallLoad":{},"primaryView":{"name":"All","url":"http://localhost:8080/" },"quietingDown":false,"slaveAgentPort":0,"unlabeledLoad":{},"useCrumbs":false,"useSecurity":true,"views":[{"name":"All","url":"http://localhost:8080/"}, {"name":"duplicate_view"}]}')
28
28
  stub_request(:any, 'http://username:password@127.0.0.1:8080/view/ParentView/api/json').to_return(body: '{"assignedLabels":[{}],"mode":"NORMAL","nodeDescription":"the master Jenkins node","nodeName":"","numExecutors":2,"description":null,"jobs":[{"name":"PurgeTest-PR1","url":"http://localhost:8080/job/PurgeTest-PR1/","color":"notbuilt" },{"name":"PurgeTest-PR3","url":"http://localhost:8080/job/PurgeTest-PR3/","color":"notbuilt" },{"name":"PurgeTest-PR4","url":"http://localhost:8080/job/PurgeTest-PR4/","color":"notbuilt"}],"overallLoad":{},"primaryView":{"name":"All","url":"http://localhost:8080/" },"quietingDown":false,"slaveAgentPort":0,"unlabeledLoad":{},"useCrumbs":false,"useSecurity":true,"views":[{"name":"All","url":"http://localhost:8080/"}]}')
29
29
  stub_request(:post, /.*/).to_return(status: 200) # Stop actual creating/deleting
30
+ allow(JenkinsPipelineBuilder).to receive(:debug).and_return false
30
31
  end
31
32
  context 'parent view is specified' do
32
33
  it 'needs to create the parent view and view' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jenkins_pipeline_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.12
4
+ version: 0.10.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Moochnick
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-25 00:00:00.000000000 Z
12
+ date: 2015-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -369,7 +369,6 @@ files:
369
369
  - lib/jenkins_pipeline_builder/version.rb
370
370
  - lib/jenkins_pipeline_builder/view.rb
371
371
  - out/.keep
372
- - out/xml/.keep
373
372
  - pipeline/Jenkins-Pipeline-Builder.yaml
374
373
  - pipeline/project.yaml
375
374
  - spec/lib/jenkins_pipeline_builder/cli/helper_spec.rb
@@ -408,6 +407,7 @@ files:
408
407
  - spec/lib/jenkins_pipeline_builder/fixtures/view_test/parent_view.yaml
409
408
  - spec/lib/jenkins_pipeline_builder/fixtures/view_test/regular_view.yaml
410
409
  - spec/lib/jenkins_pipeline_builder/generator_spec.rb
410
+ - spec/lib/jenkins_pipeline_builder/job_spec.rb
411
411
  - spec/lib/jenkins_pipeline_builder/module_registry_spec.rb
412
412
  - spec/lib/jenkins_pipeline_builder/pull_request_generator_spec.rb
413
413
  - spec/lib/jenkins_pipeline_builder/pull_request_spec.rb
@@ -476,6 +476,7 @@ test_files:
476
476
  - spec/lib/jenkins_pipeline_builder/fixtures/view_test/parent_view.yaml
477
477
  - spec/lib/jenkins_pipeline_builder/fixtures/view_test/regular_view.yaml
478
478
  - spec/lib/jenkins_pipeline_builder/generator_spec.rb
479
+ - spec/lib/jenkins_pipeline_builder/job_spec.rb
479
480
  - spec/lib/jenkins_pipeline_builder/module_registry_spec.rb
480
481
  - spec/lib/jenkins_pipeline_builder/pull_request_generator_spec.rb
481
482
  - spec/lib/jenkins_pipeline_builder/pull_request_spec.rb