ra10ke 0.6.0 → 1.1.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.
@@ -9,7 +9,9 @@ RSpec.describe 'Ra10ke::PuppetfileParser' do
9
9
  end
10
10
 
11
11
  let(:puppetfile_modules) do
12
- [{:args=>{:version=>"2.2.0"}, :name=>"inifile", :namespace=>"puppetlabs"},
12
+ [{:args=>{:version=>'0.26.2'}, :name=>'choria', :namespace=>nil},
13
+ {:args=>{:version=>"2.2.0"}, :name=>"inifile", :namespace=>"puppetlabs"},
14
+ {:args=>{:version=>"1.0.1"}, :name=>"ruby", :namespace=>"puppetlabs"},
13
15
  {:args=>{:version=>"4.24.0"}, :name=>"stdlib", :namespace=>"puppetlabs"},
14
16
  {:args=>{:version=>"4.0.0"}, :name=>"concat", :namespace=>"puppetlabs"},
15
17
  {:args=>{:version=>"6.4.1"}, :name=>"ntp", :namespace=>"puppetlabs"},
@@ -43,8 +45,11 @@ RSpec.describe 'Ra10ke::PuppetfileParser' do
43
45
  {:branch=>"master", :git=>"https://github.com/cudgel/puppet-dotfiles.git"},
44
46
  :name=>"dotfiles",
45
47
  :namespace=>nil},
46
- {:args=>{:branch=>"prod", :git=>"https://github.com/cudgel/splunk.git"},
48
+ {:args=>{:branch=>"dev", :git=>"https://github.com/cudgel/splunk.git"},
47
49
  :name=>"splunk",
50
+ :namespace=>nil},
51
+ {:args=>{:branch=>"master", :git=>"https://github.com/voxpupuli/puppet-module.git"},
52
+ :name=>"puppet",
48
53
  :namespace=>nil}]
49
54
  end
50
55
 
@@ -83,8 +88,11 @@ RSpec.describe 'Ra10ke::PuppetfileParser' do
83
88
  {:branch=>"master", :git=>"https://github.com/cudgel/puppet-dotfiles.git"},
84
89
  :name=>"dotfiles",
85
90
  :namespace=>nil},
86
- {:args=>{:branch=>"prod", :git=>"https://github.com/cudgel/splunk.git"},
91
+ {:args=>{:branch=>"dev", :git=>"https://github.com/cudgel/splunk.git"},
87
92
  :name=>"splunk",
93
+ :namespace=>nil},
94
+ {:args=>{:branch=>"master", :git=>"https://github.com/voxpupuli/puppet-module.git"},
95
+ :name=>"puppet",
88
96
  :namespace=>nil}]
89
97
  expect(git_modules(puppetfile)).to eq(expected)
90
98
  end
@@ -9,40 +9,101 @@ RSpec.describe 'Ra10ke::Validate::Validation' do
9
9
  Ra10ke::Validate::Validation.new(puppetfile)
10
10
  end
11
11
 
12
- let(:result) do
13
- double
14
- end
15
-
16
- before(:each) do
17
- allow(result).to receive(:success?).and_return(true)
18
- # allow(instance).to receive(:`).with(anything).and_return(result)
19
- allow($CHILD_STATUS).to receive(:success?).and_return(true)
20
- allow(instance).to receive(:`).with(anything)
21
- .and_return(File.read(File.join(fixtures_dir, 'reflist.txt')))
22
- end
23
-
24
12
  let(:puppetfile) do
25
13
  File.join(fixtures_dir, 'Puppetfile')
26
14
  end
27
15
 
28
- it '#new' do
29
- expect(instance).to be_a Ra10ke::Validate::Validation
16
+ before(:each) do
17
+ allow_any_instance_of(Ra10ke::GitRepo).to receive(:valid_ref?).and_return(true)
18
+ allow_any_instance_of(Ra10ke::GitRepo).to receive(:valid_url?).and_return(true)
30
19
  end
31
20
 
32
- it '#valid_ref?' do
33
- expect(instance.valid_ref?('https://www.example.com', 'master')).to be true
21
+ describe 'bad url' do
22
+ let(:instance) do
23
+ Ra10ke::Validate::Validation.new(puppetfile)
24
+ end
25
+
26
+ let(:puppetfile) do
27
+ File.join(fixtures_dir, 'Puppetfile_with_bad_refs')
28
+ end
29
+
30
+ before(:each) do
31
+ working = double('Ra1ke::GitRepo', url: 'https://github.com/vshn/puppet-gitlab')
32
+ expect(working).to receive(:valid_ref?).with('00397b86dfb3487d9df768cbd3698d362132b5bf').and_return(false)
33
+ expect(working).to receive(:valid_commit?).with('00397b86dfb3487d9df768cbd3698d362132b5bf').and_return(true)
34
+ expect(working).to receive(:valid_url?).and_return(true)
35
+ bad_tag = double('Ra1ke::GitRepo', url: 'https://github.com/acidprime/r10k')
36
+ expect(bad_tag).to receive(:valid_ref?).with('bad').and_return(false)
37
+ expect(bad_tag).to receive(:valid_commit?).with(nil).and_return(false)
38
+ expect(bad_tag).to receive(:valid_url?).and_return(true)
39
+ bad_url = double('Ra1ke::GitRepo', url: 'https://github.com/nwops/typo')
40
+ expect(bad_url).to receive(:valid_ref?).with(nil).and_return(false)
41
+ expect(bad_url).to receive(:valid_commit?).with(nil).and_return(false)
42
+ expect(bad_url).to receive(:valid_url?).and_return(false)
43
+
44
+ expect(Ra10ke::GitRepo).to receive(:new).and_return(working, bad_tag, bad_url)
45
+ end
46
+
47
+ it 'details mods that are bad' do
48
+ expect(instance.all_modules.find { |m| !m[:valid_url?] }).to be_a Hash
49
+ expect(instance.all_modules.find_all { |m| !m[:valid_ref?] }.count).to eq(2)
50
+ end
34
51
  end
35
52
 
36
- it '#valid_commit?' do
37
- expect(instance.valid_commit?('https://www.example.com', 'master')).to be true
53
+ describe 'control_branch' do
54
+ before(:each) do
55
+ ENV.delete 'CONTROL_BRANCH'
56
+ ENV.delete 'CONTROL_BRANCH_FALLBACK'
57
+ end
58
+
59
+ let(:instance) do
60
+ Ra10ke::Validate::Validation.new(puppetfile)
61
+ end
62
+
63
+ let(:puppetfile) do
64
+ File.join(fixtures_dir, 'Puppetfile_with_control_branch')
65
+ end
66
+
67
+ it 'correctly replaces control branch' do
68
+ ENV['CONTROL_BRANCH'] = 'env-control_branch'
69
+ expect(instance.all_modules.find { |m| m[:name] == 'hiera_control' }[:ref]).to eq('env-control_branch')
70
+ end
71
+
72
+ it 'correctly detects current branch' do
73
+ allow(Ra10ke::GitRepo).to receive(:current_branch).and_return('current_branch-control_branch')
74
+ expect(instance.all_modules.find { |m| m[:name] == 'hiera_control' }[:ref]).to eq('current_branch-control_branch')
75
+ end
76
+
77
+ it 'correctly falls back if no current branch' do
78
+ ENV['CONTROL_BRANCH_FALLBACK'] = 'env-control_branch_fallback'
79
+ allow(Ra10ke::GitRepo).to receive(:current_branch).and_return(nil)
80
+ expect(instance.all_modules.find { |m| m[:name] == 'hiera_control' }[:ref]).to eq('env-control_branch_fallback')
81
+ end
82
+
83
+ it 'correctly falls back to default_branch if no current branch' do
84
+ allow(Ra10ke::GitRepo).to receive(:current_branch).and_return(nil)
85
+ expect(instance.all_modules.find { |m| m[:name] == 'hiera_controlwithdefault' }[:ref]).to eq('master')
86
+ end
87
+
88
+ it 'correctly falls back to fallback if no current branch but default branch' do
89
+ ENV['CONTROL_BRANCH_FALLBACK'] = 'env-control_branch_fallback'
90
+ allow(Ra10ke::GitRepo).to receive(:current_branch).and_return(nil)
91
+ expect(instance.all_modules.find { |m| m[:name] == 'hiera_controlwithdefault' }[:ref]).to eq('env-control_branch_fallback')
92
+ end
93
+
94
+ it 'correctly falls back to default_branch if no current branch with override' do
95
+ allow(Ra10ke::GitRepo).to receive(:current_branch).and_return(nil)
96
+ expect(instance.all_modules.find { |m| m[:name] == 'hiera_controlwithdefaultoverride' }[:ref]).to eq('master')
97
+ end
98
+
99
+ it 'correctly falls back to main if no current branch and no fallback' do
100
+ allow(Ra10ke::GitRepo).to receive(:current_branch).and_return(nil)
101
+ expect(instance.all_modules.find { |m| m[:name] == 'hiera_control' }[:ref]).to eq('main')
102
+ end
38
103
  end
39
104
 
40
- it '#bad_mods?' do
41
- allow(instance).to receive(:`).with(anything)
42
- .and_return(File.read(File.join(fixtures_dir, 'reflist.txt')))
43
- # because we can't test every single module we return the same result set
44
- # which only passes for a single module, while others fail.
45
- expect(instance.bad_mods?).to be true
105
+ it '#new' do
106
+ expect(instance).to be_a Ra10ke::Validate::Validation
46
107
  end
47
108
 
48
109
  it '#all_modules is an array' do
@@ -59,23 +120,13 @@ RSpec.describe 'Ra10ke::Validate::Validation' do
59
120
 
60
121
  it '#data is a hash with keys' do
61
122
  keys = instance.all_modules.first.keys
62
- expect(keys).to eq(%i[name url ref valid_ref? status])
123
+ expect(keys).to eq(%i[name url ref valid_url? valid_ref? status])
63
124
  end
64
125
 
65
126
  it '#data is a hash with values' do
66
127
  keys = instance.all_modules.first.values
67
128
 
68
129
  expect(keys).to eq(['gitlab', 'https://github.com/vshn/puppet-gitlab',
69
- '00397b86dfb3487d9df768cbd3698d362132b5bf', true, '👍'])
70
- end
71
-
72
- it '#all_refs' do
73
- refs = instance.all_refs('https://www.example.com')
74
- expect(refs).to be_a Hash
75
- expect(refs.first).to eq(
76
- ["0ec707e431367bbe2752966be8ab915b6f0da754",
77
- {:name=>"74110ac", :ref=>"refs/heads/74110ac", :subtype=>nil, :type=>:branch}]
78
- )
79
-
130
+ '00397b86dfb3487d9df768cbd3698d362132b5bf', true, true, '👍'])
80
131
  end
81
132
  end
data/spec/ra10ke_spec.rb CHANGED
@@ -6,7 +6,7 @@ require 'spec_helper'
6
6
  RSpec.describe 'Ra10ke::RakeTask' do
7
7
  let(:instance) do
8
8
  Ra10ke::RakeTask.new do |t|
9
- t.puppetfile_path = puppetfile
9
+ t.puppetfile_path = puppetfile
10
10
  end
11
11
  end
12
12
 
@@ -50,6 +50,9 @@ RSpec.describe 'Ra10ke::RakeTask' do
50
50
 
51
51
  describe 'run tasks with good refs' do
52
52
  it '#run_validate_task' do
53
+ allow_any_instance_of(Ra10ke::GitRepo).to receive(:valid_ref?).and_return(true)
54
+ allow_any_instance_of(Ra10ke::GitRepo).to receive(:valid_url?).and_return(true)
55
+
53
56
  task = instance.define_task_validate(args)
54
57
  expect(task.invoke).to be_a Array
55
58
  end
@@ -59,14 +62,13 @@ RSpec.describe 'Ra10ke::RakeTask' do
59
62
  let(:puppetfile) do
60
63
  File.join(fixtures_dir, 'Puppetfile_with_bad_refs')
61
64
  end
62
-
65
+
63
66
  # I suspect rake is caching something here and the puppetfile is
64
67
  # not being sent correctly as it is not using the file I specify.
65
68
  # The output should be different.
66
69
  # Testing this by itself works
67
70
  it '#run_validate_task' do
68
- t = Ra10ke::RakeTask.new
69
- task2 = t.define_task_validate(args)
71
+ task2 = instance.define_task_validate(args)
70
72
  expect(task2.invoke).to be nil
71
73
  end
72
74
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require 'simplecov'
5
+ require 'simplecov-console'
6
+ require 'codecov'
7
+ rescue LoadError
8
+ else
9
+ SimpleCov.start do
10
+ track_files 'lib/**/*.rb'
11
+
12
+ add_filter '/spec'
13
+
14
+ enable_coverage :branch
15
+
16
+ # do not track vendored files
17
+ add_filter '/vendor'
18
+ add_filter '/.vendor'
19
+ end
20
+
21
+ SimpleCov.formatters = [
22
+ SimpleCov::Formatter::Console,
23
+ SimpleCov::Formatter::Codecov,
24
+ ]
25
+ end
26
+
27
+ require 'rspec/core'
28
+
1
29
  def fixtures_dir
2
30
  File.join(__dir__, 'fixtures')
3
31
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ra10ke
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Theo Chatzimichos
8
+ - Vox Pupuli
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2019-08-07 00:00:00.000000000 Z
12
+ date: 2021-10-26 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rake
@@ -84,14 +85,14 @@ dependencies:
84
85
  name: semverse
85
86
  requirement: !ruby/object:Gem::Requirement
86
87
  requirements:
87
- - - "~>"
88
+ - - ">="
88
89
  - !ruby/object:Gem::Version
89
90
  version: '2.0'
90
91
  type: :runtime
91
92
  prerelease: false
92
93
  version_requirements: !ruby/object:Gem::Requirement
93
94
  requirements:
94
- - - "~>"
95
+ - - ">="
95
96
  - !ruby/object:Gem::Version
96
97
  version: '2.0'
97
98
  - !ruby/object:Gem::Dependency
@@ -122,23 +123,58 @@ dependencies:
122
123
  - - "~>"
123
124
  - !ruby/object:Gem::Version
124
125
  version: '3.6'
126
+ - !ruby/object:Gem::Dependency
127
+ name: pry
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: simplecov
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
125
154
  description: R10K and Puppetfile rake tasks
126
155
  email:
127
- - tampakrap@gmail.com
156
+ - voxpupuli@groups.io
128
157
  executables: []
129
158
  extensions: []
130
159
  extra_rdoc_files: []
131
160
  files:
161
+ - ".github/dependabot.yml"
162
+ - ".github/workflows/release.yml"
163
+ - ".github/workflows/test.yml"
132
164
  - ".gitignore"
133
165
  - ".ruby-version"
134
166
  - ".travis.yml"
135
167
  - CHANGELOG.md
136
168
  - Gemfile
169
+ - HISTORY.md
137
170
  - LICENSE.txt
138
171
  - README.md
139
172
  - Rakefile
140
173
  - lib/ra10ke.rb
141
174
  - lib/ra10ke/dependencies.rb
175
+ - lib/ra10ke/deprecation.rb
176
+ - lib/ra10ke/duplicates.rb
177
+ - lib/ra10ke/git_repo.rb
142
178
  - lib/ra10ke/install.rb
143
179
  - lib/ra10ke/monkey_patches.rb
144
180
  - lib/ra10ke/puppetfile_parser.rb
@@ -150,7 +186,16 @@ files:
150
186
  - spec/fixtures/Puppetfile
151
187
  - spec/fixtures/Puppetfile_test
152
188
  - spec/fixtures/Puppetfile_with_bad_refs
153
- - spec/fixtures/reflist.txt
189
+ - spec/fixtures/Puppetfile_with_control_branch
190
+ - spec/fixtures/Puppetfile_with_duplicates
191
+ - spec/fixtures/refs/debug.txt
192
+ - spec/fixtures/refs/gitlab.txt
193
+ - spec/fixtures/refs/r10k.txt
194
+ - spec/fixtures/refs/reflist.txt
195
+ - spec/ra10ke/dependencies_spec.rb
196
+ - spec/ra10ke/deprecation_spec.rb
197
+ - spec/ra10ke/duplicates_spec.rb
198
+ - spec/ra10ke/git_repo_spec.rb
154
199
  - spec/ra10ke/puppetfile_parser_spec.rb
155
200
  - spec/ra10ke/validate_spec.rb
156
201
  - spec/ra10ke_spec.rb
@@ -167,15 +212,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
212
  requirements:
168
213
  - - ">="
169
214
  - !ruby/object:Gem::Version
170
- version: 2.1.0
215
+ version: 2.4.0
171
216
  required_rubygems_version: !ruby/object:Gem::Requirement
172
217
  requirements:
173
218
  - - ">="
174
219
  - !ruby/object:Gem::Version
175
220
  version: '0'
176
221
  requirements: []
177
- rubyforge_project:
178
- rubygems_version: 2.7.7
222
+ rubygems_version: 3.2.22
179
223
  signing_key:
180
224
  specification_version: 4
181
225
  summary: Syntax check for the Puppetfile, check for outdated installed puppet modules