pdksync 0.2.0 → 0.6.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.
@@ -0,0 +1,131 @@
1
+ require 'spec_helper'
2
+ require 'pdksync/utils'
3
+ require 'tempfile'
4
+ describe 'PdkSync::Utils' do
5
+ before(:all) do
6
+ @tmp_dir = Dir.mktmpdir('testing')
7
+ end
8
+
9
+ let(:cloned_module) do
10
+ begin
11
+ Git.open(@tmp_dir)
12
+ rescue ArgumentError
13
+ PdkSync::Utils.clone_directory('puppetlabs',
14
+ 'puppetlabs-testing', @tmp_dir)
15
+ end
16
+ end
17
+
18
+ let(:metadata_file) do
19
+ File.join(@tmp_dir, 'metadata.json')
20
+ end
21
+
22
+ before(:each) do
23
+ cloned_module
24
+ end
25
+
26
+ after(:all) do
27
+ FileUtils.remove_entry @tmp_dir
28
+ end
29
+
30
+ it '#self.clone_directory' do
31
+ Dir.mktmpdir do |dir|
32
+ PdkSync::Utils.clone_directory('puppetlabs',
33
+ 'puppetlabs-testing', dir)
34
+ expect(cloned_module).to be_a Git::Base
35
+ end
36
+ end
37
+
38
+ it '#self.create_commit' do
39
+ File.write(File.join(@tmp_dir, 'README.md'), rand(32_332))
40
+ expect(PdkSync::Utils.create_commit(cloned_module, 'main', 'boom')).to match(%r{README})
41
+ end
42
+
43
+ it '#self.run_command' do
44
+ expect(PdkSync::Utils.run_command('./', 'pwd', nil)).to eq(0)
45
+ end
46
+
47
+ it '#self.pdk_update' do
48
+ expect(PdkSync::Utils.pdk_update(@tmp_dir)).to eq(0)
49
+ end
50
+
51
+ it '#self.return_template_ref' do
52
+ expect(PdkSync::Utils.return_template_ref(metadata_file)).to match(%r{^heads\/main\S+$})
53
+ end
54
+
55
+ it '#self.module_templates_url' do
56
+ allow(Octokit).to receive(:tags).with('puppetlabs/pdk').and_return([{ name: 'v1.14.1' }])
57
+ url, version = PdkSync::Utils.module_templates_url(metadata_file).split('#')
58
+ expect(url).to eq('https://github.com/puppetlabs/pdk-templates')
59
+ expect(version).to match(%r{main})
60
+ end
61
+
62
+ it '#self.change_module_template_url' do
63
+ url = 'https://github.com/nwops/pdk-templates'
64
+ ref = 'special'
65
+ expect(PdkSync::Utils.change_module_template_url(url, ref, metadata_file)).to eq('https://github.com/nwops/pdk-templates#special')
66
+ end
67
+
68
+ it '#self.checkout_branch' do
69
+ PdkSync::Utils.checkout_branch(cloned_module, 'sync1234')
70
+ branch = cloned_module.branches.find { |b| b.name.eql?('pdksync_sync1234') }
71
+ expect(branch).to be_a Git::Branch
72
+ end
73
+
74
+ it '#self.check_pdk_version is false' do
75
+ process = double
76
+ allow(process).to receive(:exitstatus).and_return(true)
77
+ allow(Octokit).to receive(:tags).with('puppetlabs/pdk').and_return([{ name: 'v1.14.1' }])
78
+ allow(PdkSync::Utils).to receive(:return_pdk_path).and_return('/opt/puppetlabs/pdk/bin/pdk')
79
+ allow(Open3).to receive(:capture3).with('/opt/puppetlabs/pdk/bin/pdk --version').and_return(['1.14.0', nil, process])
80
+ expect(PdkSync::Utils.check_pdk_version).to be false
81
+ end
82
+
83
+ it '#self.check_pdk_version is true' do
84
+ process = double
85
+ allow(process).to receive(:exitstatus).and_return(true)
86
+ allow(PdkSync::Utils).to receive(:return_pdk_path).and_return('/opt/puppetlabs/pdk/bin/pdk')
87
+ allow(Open3).to receive(:capture3).with('/opt/puppetlabs/pdk/bin/pdk --version').and_return(['1.14.0', nil, process])
88
+ allow(Octokit).to receive(:tags).with('puppetlabs/pdk').and_return([{ name: 'v1.14.0' }])
89
+ expect(PdkSync::Utils.check_pdk_version).to be true
90
+ end
91
+
92
+ it '#self.check_gem_latest_version' do
93
+ process = double
94
+ allow(process).to receive(:exitstatus).and_return(true)
95
+ allow(Octokit).to receive(:tags).with('puppetlabs/puppet_module_gems').and_return([{ name: '0.4.0' }])
96
+ expect(PdkSync::Utils.check_gem_latest_version('puppet_module_gems')).to eq '0.4.0'
97
+ end
98
+
99
+ it '#self.update_gem_latest_version_by_one' do
100
+ expect(PdkSync::Utils.update_gem_latest_version_by_one('0.4.0')).to eq Gem::Version.new('0.5')
101
+ end
102
+
103
+ it '#self.create_filespace' do
104
+ expect(PdkSync::Utils.create_filespace).to eq('modules_pdksync')
105
+ end
106
+
107
+ it '#self.setup_client' do
108
+ g = double(PdkSync::GitPlatformClient)
109
+ expect(PdkSync::GitPlatformClient).to receive(:new).with(:github,
110
+ access_token: 'github-token',
111
+ api_endpoint: nil,
112
+ gitlab_api_endpoint: 'https://gitlab.com/api/v4').and_return(g)
113
+ expect(PdkSync::Utils.setup_client).to eq(g)
114
+ end
115
+
116
+ it '#self.return_modules' do
117
+ allow_any_instance_of(PdkSync::Configuration).to receive(:managed_modules).and_return(File.join(fixtures_dir, 'fake_managed_modules.yaml'))
118
+ expect(PdkSync::Utils.return_modules).to eq(['puppetlabs/puppetlabs-testing'])
119
+ end
120
+
121
+ it '#self.validate_modules_exist' do
122
+ client = double
123
+ allow_any_instance_of(PdkSync::Configuration).to receive(:managed_modules).and_return(File.join(fixtures_dir, 'fake_managed_modules.yaml'))
124
+ allow(client).to receive(:repository?).with('puppetlabs/puppetlabs-testing').and_return(true)
125
+ expect(PdkSync::Utils.validate_modules_exist(client, ['puppetlabs-testing'])).to be true
126
+ end
127
+
128
+ it '#self.create_filespace_gem' do
129
+ expect(PdkSync::Utils.create_filespace_gem).to eq('gems_pdksync')
130
+ end
131
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pdksync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-02 00:00:00.000000000 Z
11
+ date: 2021-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,7 +25,21 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: codecov
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
@@ -67,7 +81,7 @@ dependencies:
67
81
  - !ruby/object:Gem::Version
68
82
  version: 0.50.0
69
83
  - !ruby/object:Gem::Dependency
70
- name: octokit
84
+ name: simplecov
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ">="
@@ -81,7 +95,7 @@ dependencies:
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: pry
98
+ name: simplecov-console
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - ">="
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pdk
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 1.14.1
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 1.14.1
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: git
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -109,19 +137,75 @@ dependencies:
109
137
  - !ruby/object:Gem::Version
110
138
  version: '1.3'
111
139
  - !ruby/object:Gem::Dependency
112
- name: pdk
140
+ name: rake
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: gitlab
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: octokit
113
169
  requirement: !ruby/object:Gem::Requirement
114
170
  requirements:
115
171
  - - ">="
116
172
  - !ruby/object:Gem::Version
117
- version: 1.4.1
173
+ version: '0'
118
174
  type: :runtime
119
175
  prerelease: false
120
176
  version_requirements: !ruby/object:Gem::Requirement
121
177
  requirements:
122
178
  - - ">="
123
179
  - !ruby/object:Gem::Version
124
- version: 1.4.1
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: colorize
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: jenkins_api_client
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
125
209
  description: Utility to synchronize common files across puppet modules using PDK Update.
126
210
  email:
127
211
  - ''
@@ -135,20 +219,36 @@ files:
135
219
  - ".rubocop_todo.yml"
136
220
  - ".travis.yml"
137
221
  - CHANGELOG.md
222
+ - CODEOWNERS
138
223
  - Gemfile
139
224
  - LICENSE
140
225
  - README.md
141
226
  - Rakefile
142
227
  - lib/pdksync.rb
143
- - lib/pdksync/constants.rb
228
+ - lib/pdksync/conf/puppet_abs_supported_platforms.yaml
229
+ - lib/pdksync/configuration.rb
230
+ - lib/pdksync/githubclient.rb
231
+ - lib/pdksync/gitlabclient.rb
232
+ - lib/pdksync/gitplatformclient.rb
233
+ - lib/pdksync/jenkinsclient.rb
234
+ - lib/pdksync/logger.rb
235
+ - lib/pdksync/pullrequest.rb
236
+ - lib/pdksync/rake_tasks.rb
237
+ - lib/pdksync/utils.rb
144
238
  - managed_modules.yml
145
239
  - pdksync.gemspec
146
- - spec/lib/pdksync_spec.rb
240
+ - spec/configuration_spec.rb
241
+ - spec/fixtures/fake_managed_modules.yaml
242
+ - spec/fixtures/pdksync.yml
243
+ - spec/logger_spec.rb
244
+ - spec/pdksync_spec.rb
245
+ - spec/spec_helper.rb
246
+ - spec/utils_spec.rb
147
247
  homepage: http://github.com/puppetlabs/pdksync
148
248
  licenses:
149
249
  - Apache-2.0
150
250
  metadata: {}
151
- post_install_message:
251
+ post_install_message:
152
252
  rdoc_options: []
153
253
  require_paths:
154
254
  - lib
@@ -163,10 +263,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
263
  - !ruby/object:Gem::Version
164
264
  version: '0'
165
265
  requirements: []
166
- rubyforge_project:
167
- rubygems_version: 2.7.6
168
- signing_key:
266
+ rubygems_version: 3.1.6
267
+ signing_key:
169
268
  specification_version: 4
170
269
  summary: Puppet Module PDK Synchronizer
171
270
  test_files:
172
- - spec/lib/pdksync_spec.rb
271
+ - spec/configuration_spec.rb
272
+ - spec/fixtures/fake_managed_modules.yaml
273
+ - spec/fixtures/pdksync.yml
274
+ - spec/logger_spec.rb
275
+ - spec/pdksync_spec.rb
276
+ - spec/spec_helper.rb
277
+ - spec/utils_spec.rb
@@ -1,12 +0,0 @@
1
- # @summary
2
- # A module used to contain a set of variables that are expected to remain constant across all iterations of the main pdksync module.
3
- module PdkSync # rubocop:disable Style/ClassAndModuleChildren
4
- module Constants
5
- ACCESS_TOKEN = ENV['GITHUB_TOKEN'].freeze
6
- NAMESPACE = 'puppetlabs'.freeze
7
- PDKSYNC_DIR = 'modules_pdksync'.freeze
8
- PUSH_FILE_DESTINATION = 'origin'.freeze
9
- CREATE_PR_AGAINST = 'master'.freeze
10
- MANAGED_MODULES = 'managed_modules.yml'.freeze
11
- end
12
- end
@@ -1,54 +0,0 @@
1
- require_relative '../../lib/pdksync'
2
- require 'git'
3
- require 'fileutils'
4
- require 'octokit'
5
-
6
- describe PdkSync do
7
- before(:all) do
8
- @pdksync_dir = './modules_pdksync'
9
- module_name = 'puppetlabs-testing'
10
- @module_names = ['puppetlabs-testing']
11
- @output_path = "#{@pdksync_dir}/#{module_name}"
12
- @folder = Dir.pwd
13
- end
14
-
15
- before(:each) do
16
- allow(PdkSync).to receive(:return_modules).and_return(@module_names)
17
- Dir.chdir(@folder)
18
- end
19
-
20
- context 'main method' do
21
- it 'runs clone sucessfully' do
22
- FileUtils.rm_rf(@pdksync_dir)
23
- PdkSync.create_filespace
24
- PdkSync.main(steps: [:clone])
25
- expect(Dir.exist?(@pdksync_dir)).to be(true)
26
- expect(Dir.exist?(@output_path)).to be(true)
27
- end
28
- it 'runs pdk convert, and files have changed' do
29
- PdkSync.main(steps: [:pdk_convert])
30
- File.exist?("#{@output_path}/convert_report.txt")
31
- end
32
- it 'raise when running a command with no argument' do
33
- expect { PdkSync.main(steps: [:run_a_command]) }.to raise_error(RuntimeError, %r{"run_a_command" requires an argument to run.})
34
- end
35
- it 'runs a command "touch cat.meow"' do
36
- PdkSync.main(steps: [:run_a_command], args: 'touch cat.meow')
37
- expect File.exist?("#{@output_path}/cat.meow")
38
- end
39
- it 'raise when create_commit with no arguments' do
40
- expect { PdkSync.main(steps: [:create_commit]) }.to raise_error(RuntimeError, %r{Needs a branch_name and commit_message})
41
- end
42
- it 'create_commit runs, and contains the "kittens in mittens"' do
43
- PdkSync.main(steps: [:create_commit], args: { branch_name: 'temp_branch', commit_message: 'kittens in mittens' })
44
- git_repo = Git.open(@output_path)
45
- expect(git_repo.show).to include('kittens in mittens')
46
- end
47
- it 'raise when push_and_create_pr with no arguments' do
48
- expect { PdkSync.main(steps: [:push_and_create_pr]) }.to raise_error(RuntimeError, %r{Needs a pr_title})
49
- end
50
- it 'raise when clean_branches with no arguments' do
51
- expect { PdkSync.main(steps: [:clean_branches]) }.to raise_error(RuntimeError, %r{Needs a branch_name, and the branch name contains the string pdksync})
52
- end
53
- end
54
- end