jenkins_pipeline_builder 0.10.12 → 0.10.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -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