r10k 3.9.0 → 3.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.github/pull_request_template.md +1 -1
  3. data/.github/workflows/rspec_tests.yml +1 -1
  4. data/.github/workflows/stale.yml +19 -0
  5. data/CHANGELOG.mkd +24 -0
  6. data/doc/dynamic-environments/configuration.mkd +13 -6
  7. data/integration/Rakefile +1 -1
  8. data/integration/tests/user_scenario/basic_workflow/negative/neg_specify_deleted_forge_module.rb +3 -9
  9. data/integration/tests/user_scenario/basic_workflow/single_env_purge_unmanaged_modules.rb +8 -14
  10. data/lib/r10k/action/base.rb +10 -0
  11. data/lib/r10k/action/deploy/display.rb +42 -9
  12. data/lib/r10k/action/deploy/environment.rb +70 -41
  13. data/lib/r10k/action/deploy/module.rb +51 -29
  14. data/lib/r10k/action/puppetfile/check.rb +3 -1
  15. data/lib/r10k/action/puppetfile/install.rb +20 -23
  16. data/lib/r10k/action/puppetfile/purge.rb +8 -2
  17. data/lib/r10k/action/runner.rb +11 -6
  18. data/lib/r10k/content_synchronizer.rb +83 -0
  19. data/lib/r10k/deployment.rb +1 -1
  20. data/lib/r10k/environment/base.rb +21 -1
  21. data/lib/r10k/environment/git.rb +0 -3
  22. data/lib/r10k/environment/svn.rb +4 -6
  23. data/lib/r10k/environment/with_modules.rb +18 -10
  24. data/lib/r10k/git/cache.rb +1 -1
  25. data/lib/r10k/initializers.rb +7 -0
  26. data/lib/r10k/module.rb +1 -1
  27. data/lib/r10k/module/base.rb +17 -1
  28. data/lib/r10k/module/forge.rb +29 -19
  29. data/lib/r10k/module/git.rb +23 -14
  30. data/lib/r10k/module/local.rb +1 -0
  31. data/lib/r10k/module/svn.rb +12 -9
  32. data/lib/r10k/module_loader/puppetfile.rb +195 -0
  33. data/lib/r10k/module_loader/puppetfile/dsl.rb +37 -0
  34. data/lib/r10k/puppetfile.rb +111 -202
  35. data/lib/r10k/settings.rb +3 -0
  36. data/lib/r10k/source/base.rb +14 -0
  37. data/lib/r10k/source/git.rb +19 -6
  38. data/lib/r10k/source/hash.rb +1 -3
  39. data/lib/r10k/source/svn.rb +4 -2
  40. data/lib/r10k/util/cleaner.rb +21 -0
  41. data/lib/r10k/util/purgeable.rb +70 -8
  42. data/lib/r10k/version.rb +1 -1
  43. data/locales/r10k.pot +67 -71
  44. data/spec/fixtures/unit/action/r10k_forge_auth.yaml +4 -0
  45. data/spec/fixtures/unit/action/r10k_forge_auth_no_url.yaml +3 -0
  46. data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/managed_subdir_2/ignored_1 +0 -0
  47. data/spec/fixtures/unit/util/purgeable/managed_two/.hidden/unmanaged_3 +0 -0
  48. data/spec/r10k-mocks/mock_source.rb +1 -1
  49. data/spec/shared-examples/puppetfile-action.rb +7 -7
  50. data/spec/unit/action/deploy/display_spec.rb +32 -6
  51. data/spec/unit/action/deploy/environment_spec.rb +85 -48
  52. data/spec/unit/action/deploy/module_spec.rb +163 -31
  53. data/spec/unit/action/puppetfile/check_spec.rb +2 -2
  54. data/spec/unit/action/puppetfile/install_spec.rb +31 -10
  55. data/spec/unit/action/puppetfile/purge_spec.rb +25 -5
  56. data/spec/unit/action/runner_spec.rb +49 -25
  57. data/spec/unit/git/cache_spec.rb +14 -0
  58. data/spec/unit/module/forge_spec.rb +23 -14
  59. data/spec/unit/module/git_spec.rb +8 -8
  60. data/spec/unit/module_loader/puppetfile_spec.rb +330 -0
  61. data/spec/unit/module_spec.rb +22 -5
  62. data/spec/unit/puppetfile_spec.rb +123 -203
  63. data/spec/unit/settings_spec.rb +6 -2
  64. data/spec/unit/util/purgeable_spec.rb +40 -14
  65. metadata +12 -2
@@ -0,0 +1,4 @@
1
+ ---
2
+ forge:
3
+ baseurl: 'http://private-forge.com'
4
+ authorization_token: 'faketoken'
@@ -0,0 +1,3 @@
1
+ ---
2
+ forge:
3
+ authorization_token: 'faketoken'
@@ -8,6 +8,6 @@ class R10K::Source::Mock < R10K::Source::Base
8
8
  corrected_environment_names = @options[:environments].map do |env|
9
9
  R10K::Environment::Name.new(env, :prefix => @prefix, :invalid => 'correct_and_warn')
10
10
  end
11
- corrected_environment_names.map { |env| R10K::Environment::Mock.new(env.name, @basedir, env.dirname) }
11
+ corrected_environment_names.map { |env| R10K::Environment::Mock.new(env.name, @basedir, env.dirname, { overrides: @options[:overrides] }) }
12
12
  end
13
13
  end
@@ -3,15 +3,15 @@ require 'spec_helper'
3
3
  shared_examples_for "a puppetfile action" do
4
4
  describe "initializing" do
5
5
  it "accepts the :root option" do
6
- described_class.new({root: "/some/nonexistent/path"}, [])
6
+ described_class.new({root: "/some/nonexistent/path"}, [], {})
7
7
  end
8
8
 
9
9
  it "accepts the :puppetfile option" do
10
- described_class.new({puppetfile: "/some/nonexistent/path/Puppetfile"}, [])
10
+ described_class.new({puppetfile: "/some/nonexistent/path/Puppetfile"}, [], {})
11
11
  end
12
12
 
13
13
  it "accepts the :moduledir option" do
14
- described_class.new({moduledir: "/some/nonexistent/path/modules"}, [])
14
+ described_class.new({moduledir: "/some/nonexistent/path/modules"}, [], {})
15
15
  end
16
16
 
17
17
  end
@@ -20,19 +20,19 @@ end
20
20
  shared_examples_for "a puppetfile install action" do
21
21
  describe "initializing" do
22
22
  it "accepts the :root option" do
23
- described_class.new({root: "/some/nonexistent/path"}, [])
23
+ described_class.new({root: "/some/nonexistent/path"}, [], {})
24
24
  end
25
25
 
26
26
  it "accepts the :puppetfile option" do
27
- described_class.new({puppetfile: "/some/nonexistent/path/Puppetfile"}, [])
27
+ described_class.new({puppetfile: "/some/nonexistent/path/Puppetfile"}, [], {})
28
28
  end
29
29
 
30
30
  it "accepts the :moduledir option" do
31
- described_class.new({moduledir: "/some/nonexistent/path/modules"}, [])
31
+ described_class.new({moduledir: "/some/nonexistent/path/modules"}, [], {})
32
32
  end
33
33
 
34
34
  it "accepts the :force option" do
35
- described_class.new({force: true}, [])
35
+ described_class.new({force: true}, [], {})
36
36
  end
37
37
 
38
38
  end
@@ -5,31 +5,57 @@ require 'r10k/action/deploy/display'
5
5
  describe R10K::Action::Deploy::Display do
6
6
  describe "initializing" do
7
7
  it "accepts a puppetfile option" do
8
- described_class.new({puppetfile: true}, [])
8
+ described_class.new({puppetfile: true}, [], {})
9
9
  end
10
10
 
11
11
  it "accepts a modules option" do
12
- described_class.new({modules: true}, [])
12
+ described_class.new({modules: true}, [], {})
13
13
  end
14
14
 
15
15
  it "accepts a detail option" do
16
- described_class.new({detail: true}, [])
16
+ described_class.new({detail: true}, [], {})
17
17
  end
18
18
 
19
19
  it "accepts a format option" do
20
- described_class.new({format: "json"}, [])
20
+ described_class.new({format: "json"}, [], {})
21
21
  end
22
22
 
23
23
  it "accepts a fetch option" do
24
- described_class.new({fetch: true}, [])
24
+ described_class.new({fetch: true}, [], {})
25
25
  end
26
26
  end
27
27
 
28
- subject { described_class.new({config: "/some/nonexistent/path"}, []) }
28
+ subject { described_class.new({config: "/some/nonexistent/path"}, [], {}) }
29
29
 
30
30
  before do
31
31
  allow(subject).to receive(:puts)
32
32
  end
33
33
 
34
34
  it_behaves_like "a deploy action that requires a config file"
35
+
36
+ describe "collecting info" do
37
+ subject { described_class.new({config: "/some/nonexistent/path", format: 'json', puppetfile: true, detail: true}, ['first'], {}) }
38
+
39
+ let(:mock_config) do
40
+ R10K::Deployment::MockConfig.new(
41
+ :sources => {
42
+ :control => {
43
+ :type => :mock,
44
+ :basedir => '/some/nonexistent/path/control',
45
+ :environments => %w[first second third env-that/will-be-corrected],
46
+ :prefix => 'PREFIX'
47
+ }
48
+ }
49
+ )
50
+ end
51
+
52
+ let(:deployment) { R10K::Deployment.new(mock_config) }
53
+
54
+ it "gathers environment info" do
55
+ source_info = subject.send(:source_info, deployment.sources.first, ['first'])
56
+ expect(source_info[:name]).to eq(:control)
57
+ expect(source_info[:environments].length).to eq(1)
58
+ expect(source_info[:environments][0][:name]).to eq('first')
59
+ end
60
+ end
35
61
  end
@@ -5,46 +5,46 @@ require 'r10k/action/deploy/environment'
5
5
 
6
6
  describe R10K::Action::Deploy::Environment do
7
7
 
8
- subject { described_class.new({config: "/some/nonexistent/path"}, []) }
8
+ subject { described_class.new({config: "/some/nonexistent/path"}, [], {}) }
9
9
 
10
10
  it_behaves_like "a deploy action that can be write locked"
11
11
  it_behaves_like "a deploy action that requires a config file"
12
12
 
13
13
  describe "initializing" do
14
14
  it "can accept a cachedir option" do
15
- described_class.new({cachedir: "/some/nonexistent/cachedir"}, [])
15
+ described_class.new({cachedir: "/some/nonexistent/cachedir"}, [], {})
16
16
  end
17
17
 
18
18
  it "can accept a puppetfile option" do
19
- described_class.new({puppetfile: true}, [])
19
+ described_class.new({puppetfile: true}, [], {})
20
20
  end
21
21
 
22
22
  it "can accept a modules option" do
23
- described_class.new({modules: true}, [])
23
+ described_class.new({modules: true}, [], {})
24
24
  end
25
25
 
26
26
  it "can accept a default_branch_override option" do
27
- described_class.new({:'default-branch-override' => 'default_branch_override_name'}, [])
27
+ described_class.new({:'default-branch-override' => 'default_branch_override_name'}, [], {})
28
28
  end
29
29
 
30
30
  it "can accept a no-force option" do
31
- described_class.new({:'no-force' => true}, [])
31
+ described_class.new({:'no-force' => true}, [], {})
32
32
  end
33
33
 
34
34
  it 'can accept a generate-types option' do
35
- described_class.new({ 'generate-types': true }, [])
35
+ described_class.new({ 'generate-types': true }, [], {})
36
36
  end
37
37
 
38
38
  it 'can accept a puppet-path option' do
39
- described_class.new({ 'puppet-path': '/nonexistent' }, [])
39
+ described_class.new({ 'puppet-path': '/nonexistent' }, [], {})
40
40
  end
41
41
 
42
42
  it 'can accept a private-key option' do
43
- described_class.new({ 'private-key': '/nonexistent' }, [])
43
+ described_class.new({ 'private-key': '/nonexistent' }, [], {})
44
44
  end
45
45
 
46
46
  it 'can accept a token option' do
47
- described_class.new({ 'oauth-token': '/nonexistent' }, [])
47
+ described_class.new({ 'oauth-token': '/nonexistent' }, [], {})
48
48
  end
49
49
 
50
50
  describe "initializing errors" do
@@ -83,14 +83,14 @@ describe R10K::Action::Deploy::Environment do
83
83
  end
84
84
 
85
85
  it "syncs the puppetfile when given the puppetfile flag" do
86
- expect(puppetfile).to receive(:accept).and_return([])
87
- action = described_class.new({config: "/some/nonexistent/path", puppetfile: true}, [])
86
+ expect(puppetfile).to receive(:sync)
87
+ action = described_class.new({config: "/some/nonexistent/path", puppetfile: true}, [], {})
88
88
  action.call
89
89
  end
90
90
 
91
91
  it "syncs the puppetfile when given the modules flag" do
92
- expect(puppetfile).to receive(:accept).and_return([])
93
- action = described_class.new({config: "/some/nonexistent/path", modules: true}, [])
92
+ expect(puppetfile).to receive(:sync)
93
+ action = described_class.new({config: "/some/nonexistent/path", modules: true}, [], {})
94
94
  action.call
95
95
  end
96
96
 
@@ -105,7 +105,7 @@ describe R10K::Action::Deploy::Environment do
105
105
  expect(R10K::Deployment).to receive(:new).and_return(deployment)
106
106
  end
107
107
 
108
- subject { described_class.new({config: "/some/nonexistent/path"}, %w[not_an_environment]) }
108
+ subject { described_class.new({config: "/some/nonexistent/path"}, %w[not_an_environment], {}) }
109
109
 
110
110
  it "logs that the environments can't be deployed and returns false" do
111
111
  expect(subject.logger).to receive(:error).with("Environment(s) 'not_an_environment' cannot be found in any source and will not be deployed.")
@@ -115,10 +115,10 @@ describe R10K::Action::Deploy::Environment do
115
115
  end
116
116
 
117
117
  describe "with no-force" do
118
- subject { described_class.new({ config: "/some/nonexistent/path", modules: true, :'no-force' => true}, %w[first]) }
118
+ subject { described_class.new({ config: "/some/nonexistent/path", modules: true, :'no-force' => true}, %w[first], {}) }
119
119
 
120
120
  it "tries to preserve local modifications" do
121
- expect(subject.force).to equal(false)
121
+ expect(subject.settings[:overrides][:modules][:force]).to equal(false)
122
122
  end
123
123
  end
124
124
 
@@ -206,21 +206,13 @@ describe R10K::Action::Deploy::Environment do
206
206
  end
207
207
  end
208
208
 
209
- describe 'extracting credentials' do
210
- let(:deployment) do
211
- R10K::Deployment.new(mock_config)
212
- end
213
-
214
- end
215
-
216
209
  describe "Purging white/allowlist" do
217
210
 
218
211
  let(:settings) { { deploy: { purge_levels: [:environment], purge_allowlist: ['coolfile', 'coolfile2'] } } }
219
-
212
+ let(:overrides) { { environments: {}, modules: {}, purging: { purge_levels: [:environment], purge_allowlist: ['coolfile', 'coolfile2'] } } }
220
213
  let(:deployment) do
221
- R10K::Deployment.new(mock_config.merge(settings))
214
+ R10K::Deployment.new(mock_config.merge(overrides))
222
215
  end
223
-
224
216
  before do
225
217
  expect(R10K::Deployment).to receive(:new).and_return(deployment)
226
218
  end
@@ -229,7 +221,7 @@ describe R10K::Action::Deploy::Environment do
229
221
 
230
222
  it "reads in the purge_allowlist setting and purges accordingly" do
231
223
  expect(subject.logger).to receive(:debug).with(/purging unmanaged content for environment/i)
232
- expect(subject.instance_variable_get(:@user_purge_allowlist)).to eq(['coolfile', 'coolfile2'])
224
+ expect(subject.settings[:overrides][:purging][:purge_allowlist]).to eq(['coolfile', 'coolfile2'])
233
225
  subject.call
234
226
  end
235
227
 
@@ -238,7 +230,7 @@ describe R10K::Action::Deploy::Environment do
238
230
 
239
231
  it "reads in the purge_whitelist setting and still sets it to purge_allowlist and purges accordingly" do
240
232
  expect(subject.logger).to receive(:debug).with(/purging unmanaged content for environment/i)
241
- expect(subject.instance_variable_get(:@user_purge_allowlist)).to eq(['coolfile', 'coolfile2'])
233
+ expect(subject.settings[:overrides][:purging][:purge_allowlist]).to eq(['coolfile', 'coolfile2'])
242
234
  subject.call
243
235
  end
244
236
  end
@@ -246,9 +238,22 @@ describe R10K::Action::Deploy::Environment do
246
238
 
247
239
  describe "purge_levels" do
248
240
  let(:settings) { { deploy: { purge_levels: purge_levels } } }
241
+ let(:overrides) do
242
+ {
243
+ environments: {
244
+ requested_environments: ['PREFIX_first']
245
+ },
246
+ modules: {
247
+ deploy_modules: true
248
+ },
249
+ purging: {
250
+ purge_levels: purge_levels
251
+ }
252
+ }
253
+ end
249
254
 
250
255
  let(:deployment) do
251
- R10K::Deployment.new(mock_config.merge(settings))
256
+ R10K::Deployment.new(mock_config.merge({ overrides: overrides }))
252
257
  end
253
258
 
254
259
  before do
@@ -260,10 +265,23 @@ describe R10K::Action::Deploy::Environment do
260
265
  describe "deployment purge level" do
261
266
  let(:purge_levels) { [:deployment] }
262
267
 
268
+
269
+ it "updates the source's cache before it purges environments" do
270
+ deployment.sources.each do |source|
271
+ expect(source).to receive(:reload!).ordered
272
+ end
273
+ expect(deployment).to receive(:purge!).ordered
274
+ subject.call
275
+ end
276
+
263
277
  it "only logs about purging deployment" do
278
+ expect(subject).to receive(:visit_environment).and_wrap_original do |original, env, &block|
279
+ expect(env.logger).to_not receive(:debug).with(/purging unmanaged puppetfile content/i)
280
+ original.call(env)
281
+ end.at_least(:once)
282
+
264
283
  expect(subject.logger).to receive(:debug).with(/purging unmanaged environments for deployment/i)
265
284
  expect(subject.logger).to_not receive(:debug).with(/purging unmanaged content for environment/i)
266
- expect(subject.logger).to_not receive(:debug).with(/purging unmanaged puppetfile content/i)
267
285
 
268
286
  subject.call
269
287
  end
@@ -273,15 +291,23 @@ describe R10K::Action::Deploy::Environment do
273
291
  let(:purge_levels) { [:environment] }
274
292
 
275
293
  it "only logs about purging environment" do
294
+ expect(subject).to receive(:visit_environment).and_wrap_original do |original, env, &block|
295
+ expect(env.logger).to_not receive(:debug).with(/purging unmanaged puppetfile content/i)
296
+ original.call(env)
297
+ end.at_least(:once)
276
298
  expect(subject.logger).to receive(:debug).with(/purging unmanaged content for environment/i)
277
299
  expect(subject.logger).to_not receive(:debug).with(/purging unmanaged environments for deployment/i)
278
- expect(subject.logger).to_not receive(:debug).with(/purging unmanaged puppetfile content/i)
279
300
 
280
301
  subject.call
281
302
  end
282
303
 
283
304
  it "logs that environment was not purged if deploy failed" do
284
- expect(subject).to receive(:visit_puppetfile) { subject.instance_variable_set(:@visit_ok, false) }
305
+ expect(subject).to receive(:visit_environment).and_wrap_original do |original, env, &block|
306
+ if env.name =~ /first/
307
+ expect(env).to receive(:deploy) { subject.instance_variable_set(:@visit_ok, false) }
308
+ end
309
+ original.call(env)
310
+ end.at_least(:once)
285
311
 
286
312
  expect(subject.logger).to receive(:debug).with(/not purging unmanaged content for environment/i)
287
313
 
@@ -293,7 +319,13 @@ describe R10K::Action::Deploy::Environment do
293
319
  let(:purge_levels) { [:puppetfile] }
294
320
 
295
321
  it "only logs about purging puppetfile" do
296
- expect(subject.logger).to receive(:debug).with(/purging unmanaged puppetfile content/i)
322
+ expect(subject).to receive(:visit_environment).and_wrap_original do |original, env, &block|
323
+ if env.name =~ /first/
324
+ expect(env.logger).to receive(:debug).with(/purging unmanaged puppetfile content/i)
325
+ end
326
+ original.call(env)
327
+ end.at_least(:once)
328
+
297
329
  expect(subject.logger).to_not receive(:debug).with(/purging unmanaged environments for deployment/i)
298
330
  expect(subject.logger).to_not receive(:debug).with(/purging unmanaged content for environment/i)
299
331
 
@@ -334,16 +366,19 @@ describe R10K::Action::Deploy::Environment do
334
366
  modules: true,
335
367
  'generate-types': true
336
368
  },
337
- %w[first second]
369
+ %w[first second],
370
+ {}
338
371
  )
339
372
  end
340
373
 
341
374
  it 'generate_types is true' do
342
- expect(subject.instance_variable_get(:@generate_types)).to eq(true)
375
+ expect(subject.settings[:overrides][:environments][:generate_types]).to eq(true)
343
376
  end
344
377
 
345
378
  it 'only calls puppet generate types on specified environment' do
346
- subject.instance_variable_set(:@argv, %w[first])
379
+ settings = subject.instance_variable_get(:@settings)
380
+ settings[:overrides][:environments][:requested_environments] = %w{first}
381
+ subject.instance_variable_set(:@settings, settings)
347
382
  expect(subject).to receive(:visit_environment).and_wrap_original do |original, environment, &block|
348
383
  if environment.dirname == 'first'
349
384
  expect(environment).to receive(:generate_types!)
@@ -356,8 +391,8 @@ describe R10K::Action::Deploy::Environment do
356
391
  end
357
392
 
358
393
  it 'does not call puppet generate types on puppetfile failure' do
359
- allow(subject).to receive(:visit_puppetfile) { subject.instance_variable_set(:@visit_ok, false) }
360
394
  expect(subject).to receive(:visit_environment).and_wrap_original do |original, environment, &block|
395
+ allow(environment).to receive(:deploy) { subject.instance_variable_set(:@visit_ok, false) }
361
396
  expect(environment).not_to receive(:generate_types!)
362
397
  original.call(environment, &block)
363
398
  end.twice
@@ -365,10 +400,11 @@ describe R10K::Action::Deploy::Environment do
365
400
  end
366
401
 
367
402
  it 'calls puppet generate types on previous puppetfile failure' do
368
- allow(subject).to receive(:visit_puppetfile) do |puppetfile|
369
- subject.instance_variable_set(:@visit_ok, false) if puppetfile.environment.dirname == 'first'
370
- end
371
403
  expect(subject).to receive(:visit_environment).and_wrap_original do |original, environment, &block|
404
+ allow(environment).to receive(:deploy) do
405
+ subject.instance_variable_set(:@visit_ok, false) if environment.dirname == 'first'
406
+ end
407
+
372
408
  if environment.dirname == 'second'
373
409
  expect(environment).to receive(:generate_types!)
374
410
  else
@@ -388,12 +424,13 @@ describe R10K::Action::Deploy::Environment do
388
424
  modules: true,
389
425
  'generate-types': false
390
426
  },
391
- %w[first]
427
+ %w[first],
428
+ {}
392
429
  )
393
430
  end
394
431
 
395
432
  it 'generate_types is false' do
396
- expect(subject.instance_variable_get(:@generate_types)).to eq(false)
433
+ expect(subject.settings[:overrides][:environments][:generate_types]).to eq(false)
397
434
  end
398
435
 
399
436
  it 'does not call puppet generate types' do
@@ -408,7 +445,7 @@ describe R10K::Action::Deploy::Environment do
408
445
 
409
446
  describe 'with puppet-path' do
410
447
 
411
- subject { described_class.new({ config: '/some/nonexistent/path', 'puppet-path': '/nonexistent' }, []) }
448
+ subject { described_class.new({ config: '/some/nonexistent/path', 'puppet-path': '/nonexistent' }, [], {}) }
412
449
 
413
450
  it 'sets puppet_path' do
414
451
  expect(subject.instance_variable_get(:@puppet_path)).to eq('/nonexistent')
@@ -417,7 +454,7 @@ describe R10K::Action::Deploy::Environment do
417
454
 
418
455
  describe 'with puppet-conf' do
419
456
 
420
- subject { described_class.new({ config: '/some/nonexistent/path', 'puppet-conf': '/nonexistent' }, []) }
457
+ subject { described_class.new({ config: '/some/nonexistent/path', 'puppet-conf': '/nonexistent' }, [], {}) }
421
458
 
422
459
  it 'sets puppet_conf' do
423
460
  expect(subject.instance_variable_get(:@puppet_conf)).to eq('/nonexistent')
@@ -426,7 +463,7 @@ describe R10K::Action::Deploy::Environment do
426
463
 
427
464
  describe 'with private-key' do
428
465
 
429
- subject { described_class.new({ config: '/some/nonexistent/path', 'private-key': '/nonexistent' }, []) }
466
+ subject { described_class.new({ config: '/some/nonexistent/path', 'private-key': '/nonexistent' }, [], {}) }
430
467
 
431
468
  it 'sets private_key' do
432
469
  expect(subject.instance_variable_get(:@private_key)).to eq('/nonexistent')
@@ -435,7 +472,7 @@ describe R10K::Action::Deploy::Environment do
435
472
 
436
473
  describe 'with oauth-token' do
437
474
 
438
- subject { described_class.new({ config: '/some/nonexistent/path', 'oauth-token': '/nonexistent' }, []) }
475
+ subject { described_class.new({ config: '/some/nonexistent/path', 'oauth-token': '/nonexistent' }, [], {}) }
439
476
 
440
477
  it 'sets oauth_token' do
441
478
  expect(subject.instance_variable_get(:@oauth_token)).to eq('/nonexistent')
@@ -453,7 +490,7 @@ describe R10K::Action::Deploy::Environment do
453
490
  def initialize(path, info)
454
491
  @path = path
455
492
  @info = info
456
- @puppetfile = R10K::Puppetfile.new
493
+ @puppetfile = R10K::Puppetfile.new("", {})
457
494
  end
458
495
  end
459
496