jenkins_pipeline_builder 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +28 -43
  4. data/{spec/unit_tests/spec_helper.rb → .simplecov} +2 -15
  5. data/README.md +66 -11
  6. data/Rakefile +1 -25
  7. data/bin/generate +0 -1
  8. data/jenkins_pipeline_builder.gemspec +6 -6
  9. data/lib/jenkins_pipeline_builder.rb +14 -8
  10. data/lib/jenkins_pipeline_builder/builders.rb +207 -155
  11. data/lib/jenkins_pipeline_builder/cli/base.rb +1 -1
  12. data/lib/jenkins_pipeline_builder/cli/describe.rb +12 -8
  13. data/lib/jenkins_pipeline_builder/cli/list.rb +7 -7
  14. data/lib/jenkins_pipeline_builder/compiler.rb +62 -49
  15. data/lib/jenkins_pipeline_builder/extensions.rb +108 -0
  16. data/lib/jenkins_pipeline_builder/generator.rb +209 -160
  17. data/lib/jenkins_pipeline_builder/job_builder.rb +174 -105
  18. data/lib/jenkins_pipeline_builder/module_registry.rb +43 -59
  19. data/lib/jenkins_pipeline_builder/publishers.rb +166 -93
  20. data/lib/jenkins_pipeline_builder/pull_request.rb +7 -7
  21. data/lib/jenkins_pipeline_builder/triggers.rb +63 -40
  22. data/lib/jenkins_pipeline_builder/utils.rb +10 -10
  23. data/lib/jenkins_pipeline_builder/version.rb +1 -1
  24. data/lib/jenkins_pipeline_builder/view.rb +94 -123
  25. data/lib/jenkins_pipeline_builder/wrappers.rb +163 -96
  26. data/spec/lib/jenkins_pipeline_builder/compiler_spec.rb +31 -0
  27. data/spec/lib/jenkins_pipeline_builder/extensions_spec.rb +145 -0
  28. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-10-SampleJob.yaml +2 -0
  29. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/PullRequest-40-PullRequestGenerator.yaml +12 -0
  30. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/pullrequest_pipeline/project.yaml +12 -0
  31. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-10-Commit.yaml +3 -0
  32. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-20-Acceptance.yaml +3 -0
  33. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/SamplePipeline-30-Release.yaml +3 -0
  34. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/project.yaml +12 -0
  35. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/sample_pipeline/view.yaml +5 -0
  36. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/jobs.tar.gz +0 -0
  37. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/project.yaml +15 -0
  38. data/spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/test_job.xml +48 -0
  39. data/spec/lib/jenkins_pipeline_builder/fixtures/view_test/duplicate_view.yaml +4 -0
  40. data/spec/lib/jenkins_pipeline_builder/fixtures/view_test/parent_view.yaml +9 -0
  41. data/spec/lib/jenkins_pipeline_builder/fixtures/view_test/regular_view.yaml +5 -0
  42. data/spec/lib/jenkins_pipeline_builder/generator_spec.rb +165 -0
  43. data/spec/lib/jenkins_pipeline_builder/module_registry_spec.rb +147 -0
  44. data/spec/lib/jenkins_pipeline_builder/pull_request_spec.rb +47 -0
  45. data/spec/lib/jenkins_pipeline_builder/spec_helper.rb +25 -0
  46. data/spec/lib/jenkins_pipeline_builder/utils_spec.rb +22 -0
  47. data/spec/lib/jenkins_pipeline_builder/view_spec.rb +54 -0
  48. metadata +54 -136
  49. data/lib/jenkins_pipeline_builder/extendable.rb +0 -42
  50. data/lib/jenkins_pipeline_builder/xml_helper.rb +0 -40
  51. data/spec/func_tests/spec_helper.rb +0 -18
  52. data/spec/func_tests/view_spec.rb +0 -90
  53. data/spec/unit_tests/compiler_spec.rb +0 -20
  54. data/spec/unit_tests/fixtures/files/Job-Build-Flow.xml +0 -57
  55. data/spec/unit_tests/fixtures/files/Job-Build-Flow.yaml +0 -22
  56. data/spec/unit_tests/fixtures/files/Job-Build-Maven.xml +0 -129
  57. data/spec/unit_tests/fixtures/files/Job-Build-Maven.yaml +0 -31
  58. data/spec/unit_tests/fixtures/files/Job-DSL.yaml +0 -14
  59. data/spec/unit_tests/fixtures/files/Job-DSL1.xml +0 -27
  60. data/spec/unit_tests/fixtures/files/Job-DSL2.xml +0 -25
  61. data/spec/unit_tests/fixtures/files/Job-Gem-Build.xml +0 -142
  62. data/spec/unit_tests/fixtures/files/Job-Gem-Build.yaml +0 -43
  63. data/spec/unit_tests/fixtures/files/Job-Generate-From-Template.xml +0 -32
  64. data/spec/unit_tests/fixtures/files/Job-Generate-From-Template.yaml +0 -8
  65. data/spec/unit_tests/fixtures/files/Job-Multi-Project.xml +0 -134
  66. data/spec/unit_tests/fixtures/files/Job-Multi-Project.yaml +0 -49
  67. data/spec/unit_tests/fixtures/files/archive_artifact.xml +0 -23
  68. data/spec/unit_tests/fixtures/files/archive_artifact.yaml +0 -5
  69. data/spec/unit_tests/fixtures/files/choice_parameter.xml +0 -39
  70. data/spec/unit_tests/fixtures/files/choice_parameter.yaml +0 -14
  71. data/spec/unit_tests/fixtures/files/concurrent_build.xml +0 -17
  72. data/spec/unit_tests/fixtures/files/concurrent_build.yaml +0 -4
  73. data/spec/unit_tests/fixtures/files/copy_artifact.xml +0 -30
  74. data/spec/unit_tests/fixtures/files/copy_artifact.yaml +0 -14
  75. data/spec/unit_tests/fixtures/files/discard_old.xml +0 -17
  76. data/spec/unit_tests/fixtures/files/discard_old.yaml +0 -8
  77. data/spec/unit_tests/fixtures/files/downstream.xml +0 -36
  78. data/spec/unit_tests/fixtures/files/downstream.yaml +0 -13
  79. data/spec/unit_tests/fixtures/files/downstream_blocking.xml +0 -19
  80. data/spec/unit_tests/fixtures/files/downstream_blocking.yaml +0 -15
  81. data/spec/unit_tests/fixtures/files/git_include_exclude.xml +0 -53
  82. data/spec/unit_tests/fixtures/files/git_include_exclude.yaml +0 -8
  83. data/spec/unit_tests/fixtures/files/groovy_postbuild.xml +0 -29
  84. data/spec/unit_tests/fixtures/files/groovy_postbuild.yaml +0 -9
  85. data/spec/unit_tests/fixtures/files/periodic_build.xml +0 -21
  86. data/spec/unit_tests/fixtures/files/periodic_build.yaml +0 -5
  87. data/spec/unit_tests/fixtures/files/post_build_script.xml +0 -28
  88. data/spec/unit_tests/fixtures/files/post_build_script.yaml +0 -11
  89. data/spec/unit_tests/fixtures/files/prepare_environment.xml +0 -17
  90. data/spec/unit_tests/fixtures/files/prepare_environment.yaml +0 -7
  91. data/spec/unit_tests/fixtures/files/project.yaml +0 -15
  92. data/spec/unit_tests/fixtures/files/properties_file.xml +0 -27
  93. data/spec/unit_tests/fixtures/files/properties_file.yaml +0 -8
  94. data/spec/unit_tests/fixtures/files/remote_job.xml +0 -18
  95. data/spec/unit_tests/fixtures/files/remote_job.yaml +0 -19
  96. data/spec/unit_tests/fixtures/files/rvm05.xml +0 -26
  97. data/spec/unit_tests/fixtures/files/rvm05.yaml +0 -5
  98. data/spec/unit_tests/fixtures/files/specific_priority.xml +0 -22
  99. data/spec/unit_tests/fixtures/files/specific_priority.yaml +0 -6
  100. data/spec/unit_tests/fixtures/files/throttle.xml +0 -17
  101. data/spec/unit_tests/fixtures/files/throttle.yaml +0 -8
  102. data/spec/unit_tests/fixtures/files/upstream.xml +0 -17
  103. data/spec/unit_tests/fixtures/files/upstream.yaml +0 -7
  104. data/spec/unit_tests/fixtures/pull_request/00.yaml +0 -14
  105. data/spec/unit_tests/fixtures/pull_request/10.yaml +0 -7
  106. data/spec/unit_tests/fixtures/pull_request/11.yaml +0 -4
  107. data/spec/unit_tests/fixtures/pull_request/project.yaml +0 -11
  108. data/spec/unit_tests/fixtures/templates/external_job.yaml +0 -4
  109. data/spec/unit_tests/fixtures/templates/project_with_jobs.yaml +0 -25
  110. data/spec/unit_tests/generator_spec.rb +0 -94
  111. data/spec/unit_tests/module_registry_spec.rb +0 -16
  112. data/spec/unit_tests/resolve_dependencies_spec.rb +0 -266
@@ -0,0 +1,12 @@
1
+ - job:
2
+ name: '{{name}}-40-PullRequestGenerator'
3
+ job_type: pull_request_generator
4
+ git_url: '{{git_url}}'
5
+ git_repo: '{{git_repo}}'
6
+ git_org: '{{git_org}}'
7
+ jobs:
8
+ - '{{name}}-10-SampleJob'
9
+ builders:
10
+ - shell_command: |
11
+ generate -v || gem install jenkins_pipeline_builder
12
+ generate pipeline -d pull_request pipeline/ PullRequest
@@ -0,0 +1,12 @@
1
+ - defaults:
2
+ name: global
3
+ description: 'Test pipeline for generator_spec.rb'
4
+ git_url: 'https://github.com'
5
+ git_org: 'bencentra'
6
+ git_repo: 'generator_tests'
7
+
8
+ - project:
9
+ name: PullRequest
10
+ jobs:
11
+ - '{{name}}-10-SampleJob'
12
+ - '{{name}}-40-PullRequestGenerator'
@@ -0,0 +1,3 @@
1
+ - job:
2
+ name: '{{name}}-10-Commit'
3
+ description: '{{description}}'
@@ -0,0 +1,3 @@
1
+ - job:
2
+ name: '{{name}}-20-Acceptance'
3
+ description: '{{description}}'
@@ -0,0 +1,3 @@
1
+ - job:
2
+ name: '{{name}}-30-Release'
3
+ description: '{{description}}'
@@ -0,0 +1,12 @@
1
+ - defaults:
2
+ name: global
3
+ description: 'Test pipeline for generator_spec.rb'
4
+
5
+ - project:
6
+ name: SamplePipeline
7
+ jobs:
8
+ - '{{name}}-10-Commit'
9
+ - '{{name}}-20-Acceptance'
10
+ - '{{name}}-30-Release'
11
+ views:
12
+ - '{{name}} View'
@@ -0,0 +1,5 @@
1
+ - view:
2
+ name: '{{name}} View'
3
+ type: 'listview'
4
+ description: '{{description}}'
5
+ regex: '{{name}}.*'
@@ -0,0 +1,15 @@
1
+ - defaults:
2
+ name: global
3
+ description: 'Test pipeline for generator_spec.rb'
4
+
5
+ - dependencies:
6
+ - source:
7
+ url: 'spec/lib/jenkins_pipeline_builder/fixtures/generator_tests/template_pipeline/jobs.tar.gz'
8
+ templates:
9
+ - name: test_temp
10
+
11
+ - project:
12
+ name: TemplatePipeline
13
+ jobs:
14
+ - '{{name}}-10'
15
+ - '{{name}}-11'
@@ -0,0 +1,48 @@
1
+ <?xml version="1.0"?>
2
+ <project>
3
+ <actions/>
4
+ <description>Jenkins Lab Step 1</description>
5
+ <keepDependencies>false</keepDependencies>
6
+ <properties>
7
+ <jenkins.plugins.hipchat.HipChatNotifier_-HipChatJobProperty plugin="hipchat@0.1.5">
8
+ <room/>
9
+ <startNotification>false</startNotification>
10
+ <notifySuccess>false</notifySuccess>
11
+ <notifyAborted>false</notifyAborted>
12
+ <notifyNotBuilt>false</notifyNotBuilt>
13
+ <notifyUnstable>false</notifyUnstable>
14
+ <notifyFailure>false</notifyFailure>
15
+ <notifyBackToNormal>false</notifyBackToNormal>
16
+ </jenkins.plugins.hipchat.HipChatNotifier_-HipChatJobProperty>
17
+ <jenkins.advancedqueue.AdvancedQueueSorterJobProperty plugin="PrioritySorter@2.6">
18
+ <useJobPriority>false</useJobPriority>
19
+ <priority>-1</priority>
20
+ </jenkins.advancedqueue.AdvancedQueueSorterJobProperty>
21
+ <hudson.plugins.throttleconcurrents.ThrottleJobProperty plugin="throttle-concurrents@1.8.2">
22
+ <maxConcurrentPerNode>0</maxConcurrentPerNode>
23
+ <maxConcurrentTotal>0</maxConcurrentTotal>
24
+ <throttleEnabled>false</throttleEnabled>
25
+ <throttleOption>project</throttleOption>
26
+ </hudson.plugins.throttleconcurrents.ThrottleJobProperty>
27
+ </properties>
28
+ <scm class="hudson.scm.NullSCM"/>
29
+ <canRoam>true</canRoam>
30
+ <disabled>false</disabled>
31
+ <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
32
+ <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
33
+ <triggers/>
34
+ <concurrentBuild>false</concurrentBuild>
35
+ <builders>
36
+ <hudson.tasks.Shell>
37
+ <command>echo "Hello" &gt; artifact.txt</command>
38
+ </hudson.tasks.Shell>
39
+ </builders>
40
+ <publishers>
41
+ <hudson.tasks.ArtifactArchiver>
42
+ <artifacts>artifact.txt</artifacts>
43
+ <latestOnly>false</latestOnly>
44
+ <allowEmptyArchive>false</allowEmptyArchive>
45
+ </hudson.tasks.ArtifactArchiver>
46
+ </publishers>
47
+ <buildWrappers/>
48
+ </project>
@@ -0,0 +1,4 @@
1
+ - view:
2
+ name: 'duplicate_view'
3
+ type: 'categorizedView'
4
+ description: 'ViewTest'
@@ -0,0 +1,9 @@
1
+ - view:
2
+ name: 'view'
3
+ parent_view: 'ParentView'
4
+ type: 'categorizedView'
5
+ description: 'ViewTest'
6
+ regex: 'ViewTest.*'
7
+ groupingRules:
8
+ - groupRegex: "ViewTest-1.*"
9
+ namingRule: "1. Commit Stage"
@@ -0,0 +1,5 @@
1
+ - view:
2
+ name: 'RegularView'
3
+ type: 'listview'
4
+ description: 'ViewTest'
5
+ status_filter: enabled_jobs_only
@@ -0,0 +1,165 @@
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+
3
+ describe JenkinsPipelineBuilder::Generator do
4
+
5
+ before(:all) do
6
+ JenkinsPipelineBuilder.credentials = {
7
+ server_ip: '127.0.0.1',
8
+ server_port: 8080,
9
+ username: 'username',
10
+ password: 'password',
11
+ log_location: '/dev/null'
12
+ }
13
+ JenkinsPipelineBuilder.client
14
+ @generator = JenkinsPipelineBuilder.generator
15
+ end
16
+
17
+ after(:each) do
18
+ @generator.debug = false
19
+ @generator.job_collection = {}
20
+ @generator.remote_depends = {}
21
+ @generator.module_registry = JenkinsPipelineBuilder::ModuleRegistry.new
22
+ JenkinsPipelineBuilder.load_registry
23
+ end
24
+
25
+ describe 'initialized in before(:example)' do
26
+ it 'creates a new generator' do
27
+ expect(@generator.job_collection).to be_empty
28
+ expect(@generator.module_registry).not_to be_nil
29
+ end
30
+
31
+ it 'accepts new jobs into the job_collection' do
32
+ job_name = 'sample_job'
33
+ job_type = 'project'
34
+ job_value = {}
35
+ @generator.job_collection[job_name] = { name: job_name, type: job_type, value: job_value }
36
+ expect(@generator.job_collection).not_to be_empty
37
+ expect(@generator.job_collection[job_name]).not_to be_nil
38
+ end
39
+ end
40
+
41
+ describe '#debug=' do
42
+ it 'sets debug mode to false' do
43
+ @generator.debug = false
44
+ expect(@generator.debug).to be false
45
+ expect(@generator.logger.level).to eq(Logger::INFO)
46
+ end
47
+
48
+ it 'sets debug mode to true' do
49
+ @generator.debug = true
50
+ expect(@generator.debug).to be true
51
+ expect(@generator.logger.level).to eq(Logger::DEBUG)
52
+ end
53
+ end
54
+
55
+ describe '#client' do
56
+ it 'returns the singleton JenkinsPipelineBuilder.client object' do
57
+ expect(@generator.client).to be(JenkinsPipelineBuilder.client)
58
+ end
59
+ end
60
+
61
+ describe '#view' do
62
+ it 'returns a new JenkinsPipelineBuilder::View object' do
63
+ view = @generator.view
64
+ expect(view).not_to be_nil
65
+ # expect(view.generator).to be(@generator)
66
+ end
67
+ end
68
+
69
+ describe '#bootstrap' do
70
+ it 'produces no errors while creating pipeline SamplePipeline with view' do
71
+ @generator.debug = true
72
+ job_name = 'SamplePipeline'
73
+ path = File.expand_path('../fixtures/generator_tests/sample_pipeline', __FILE__)
74
+ errors = @generator.bootstrap(path, job_name)
75
+ expect(errors.empty?).to be true
76
+ Dir["#{job_name}*.xml"].each do |file|
77
+ File.delete(file)
78
+ end
79
+ end
80
+
81
+ it 'produces no errors while creating pipeline TemplatePipeline' do
82
+ @generator.debug = true
83
+ job_name = 'TemplatePipeline'
84
+ path = File.expand_path('../fixtures/generator_tests/template_pipeline', __FILE__)
85
+ errors = @generator.bootstrap(path, job_name)
86
+ expect(errors.empty?).to be true
87
+ Dir["#{job_name}*.xml"].each do |file|
88
+ File.delete(file)
89
+ end
90
+ end
91
+ # Things to check for:
92
+ # Fail - Finds duplicate job names (load_job_collection)
93
+ # Extension fails to register?
94
+ # resolve_project returns false
95
+ # Accumulates errors in publish_project/job path
96
+ it 'produces no errors while creating a job dsl'
97
+ end
98
+
99
+ describe '#pull_request' do
100
+ it 'produces no errors while creating pipeline PullRequest' do
101
+ # Dummy data
102
+ purge = []
103
+ create = [
104
+ {
105
+ name: 'PullRequest-PR1',
106
+ type: :project,
107
+ value: {
108
+ name: 'PullRequest-PR1',
109
+ jobs: [
110
+ '{{name}}-10-SampleJob'
111
+ ]
112
+ }
113
+ }
114
+ ]
115
+ jobs = {
116
+ '{{name}}-10-SampleJob' => {
117
+ name: '{{name}}-10-SampleJob',
118
+ type: :job,
119
+ value: {
120
+ name: '{{name}}-10-SampleJob',
121
+ scm_branch: 'origin/pr/2/head',
122
+ scm_params: {
123
+ refspec: 'refs/pull/*:refs/remotes/origin/pr/*'
124
+ }
125
+ }
126
+ }
127
+ }
128
+ # Run the test
129
+ @generator.debug = true
130
+ job_name = 'PullRequest'
131
+ path = File.expand_path('../fixtures/generator_tests/pullrequest_pipeline', __FILE__)
132
+ JenkinsPipelineBuilder::PullRequestGenerator.should_receive(:new).once.and_return(
133
+ double(purge: purge, create: create, jobs: jobs)
134
+ )
135
+ success = @generator.pull_request(path, job_name)
136
+ expect(success).to be_truthy
137
+ Dir["#{job_name}*.xml"].each do |file|
138
+ File.delete(file)
139
+ end
140
+ end
141
+ # Things to check for
142
+ # Fail - no PR job type found
143
+ # Encounters failure during build process
144
+ # Fails to purge old PR jobs from Jenkins
145
+ end
146
+
147
+ describe '#dump' do
148
+ it "writes a job's config XML to a file" do
149
+ @generator.debug = true
150
+ job_name = 'test_job'
151
+ body = ''
152
+ test_path = File.expand_path('../fixtures/generator_tests', __FILE__)
153
+ File.open("#{test_path}/#{job_name}.xml", 'r') do |f|
154
+ f.each_line do |line|
155
+ body << line
156
+ end
157
+ end
158
+ stub_request(:get, 'http://username:password@127.0.0.1:8080/job/test_job/config.xml')
159
+ .to_return(status: 200, body: "#{body}", headers: {})
160
+ @generator.dump(job_name)
161
+ expect(File.exist?("#{job_name}.xml")).to be true
162
+ File.delete("#{job_name}.xml")
163
+ end
164
+ end
165
+ end
@@ -0,0 +1,147 @@
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+
3
+ describe JenkinsPipelineBuilder::ModuleRegistry do
4
+ describe '#register' do
5
+ it 'should return item by a specified path' do
6
+
7
+ registry = JenkinsPipelineBuilder::ModuleRegistry.new
8
+ ext = double
9
+ allow(ext).to receive(:name).and_return :foo
10
+ registry.register [:job], ext
11
+
12
+ expect(registry.get('job/foo').first.name).to eq :foo
13
+ end
14
+
15
+ it 'registered the builders correctly' do
16
+ 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]
24
+ }
25
+ registry = JenkinsPipelineBuilder.registry.registry
26
+ expect(registry[:job][:builders].size).to eq builders.size
27
+ builders.each do |builder, versions|
28
+ expect(registry[:job][:builders]).to have_key builder
29
+
30
+ versions.each do |version|
31
+ expect(registry[:job][:builders][builder]).to have_min_version version
32
+ end
33
+ end
34
+ end
35
+ it 'registered the triggers correctly' do
36
+ triggers = {
37
+ git_push: [0],
38
+ scm_polling: [0],
39
+ periodic_build: [0],
40
+ upstream: [0]
41
+ }
42
+ registry = JenkinsPipelineBuilder.registry.registry
43
+ expect(registry[:job][:triggers].size).to eq triggers.size
44
+ triggers.each do |trigger, versions|
45
+ expect(registry[:job][:triggers]).to have_key trigger
46
+
47
+ versions.each do |version|
48
+ expect(registry[:job][:triggers][trigger]).to have_min_version version
49
+ end
50
+ end
51
+ end
52
+ it 'registered the job_attributes correctly' do
53
+ 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]
63
+ }
64
+ registry = JenkinsPipelineBuilder.registry.registry
65
+ # There are 4 sub types so, we don't count those
66
+ expect(registry[:job].size - 4).to eq job_attributes.size
67
+ job_attributes.each do |job_attribute, versions|
68
+ expect(registry[:job]).to have_key job_attribute
69
+
70
+ versions.each do |version|
71
+ expect(registry[:job][job_attribute]).to have_min_version version
72
+ end
73
+ end
74
+ end
75
+ it 'registered the publishers correctly' do
76
+ 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]
87
+ }
88
+ registry = JenkinsPipelineBuilder.registry.registry
89
+ expect(registry[:job][:publishers].size).to eq publishers.size
90
+ publishers.each do |publisher, versions|
91
+ expect(registry[:job][:publishers]).to have_key publisher
92
+
93
+ versions.each do |version|
94
+ expect(registry[:job][:publishers][publisher]).to have_min_version version
95
+ end
96
+ end
97
+ end
98
+ it 'registered the wrappers correctly' do
99
+ wrappers = {
100
+ ansicolor: [0],
101
+ timestamp: [0],
102
+ name: [0],
103
+ rvm: ['0', '0.5'],
104
+ inject_passwords: [0],
105
+ inject_env_var: [0],
106
+ artifactory: [0],
107
+ maven3artifactory: [0]
108
+ }
109
+ registry = JenkinsPipelineBuilder.registry.registry
110
+ expect(registry[:job][:wrappers].size).to eq wrappers.size
111
+ wrappers.each do |wrapper, versions|
112
+ expect(registry[:job][:wrappers]).to have_key wrapper
113
+
114
+ versions.each do |version|
115
+ expect(registry[:job][:wrappers][wrapper]).to have_min_version version
116
+ end
117
+ end
118
+ end
119
+ end
120
+ describe '#initialize' do
121
+
122
+ end
123
+
124
+ describe '#entries' do
125
+
126
+ end
127
+
128
+ describe '#get' do
129
+
130
+ end
131
+
132
+ describe '#get_by_path_collection' do
133
+
134
+ end
135
+
136
+ describe '#traverse_registry_path' do
137
+
138
+ end
139
+
140
+ describe '#traverse_registry' do
141
+
142
+ end
143
+
144
+ describe '#execute_extension' do
145
+ end
146
+
147
+ end