onceover 3.17.2 → 3.19.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +2 -0
  3. data/.github/workflows/tests.yaml +40 -0
  4. data/.rubocop.yml +20 -2
  5. data/Gemfile +0 -13
  6. data/README.md +201 -110
  7. data/Rakefile +8 -5
  8. data/factsets/CentOS-8.3.2011-64.json +485 -0
  9. data/factsets/Debian-10.4-64.json +476 -0
  10. data/factsets/Debian-8.11-64.json +480 -0
  11. data/factsets/Debian-9.12-64.json +476 -0
  12. data/factsets/Ubuntu-20.04-64.json +504 -0
  13. data/factsets/Windows_Server-2008r2-64.json +184 -183
  14. data/factsets/Windows_Server-2012r2-64.json +165 -164
  15. data/factsets/windows-10-64.json +104 -103
  16. data/features/cache.feature +1 -1
  17. data/features/step_definitions/cache.rb +4 -4
  18. data/features/step_definitions/common.rb +38 -10
  19. data/features/step_definitions/init.rb +2 -2
  20. data/features/windows.feature +5 -0
  21. data/features/zzz_run.feature +22 -3
  22. data/lib/onceover/controlrepo.rb +10 -4
  23. data/lib/onceover/deploy.rb +3 -1
  24. data/lib/onceover/group.rb +3 -1
  25. data/lib/onceover/rspec/formatters.rb +6 -1
  26. data/lib/onceover/runner.rb +7 -6
  27. data/lib/onceover/test.rb +3 -2
  28. data/lib/onceover/testconfig.rb +28 -5
  29. data/onceover.gemspec +5 -2
  30. data/spec/fixtures/controlrepos/basic/manifests_alternate/site.pp +2 -0
  31. data/spec/fixtures/controlrepos/caching/Puppetfile +17 -17
  32. data/spec/fixtures/controlrepos/caching/manifests/site.pp +1 -0
  33. data/spec/fixtures/controlrepos/custom_puppetfile/Puppetfile.custom +3 -0
  34. data/spec/fixtures/controlrepos/custom_puppetfile/environment.conf +7 -0
  35. data/spec/fixtures/controlrepos/windows/Puppetfile +6 -1
  36. data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/choco.pp +9 -0
  37. data/templates/test_spec.rb.erb +1 -1
  38. metadata +75 -18
  39. data/.travis.yml +0 -19
  40. data/appveyor.yml +0 -38
@@ -1,103 +1,104 @@
1
- {
2
- "name": "vagrant-hb9g3rd.lan.asio",
3
- "values": {
4
- "puppetversion": "6.0.2",
5
- "puppet_inventory_metadata": {
6
- "packages": {
7
- "collection_enabled": false,
8
- "last_collection_time": "0.0s"
9
- }
10
- },
11
- "package_provider": "windows",
12
- "pe_concat_basedir": "C:/ProgramData/PuppetLabs/puppet/cache/pe_concat",
13
- "is_pe": false,
14
- "platform_symlink_writable": false,
15
- "puppet_files_dir_present": false,
16
- "puppet_vardir": "C:/ProgramData/PuppetLabs/puppet/cache",
17
- "puppet_environmentpath": "C:/ProgramData/PuppetLabs/code/environments",
18
- "puppet_server": "pe-puppet.localdomain",
19
- "service_provider": "windows",
20
- "staging_http_get": "curl",
21
- "common_appdata": "C:\\ProgramData",
22
- "architecture": "x64",
23
- "kernel": "windows",
24
- "virtual": "vmware",
25
- "is_virtual": true,
26
- "hardwaremodel": "x64",
27
- "operatingsystem": "windows",
28
- "os": {
29
- "name": "windows",
30
- "family": "windows",
31
- "release": {
32
- "major": "10",
33
- "full": "10"
34
- }
35
- },
36
- "facterversion": "2.5.1",
37
- "fqdn": "VAGRANT-HB9G3RD",
38
- "hostname": "VAGRANT-HB9G3RD",
39
- "id": "vagrant-hb9g3rd\\vagrant",
40
- "interfaces": "Ethernet0_2",
41
- "ipaddress_ethernet0_2": "192.168.43.174",
42
- "ipaddress6_ethernet0_2": "fd72:b3ab:b8dd:0:f563:fac2:928c:6aa",
43
- "macaddress_ethernet0_2": "00:0C:29:A3:53:54",
44
- "netmask_ethernet0_2": "255.255.255.0",
45
- "mtu_ethernet0_2": 0,
46
- "ipaddress": "192.168.43.174",
47
- "ipaddress6": "fd72:b3ab:b8dd:0:f563:fac2:928c:6aa",
48
- "kernelmajversion": "10.0",
49
- "kernelrelease": "10.0.17134",
50
- "kernelversion": "10.0.17134",
51
- "macaddress": "00:0C:29:A3:53:54",
52
- "manufacturer": "Phoenix Technologies LTD",
53
- "serialnumber": "VMware-56 4d 36 2e 2e a4 81 f9-0d 05 ae d0 e5 a3 53 54",
54
- "productname": "VMware Virtual Platform",
55
- "memorysize": "4.00 GB",
56
- "memoryfree": "2.30 GB",
57
- "memorysize_mb": "4095.49",
58
- "memoryfree_mb": "2360.00",
59
- "netmask": "255.255.255.0",
60
- "network_ethernet0_2": "192.168.43.0",
61
- "operatingsystemmajrelease": "10",
62
- "operatingsystemrelease": "10",
63
- "osfamily": "windows",
64
- "path": "C:\\tools\\ruby24\\bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files (x86)\\vim\\vim80;C:\\Program Files\\Git\\cmd;C:\\Program Files\\Puppet Labs\\Puppet\\bin;C:\\Users\\vagrant\\AppData\\Local\\Microsoft\\WindowsApps;",
65
- "physicalprocessorcount": 4,
66
- "processors": {
67
- "models": [
68
- "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
69
- "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
70
- "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
71
- "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz"
72
- ],
73
- "count": 4,
74
- "physicalcount": 4
75
- },
76
- "processor0": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
77
- "processor1": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
78
- "processor2": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
79
- "processor3": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
80
- "processorcount": 4,
81
- "ps": "tasklist.exe",
82
- "rubyplatform": "x64-mingw32",
83
- "rubysitedir": "C:/tools/ruby24/lib/ruby/site_ruby/2.4.0",
84
- "rubyversion": "2.4.3",
85
- "system32": "C:\\Windows\\system32",
86
- "system_uptime": {
87
- "seconds": 1113359,
88
- "hours": 309,
89
- "days": 12,
90
- "uptime": "12 days"
91
- },
92
- "timezone": "GMT Standard Time",
93
- "uptime": "12 days",
94
- "uptime_days": 12,
95
- "uptime_hours": 309,
96
- "uptime_seconds": 1113359,
97
- "clientcert": "vagrant-hb9g3rd.lan.asio",
98
- "clientversion": "6.0.2",
99
- "clientnoop": false
100
- },
101
- "timestamp": "2018-12-10T21:43:07.468533000+00:00",
102
- "expiration": "2018-12-10T22:13:07.468533000+00:00"
103
- }
1
+ {
2
+ "name": "vagrant-hb9g3rd.lan.asio",
3
+ "values": {
4
+ "puppetversion": "6.0.2",
5
+ "puppet_inventory_metadata": {
6
+ "packages": {
7
+ "collection_enabled": false,
8
+ "last_collection_time": "0.0s"
9
+ }
10
+ },
11
+ "package_provider": "windows",
12
+ "pe_concat_basedir": "C:/ProgramData/PuppetLabs/puppet/cache/pe_concat",
13
+ "is_pe": false,
14
+ "platform_symlink_writable": false,
15
+ "puppet_files_dir_present": false,
16
+ "puppet_vardir": "C:/ProgramData/PuppetLabs/puppet/cache",
17
+ "puppet_environmentpath": "C:/ProgramData/PuppetLabs/code/environments",
18
+ "puppet_server": "pe-puppet.localdomain",
19
+ "service_provider": "windows",
20
+ "staging_http_get": "curl",
21
+ "common_appdata": "C:\\ProgramData",
22
+ "architecture": "x64",
23
+ "kernel": "windows",
24
+ "virtual": "vmware",
25
+ "is_virtual": true,
26
+ "hardwaremodel": "x64",
27
+ "operatingsystem": "windows",
28
+ "os": {
29
+ "name": "windows",
30
+ "family": "windows",
31
+ "release": {
32
+ "major": "10",
33
+ "full": "10"
34
+ }
35
+ },
36
+ "facterversion": "2.5.1",
37
+ "fqdn": "VAGRANT-HB9G3RD",
38
+ "hostname": "VAGRANT-HB9G3RD",
39
+ "id": "vagrant-hb9g3rd\\vagrant",
40
+ "interfaces": "Ethernet0_2",
41
+ "ipaddress_ethernet0_2": "192.168.43.174",
42
+ "ipaddress6_ethernet0_2": "fd72:b3ab:b8dd:0:f563:fac2:928c:6aa",
43
+ "macaddress_ethernet0_2": "00:0C:29:A3:53:54",
44
+ "netmask_ethernet0_2": "255.255.255.0",
45
+ "mtu_ethernet0_2": 0,
46
+ "ipaddress": "192.168.43.174",
47
+ "ipaddress6": "fd72:b3ab:b8dd:0:f563:fac2:928c:6aa",
48
+ "kernelmajversion": "10.0",
49
+ "kernelrelease": "10.0.17134",
50
+ "kernelversion": "10.0.17134",
51
+ "macaddress": "00:0C:29:A3:53:54",
52
+ "manufacturer": "Phoenix Technologies LTD",
53
+ "serialnumber": "VMware-56 4d 36 2e 2e a4 81 f9-0d 05 ae d0 e5 a3 53 54",
54
+ "productname": "VMware Virtual Platform",
55
+ "memorysize": "4.00 GB",
56
+ "memoryfree": "2.30 GB",
57
+ "memorysize_mb": "4095.49",
58
+ "memoryfree_mb": "2360.00",
59
+ "netmask": "255.255.255.0",
60
+ "network_ethernet0_2": "192.168.43.0",
61
+ "operatingsystemmajrelease": "10",
62
+ "operatingsystemrelease": "10",
63
+ "osfamily": "windows",
64
+ "path": "C:\\tools\\ruby24\\bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files (x86)\\vim\\vim80;C:\\Program Files\\Git\\cmd;C:\\Program Files\\Puppet Labs\\Puppet\\bin;C:\\Users\\vagrant\\AppData\\Local\\Microsoft\\WindowsApps;",
65
+ "physicalprocessorcount": 4,
66
+ "processors": {
67
+ "models": [
68
+ "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
69
+ "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
70
+ "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
71
+ "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz"
72
+ ],
73
+ "count": 4,
74
+ "physicalcount": 4
75
+ },
76
+ "processor0": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
77
+ "processor1": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
78
+ "processor2": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
79
+ "processor3": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz",
80
+ "processorcount": 4,
81
+ "ps": "tasklist.exe",
82
+ "rubyplatform": "x64-mingw32",
83
+ "rubysitedir": "C:/tools/ruby24/lib/ruby/site_ruby/2.4.0",
84
+ "rubyversion": "2.4.3",
85
+ "system32": "C:\\Windows\\system32",
86
+ "choco_install_path": "C:\\ProgramData\\chocolatey",
87
+ "system_uptime": {
88
+ "seconds": 1113359,
89
+ "hours": 309,
90
+ "days": 12,
91
+ "uptime": "12 days"
92
+ },
93
+ "timezone": "GMT Standard Time",
94
+ "uptime": "12 days",
95
+ "uptime_days": 12,
96
+ "uptime_hours": 309,
97
+ "uptime_seconds": 1113359,
98
+ "clientcert": "vagrant-hb9g3rd.lan.asio",
99
+ "clientversion": "6.0.2",
100
+ "clientnoop": false
101
+ },
102
+ "timestamp": "2018-12-10T21:43:07.468533000+00:00",
103
+ "expiration": "2018-12-10T22:13:07.468533000+00:00"
104
+ }
@@ -14,7 +14,7 @@ Feature: Create and maintain a .onceover cache
14
14
  Then the cache should exist
15
15
  And the cache should contain all controlrepo files
16
16
 
17
- Scenario: Runnone onnceover in the caching repo
17
+ Scenario: Run onceover in the caching repo
18
18
  Given control repo "caching"
19
19
  When I run onceover command "run spec --classes role::webserver"
20
20
  Then I should not see any errors
@@ -5,12 +5,12 @@ end
5
5
 
6
6
  Then(/^the cache should contain all controlrepo files/) do
7
7
  # Get all root files
8
- puts "Calculating MD5 hashes in repo"
8
+ log("Calculating MD5 hashes in repo")
9
9
  repo_digest = Cache_Helper.digest(@repo.root_folder)
10
- puts "#{repo_digest.count} MD5 hashes calculated"
11
- puts "Calculating MD5 hashes in cache"
10
+ log("#{repo_digest.count} MD5 hashes calculated")
11
+ log("Calculating MD5 hashes in cache")
12
12
  cache_digest = Cache_Helper.digest(File.join(@repo.root_folder,'.onceover/etc/puppetlabs/code/environments/production/'))
13
- puts "#{cache_digest.count} MD5 hashes calculated"
13
+ log("#{cache_digest.count} MD5 hashes calculated")
14
14
  expect(cache_digest).to include(repo_digest)
15
15
  end
16
16
 
@@ -7,6 +7,8 @@ Given(/^control repo "([^"]*)"$/) do |controlrepo_name|
7
7
  @cmd.controlrepo = @repo
8
8
  FileUtils.rm_rf @repo.root_folder
9
9
  FileUtils.mkdir_p @repo.tmp_folder
10
+
11
+ FileUtils.rm_rf "#{@repo.tmp_folder}#{controlrepo_name}"
10
12
  FileUtils.cp_r "spec/fixtures/controlrepos/#{controlrepo_name}", @repo.tmp_folder
11
13
  end
12
14
 
@@ -27,13 +29,13 @@ end
27
29
 
28
30
  When(/^I run onceover command "([^"]*)"$/) do |command|
29
31
  @cmd.command = "#{command} --debug"
30
- puts @cmd
32
+ log(@cmd)
31
33
  @cmd.run
32
34
  end
33
35
 
34
36
  When(/^I run onceover command "([^"]*)" with class "([^"]*)"$/) do |command, cls|
35
37
  @cmd.command = "#{command} --classes #{cls}"
36
- puts @cmd
38
+ log(@cmd)
37
39
  @cmd.run
38
40
  end
39
41
 
@@ -53,12 +55,12 @@ Then(/^I see help for commands: "([^"]*)"$/) do |commands|
53
55
  commands_help = @cmd.output[/COMMANDS(.*)OPTIONS/m, 1]
54
56
  commands.split(',').each do |command|
55
57
  result = commands_help.match(/^\s+#{command.strip}.+\n/)
56
- puts result.to_s if expect(result).not_to be nil
58
+ log(result.to_s) if expect(result).not_to be nil
57
59
  end
58
60
  end
59
61
 
60
62
  Then(/^I should not see any errors$/) do
61
- puts @cmd.output unless @cmd.success?
63
+ log(@cmd.output) unless @cmd.success?
62
64
  expect(@cmd.success?).to be true
63
65
  end
64
66
 
@@ -73,17 +75,43 @@ end
73
75
 
74
76
  Then(/^I should see error with message pattern "([^"]*)"$/) do |err_msg_regexp|
75
77
  expect(@cmd.success?).to be false
76
- puts @cmd.output
78
+ log(@cmd.output)
77
79
  expect(@cmd.output.match err_msg_regexp).to_not be nil
78
80
  end
79
81
 
80
- Then(/^I should see message pattern "([^"]*)"$/) do |msg_regexp|
82
+ Then(/^I should (not )?see message pattern "([^"]*)"$/) do |notword, msg_regexp|
81
83
  output_surround = 30
82
84
  match = Regexp.new(msg_regexp).match(@cmd.output)
83
- expect(@cmd.output).to match(msg_regexp)
84
- if match
85
- puts match.pre_match[-output_surround..-1] + match.to_s + match.post_match[0..output_surround]
85
+
86
+ # Expect it to match unless we said it shouldn't match
87
+ expected_match = notword.nil?
88
+ does_match = !match.nil?
89
+
90
+ if expected_match
91
+ expect(@cmd.output).to match(msg_regexp)
92
+ else
93
+ expect(@cmd.output).not_to match(msg_regexp)
94
+ end
95
+
96
+ # If the regex matches and that's what we expected then just print a summary
97
+ if does_match == expected_match
98
+ if match
99
+ log(match.pre_match[-output_surround..-1] + match.to_s + match.post_match[0..output_surround])
100
+ end
86
101
  else
87
- puts @cmd.output
102
+ log(@cmd.output)
88
103
  end
89
104
  end
105
+
106
+ When(/^I run onceover command "([^"]*)" with \-\-puppetfile ([^"]*)$/) do |command, puppetfile|
107
+ puppetfile_path = @repo.root_folder + puppetfile
108
+ @cmd.command = "#{command} --puppetfile #{puppetfile_path} --debug"
109
+ log(@cmd)
110
+ @cmd.run
111
+ end
112
+
113
+ Then(/^([^"]*) should be copied to Puppetfile$/) do |puppetfile|
114
+ source = @repo.root_folder + puppetfile
115
+ destination = @repo.onceover_temp_puppetfile
116
+ expect(IO.read(source)).to eq(IO.read(destination))
117
+ end
@@ -7,11 +7,11 @@ Then(/^I should see generated all necessary files and folders$/) do
7
7
  folders = [ 'spec/factsets', 'spec/pre_conditions'].map! { |x| @repo.root_folder + x}
8
8
 
9
9
  files.each do |file|
10
- puts file
10
+ log(file)
11
11
  expect( File.exist? file ).to be true
12
12
  end
13
13
  folders.each do |folder|
14
- puts folder
14
+ log(folder)
15
15
  expect( Dir.exist? folder ).to be true
16
16
  end
17
17
  end
@@ -28,3 +28,8 @@ Feature: Run onceover with windows
28
28
  When I run onceover command "run spec" with class "role::users"
29
29
  Then I should not see any errors
30
30
 
31
+ Scenario: Compiling a windows role with chocolatey that is valid should compile
32
+ Given control repo "windows"
33
+ When I run onceover command "run spec" with class "role::choco"
34
+ Then I should not see any errors
35
+
@@ -1,6 +1,6 @@
1
1
  @run
2
2
  Feature: Run rspec and acceptance test suites
3
- Onceover should allow to run rspec and acceptance test for all profvile and role classes
3
+ Onceover should allow to run rspec and acceptance test for all profile and role classes
4
4
  or for any part of them. Use should set if he wants to see only summary of tests or full
5
5
  log info.
6
6
 
@@ -52,6 +52,11 @@ Feature: Run rspec and acceptance test suites
52
52
  And I run onceover command "run spec --force"
53
53
  Then I should see message pattern "Overwriting local modifications"
54
54
 
55
+ Scenario: When using an alternate manifests directory
56
+ Given initialized control repo "basic"
57
+ When I run onceover command "run spec --manifest manifests_alternate"
58
+ Then I should see error with message pattern "Using alternate site.pp"
59
+
55
60
  Scenario: Check that control_branch functionality works
56
61
  Given initialized control repo "control_branch"
57
62
  When I run onceover command "run spec"
@@ -73,8 +78,22 @@ Feature: Run rspec and acceptance test suites
73
78
  Then I should see message pattern "failed"
74
79
  And Onceover should exit 1
75
80
 
81
+ Scenario: Run with a custom Puppetfile
82
+ Given initialized control repo "custom_puppetfile"
83
+ When I run onceover command "run spec" with --puppetfile Puppetfile.custom
84
+ Then Puppetfile.custom should be copied to Puppetfile
85
+ And I should see message pattern "Using Puppetfile .*Puppetfile"
86
+ And I should see message pattern "Updating module .*extlib"
87
+
88
+ Scenario: Testing that --tags works with native rspec tags
89
+ Given control repo "puppet_controlrepo"
90
+ When I run onceover command "run spec --tags syntax"
91
+ Then I should not see any errors
92
+ And I should see message pattern "When checking Puppet syntax"
93
+ And I should not see message pattern "role::"
94
+
76
95
  # This test is a full test using my controlrepo. It should remain at the end because it takes ages
77
96
  Scenario: Run advanced spec tests
78
97
  Given control repo "puppet_controlrepo"
79
- When I run onceover command "run spec -p"
80
- Then I should not see any errors
98
+ When I run onceover command "run spec -p --force"
99
+ Then I should not see any errors
@@ -123,10 +123,16 @@ class Onceover
123
123
  @profile_regex = opts[:profile_regex] ? Regexp.new(opts[:profile_regex]) : /profile[s]?:{2}/
124
124
  @tempdir = opts[:tempdir] || File.expand_path('./.onceover', @root)
125
125
  $temp_modulepath = nil
126
- @manifest = opts[:manifest] || config['manifest'] ? File.expand_path(config['manifest'], @root) : nil
127
126
  @opts = opts
128
127
  logger.level = :debug if @opts[:debug]
129
128
  @@existing_controlrepo = self
129
+
130
+ # Set the manifest option to the fully expanded path if it's used,
131
+ # default to nil
132
+ manifest = opts[:manifest] || config['manifest'] || nil
133
+ if manifest
134
+ @manifest = File.expand_path(manifest, @root)
135
+ end
130
136
  end
131
137
 
132
138
 
@@ -420,7 +426,7 @@ class Onceover
420
426
  rescue StandardError
421
427
  raise "modulepath was not found in environment.conf, don't know where to look for roles & profiles"
422
428
  end
423
-
429
+
424
430
  environment_config
425
431
  end
426
432
 
@@ -444,7 +450,7 @@ class Onceover
444
450
  end
445
451
 
446
452
  def temp_manifest
447
- config['manifest'] ? File.expand_path(config['manifest'], @tempdir) : nil
453
+ @manifest
448
454
  end
449
455
 
450
456
  def self.init(repo)
@@ -642,7 +648,7 @@ class Onceover
642
648
  def find_classname(filename)
643
649
  file = File.new(filename, "r")
644
650
  while (line = file.gets)
645
- begin
651
+ begin
646
652
  if line =~ /^class (\w+(?:::\w+)*)/
647
653
  return $1
648
654
  end
@@ -83,6 +83,7 @@ class Onceover
83
83
  logger.debug "found #{git_branch} as current working branch"
84
84
  # Only try to modify Puppetfile if it exists
85
85
  unless skip_r10k
86
+ FileUtils.copy repo.puppetfile, "#{temp_controlrepo}/Puppetfile"
86
87
  puppetfile_contents = File.read("#{temp_controlrepo}/Puppetfile")
87
88
 
88
89
  logger.debug "replacing :control_branch mentions in the Puppetfile with #{git_branch}"
@@ -118,10 +119,11 @@ class Onceover
118
119
  prod_dir = "#{repo.tempdir}/#{repo.environmentpath}/production"
119
120
  Dir.chdir(prod_dir) do
120
121
  install_cmd = []
121
- install_cmd << "r10k puppetfile install --color --puppetfile #{repo.puppetfile}"
122
+ install_cmd << 'r10k puppetfile install --color'
122
123
  install_cmd << "--force" if force
123
124
  install_cmd << "--config #{repo.r10k_config_file}" if repo.r10k_config_file
124
125
  install_cmd << (logger.level > 0 ? "--verbose" : "--verbose debug") # Enable debugging if we're debugging
126
+ install_cmd << "--trace" if opts[:trace]
125
127
  install_cmd = install_cmd.join(' ')
126
128
  logger.debug "Running #{install_cmd} from #{prod_dir}"
127
129
  system(install_cmd)