puppet_litmus 0.15.0 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5910db3eed130389c917cfb64116897400905e1d66851f57e16be04d1070b95a
4
- data.tar.gz: 01066623755c8b944f4362c0829fd46e3aaa13866a206fe17c74a19da3ed8143
3
+ metadata.gz: 2e545da74266b708eae5c7cb6bab56480b78724ff51a9b8591943cfa98db3d7d
4
+ data.tar.gz: fd3e61dbc511549ac3ab1c43d834b9fa8e729d5af4bb48a6b4fab50041539428
5
5
  SHA512:
6
- metadata.gz: 4ce37bbfc92942ee4a50c4cc0831ccd8deac29ec092001c1c82dc3b7a8c57cd1bdb745bb64e224fc0fbc220c458b990b4ea429908a6548a7d18195a63873b3d3
7
- data.tar.gz: 49b0a06fdf5772a2ed5104108cc4163b96b6eb500f1bf70259052099ab9231ee7d6b7c56bdfdc3af2708229600eda0c9bd41fb53cf5438db8c5f17309e24728a
6
+ metadata.gz: 43adad4003cec09ff51204502f1f8f223c379ddd0c5ab93f38cb1285f0868ed965bbbc0117db72f022bc346f12315d9b9bfbb1deeed41c15467c17d2a86ebc43
7
+ data.tar.gz: c8d670ec75ee889f29a02071be10574027a742575034f3666a348f2bbcb6dca85f5d748fe236a357ffff571eb4d3556d0c32140652d308fc765936b21c1cb8b7
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ module PuppetLitmus; end # rubocop:disable Style/Documentation
4
+
3
5
  # helper functions for manipulating and reading a bolt inventory file
4
6
  module PuppetLitmus::InventoryManipulation
5
7
  # Creates an inventory hash from the inventory.yaml.
@@ -68,18 +68,16 @@ module PuppetLitmus::RakeHelper
68
68
  folder_list = Dir.entries(source_folder).reject { |f| File.directory? f }
69
69
  module_tars = []
70
70
  folder_list.each do |folder|
71
- file = File.new(File.join(source_folder, folder))
72
- next if File.symlink?(file)
71
+ folder_handle = Dir.open(File.join(source_folder, folder))
72
+ next if File.symlink?(folder_handle)
73
73
 
74
- opts = {}
75
- opts[:module_dir] = file.path
76
- opts[:'target-dir'] = File.join(Dir.pwd, 'pkg')
77
- opts[:force] = true
74
+ module_dir = folder_handle.path
75
+ target_dir = File.join(Dir.pwd, 'pkg')
78
76
  # remove old build folder if exists, before we build afresh
79
- FileUtils.rm_rf(builder.build_dir) if File.directory?(builder.build_dir)
77
+ FileUtils.rm_rf(target_dir) if File.directory?(target_dir)
80
78
 
81
79
  # build_module
82
- module_tar = build_module(opts)
80
+ module_tar = build_module(module_dir, target_dir)
83
81
  module_tars.push(File.new(module_tar))
84
82
  end
85
83
  module_tars
@@ -164,15 +162,20 @@ module PuppetLitmus::RakeHelper
164
162
  results
165
163
  end
166
164
 
167
- def build_module(opts)
168
- # old cli_way
169
- # pdk_build_command = 'bundle exec pdk build --force'
170
- # stdout, stderr, _status = Open3.capture3(pdk_build_command)
171
- # raise "Failed to run 'pdk_build_command',#{stdout} and #{stderr}" if (stderr =~ %r{completed successfully}).nil?
172
- require 'pdk/module/build'
173
- require 'pdk/util'
165
+ # @param opts Hash of options to build the module
166
+ # @param module_dir [String] The path of the module to build. If missing defaults to Dir.pwd
167
+ # @param target_dir [String] The path the module will be built into. The default is <source_dir>/pkg
168
+ # @return [String] The path to the built module
169
+ def build_module(module_dir = nil, target_dir = nil)
170
+ require 'puppet/modulebuilder'
171
+
172
+ source_dir = module_dir || Dir.pwd
173
+ dest_dir = target_dir || File.join(source_dir, 'pkg')
174
+
175
+ builder = Puppet::Modulebuilder::Builder.new(source_dir, dest_dir, nil)
176
+ # Force the metadata to be read. Raises if metadata could not be found
177
+ _metadata = builder.metadata
174
178
 
175
- builder = PDK::Module::Build.new(opts)
176
179
  builder.build
177
180
  end
178
181
 
@@ -1,7 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'rake'
4
+
3
5
  namespace :litmus do
6
+ require 'puppet_litmus/inventory_manipulation'
4
7
  require 'puppet_litmus/rake_helper'
8
+ include PuppetLitmus::InventoryManipulation
5
9
  include PuppetLitmus::RakeHelper
6
10
  # Prints all supported OSes from metadata.json file.
7
11
  desc 'print all supported OSes from metadata'
@@ -228,9 +232,7 @@ namespace :litmus do
228
232
  exit 0
229
233
  end
230
234
 
231
- opts = {}
232
- opts[:force] = true
233
- module_tar = build_module(opts)
235
+ module_tar = build_module
234
236
  puts 'Built'
235
237
 
236
238
  # module_tar = Dir.glob('pkg/*.tar.gz').max_by { |f| File.mtime(f) }
@@ -324,8 +326,6 @@ namespace :litmus do
324
326
  namespace :acceptance do
325
327
  require 'rspec/core/rake_task'
326
328
  if File.file?('inventory.yaml')
327
- require 'puppet_litmus/inventory_manipulation'
328
- include PuppetLitmus::InventoryManipulation
329
329
  inventory_hash = inventory_hash_from_inventory_file
330
330
  targets = find_targets(inventory_hash, nil)
331
331
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Helper methods for testing puppet content
4
+ module PuppetLitmus::Util
5
+ # Ensure that a passed command is base 64 encoded and passed to PowerShell; this obviates the need to
6
+ # carefully interpolate strings for passing to ruby which will then be passed to PowerShell/CMD which will
7
+ # then be executed. This also ensures that a single PowerShell command may be specified for Windows targets
8
+ # leveraging PowerShell as bolt run_shell will use PowerShell against a remote target but CMD against a
9
+ # localhost target.
10
+ #
11
+ # @param :command [String] A PowerShell script block to be converted to base64
12
+ # @return [String] An invocation for PowerShell with the encoded command which may be passed to run_shell
13
+ def self.interpolate_powershell(command)
14
+ encoded_command = Base64.strict_encode64(command.encode('UTF-16LE'))
15
+ "powershell.exe -NoProfile -EncodedCommand #{encoded_command}"
16
+ end
17
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # version of this gem
4
4
  module PuppetLitmus
5
- VERSION ||= '0.15.0'
5
+ VERSION ||= '0.16.0'
6
6
  end
data/lib/puppet_litmus.rb CHANGED
@@ -21,16 +21,26 @@ module PuppetLitmus
21
21
  process_span = Honeycomb.start_span(name: 'Litmus Testing')
22
22
  if ENV['CI'] == 'true' && ENV['TRAVIS'] == 'true'
23
23
  process_span.add_field('module_name', ENV['TRAVIS_REPO_SLUG'])
24
- process_span.add_field('travis_build_id', ENV['TRAVIS_BUILD_ID'])
25
- process_span.add_field('travis_build_web_url', ENV['TRAVIS_BUILD_WEB_URL'])
26
- process_span.add_field('travis_commit_message', ENV['TRAVIS_COMMIT_MESSAGE'])
27
- process_span.add_field('travis_pull_request_sha', ENV['TRAVIS_PULL_REQUEST_SHA'])
24
+ process_span.add_field('ci.provider', 'travis')
25
+ process_span.add_field('ci.build_id', ENV['TRAVIS_BUILD_ID'])
26
+ process_span.add_field('ci.build_url', ENV['TRAVIS_BUILD_WEB_URL'])
27
+ process_span.add_field('ci.job_url', ENV['TRAVIS_JOB_WEB_URL'])
28
+ process_span.add_field('ci.commit_message', ENV['TRAVIS_COMMIT_MESSAGE'])
29
+ process_span.add_field('ci.sha', ENV['TRAVIS_PULL_REQUEST_SHA'] || ENV['TRAVIS_COMMIT'])
28
30
  elsif ENV['CI'] == 'True' && ENV['APPVEYOR'] == 'True'
29
31
  process_span.add_field('module_name', ENV['APPVEYOR_PROJECT_SLUG'])
30
- process_span.add_field('appveyor_build_id', ENV['APPVEYOR_BUILD_ID'])
31
- process_span.add_field('appveyor_url', "https://ci.appveyor.com/project/#{ENV['APPVEYOR_REPO_NAME']}/builds/#{ENV['APPVEYOR_BUILD_ID']}")
32
- process_span.add_field('appveyor_repo_commit_message', ENV['APPVEYOR_REPO_COMMIT_MESSAGE'])
33
- process_span.add_field('appveyor_pull_request_head_commit', ENV['APPVEYOR_PULL_REQUEST_HEAD_COMMIT'])
32
+ process_span.add_field('ci.provider', 'appveyor')
33
+ process_span.add_field('ci.build_id', ENV['APPVEYOR_BUILD_ID'])
34
+ process_span.add_field('ci.build_url', "https://ci.appveyor.com/project/#{ENV['APPVEYOR_REPO_NAME']}/builds/#{ENV['APPVEYOR_BUILD_ID']}")
35
+ process_span.add_field('ci.job_url', "https://ci.appveyor.com/project/#{ENV['APPVEYOR_REPO_NAME']}/build/job/#{ENV['APPVEYOR_JOB_ID']}")
36
+ process_span.add_field('ci.commit_message', ENV['APPVEYOR_REPO_COMMIT_MESSAGE'])
37
+ process_span.add_field('ci.sha', ENV['APPVEYOR_PULL_REQUEST_HEAD_COMMIT'] || ENV['APPVEYOR_REPO_COMMIT'])
38
+ elsif ENV['GITHUB_ACTIONS'] == 'true'
39
+ process_span.add_field('module_name', ENV['GITHUB_REPOSITORY'])
40
+ process_span.add_field('ci.provider', 'github')
41
+ process_span.add_field('ci.build_id', ENV['GITHUB_RUN_ID'])
42
+ process_span.add_field('ci.build_url', "https://github.com/#{ENV['GITHUB_REPOSITORY']}/actions/runs/#{ENV['GITHUB_RUN_ID']}")
43
+ process_span.add_field('ci.sha', ENV['GITHUB_SHA'])
34
44
  end
35
45
  at_exit do
36
46
  process_span.send
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
- load File.expand_path('../../../lib/puppet_litmus/inventory_manipulation.rb', __dir__)
5
- include PuppetLitmus::InventoryManipulation # rubocop:disable Style/MixinUsage
6
4
 
7
5
  RSpec.describe PuppetLitmus::InventoryManipulation do
8
6
  context 'with config_from_node' do
@@ -115,11 +113,11 @@ RSpec.describe PuppetLitmus::InventoryManipulation do
115
113
  end
116
114
 
117
115
  it 'no feature exists for the group, and returns hash with feature added' do
118
- expect(described_class.add_feature_to_group(no_feature_hash, 'puppet-agent', 'ssh_nodes')).to eq('groups' => [{ 'features' => ['puppet-agent'], 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net' }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Metrics/LineLength: Line is too long
116
+ expect(described_class.add_feature_to_group(no_feature_hash, 'puppet-agent', 'ssh_nodes')).to eq('groups' => [{ 'features' => ['puppet-agent'], 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net' }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Layout/LineLength: Line is too long
119
117
  end
120
118
 
121
119
  it 'feature exists for the group, and returns hash with feature removed' do
122
- expect(described_class.remove_feature_from_group(feature_hash_group, 'puppet-agent', 'ssh_nodes')).to eq('groups' => [{ 'features' => [], 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net' }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Metrics/LineLength: Line is too long
120
+ expect(described_class.remove_feature_from_group(feature_hash_group, 'puppet-agent', 'ssh_nodes')).to eq('groups' => [{ 'features' => [], 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net' }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Layout/LineLength: Line is too long
123
121
  end
124
122
 
125
123
  it 'write from inventory_hash to inventory_yaml file feature_hash_group' do
@@ -127,15 +125,15 @@ RSpec.describe PuppetLitmus::InventoryManipulation do
127
125
  end
128
126
 
129
127
  it 'empty feature exists for the group, and returns hash with feature added' do
130
- expect(described_class.add_feature_to_group(empty_feature_hash_group, 'puppet-agent', 'ssh_nodes')).to eq('groups' => [{ 'features' => ['puppet-agent'], 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net' }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Metrics/LineLength: Line is too long
128
+ expect(described_class.add_feature_to_group(empty_feature_hash_group, 'puppet-agent', 'ssh_nodes')).to eq('groups' => [{ 'features' => ['puppet-agent'], 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net' }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Layout/LineLength: Line is too long
131
129
  end
132
130
 
133
131
  it 'no feature exists for the node, and returns hash with feature added' do
134
- expect(described_class.add_feature_to_node(no_feature_hash, 'puppet-agent', 'test.delivery.puppetlabs.net')).to eq('groups' => [{ 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net', 'features' => ['puppet-agent'] }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Metrics/LineLength: Line is too long
132
+ expect(described_class.add_feature_to_node(no_feature_hash, 'puppet-agent', 'test.delivery.puppetlabs.net')).to eq('groups' => [{ 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net', 'features' => ['puppet-agent'] }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Layout/LineLength: Line is too long
135
133
  end
136
134
 
137
135
  it 'feature exists for the node, and returns hash with feature removed' do
138
- expect(described_class.remove_feature_from_node(feature_hash_node, 'puppet-agent', 'test.delivery.puppetlabs.net')).to eq('groups' => [{ 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net', 'features' => [] }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Metrics/LineLength: Line is too long
136
+ expect(described_class.remove_feature_from_node(feature_hash_node, 'puppet-agent', 'test.delivery.puppetlabs.net')).to eq('groups' => [{ 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net', 'features' => [] }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Layout/LineLength: Line is too long
139
137
  end
140
138
 
141
139
  it 'write from inventory_hash to inventory_yaml file feature_hash_node' do
@@ -143,7 +141,7 @@ RSpec.describe PuppetLitmus::InventoryManipulation do
143
141
  end
144
142
 
145
143
  it 'empty feature exists for the node, and returns hash with feature added' do
146
- expect(described_class.add_feature_to_node(empty_feature_hash_node, 'puppet-agent', 'test.delivery.puppetlabs.net')).to eq('groups' => [{ 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net', 'features' => ['puppet-agent'] }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Metrics/LineLength: Line is too long
144
+ expect(described_class.add_feature_to_node(empty_feature_hash_node, 'puppet-agent', 'test.delivery.puppetlabs.net')).to eq('groups' => [{ 'name' => 'ssh_nodes', 'targets' => [{ 'config' => { 'ssh' => { 'host-key-check' => false, 'password' => 'Qu@lity!', 'user' => 'root' }, 'transport' => 'ssh' }, 'facts' => { 'platform' => 'centos-5-x86_64', 'provisioner' => 'vmpooler' }, 'uri' => 'test.delivery.puppetlabs.net', 'features' => ['puppet-agent'] }] }, { 'name' => 'winrm_nodes', 'targets' => [] }]) # rubocop:disable Layout/LineLength: Line is too long
147
145
  end
148
146
 
149
147
  it 'write from inventory_hash to inventory_yaml file no feature_hash' do
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
- load File.expand_path('../../../lib/puppet_litmus/puppet_helpers.rb', __dir__)
5
-
6
- include PuppetLitmus::PuppetHelpers # rubocop:disable Style/MixinUsage
7
4
 
8
5
  RSpec.describe PuppetLitmus::PuppetHelpers do
9
6
  context 'with idempotent_apply' do
@@ -122,10 +119,10 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
122
119
  let(:local) { '/tmp' }
123
120
  let(:remote) { '/remote_tmp' }
124
121
  # Ignore rubocop because these hashes are representative of output from an external method and editing them leads to test failures.
125
- # rubocop:disable Layout/SpaceInsideHashLiteralBraces, Layout/SpaceInsideBlockBraces, Layout/SpaceAroundOperators, Metrics/LineLength, Layout/SpaceAfterComma
122
+ # rubocop:disable Layout/SpaceInsideHashLiteralBraces, Layout/SpaceInsideBlockBraces, Layout/SpaceAroundOperators, Layout/LineLength, Layout/SpaceAfterComma
126
123
  let(:result_success) {[{'node'=>'some.host','target'=>'some.host','action'=>'upload','object'=>'C:\foo\bar.ps1','status'=>'success','result'=>{'_output'=>'Uploaded \'C:\foo\bar.ps1\' to \'some.host:C:\bar\''}}]}
127
124
  let(:result_failure) {[{'node'=>'some.host','target'=>'some.host','action'=>nil,'object'=>nil,'status'=>'failure','result'=>{'_error'=>{'kind'=>'puppetlabs.tasks/task_file_error','msg'=>'No such file or directory @ rb_sysopen - /nonexistant/file/path','details'=>{},'issue_code'=>'WRITE_ERROR'}}}]}
128
- # rubocop:enable Layout/SpaceInsideHashLiteralBraces, Layout/SpaceInsideBlockBraces, Layout/SpaceAroundOperators, Metrics/LineLength, Layout/SpaceAfterComma
125
+ # rubocop:enable Layout/SpaceInsideHashLiteralBraces, Layout/SpaceInsideBlockBraces, Layout/SpaceAroundOperators, Layout/LineLength, Layout/SpaceAfterComma
129
126
  let(:inventory_hash) { { 'groups' => [{ 'name' => 'local', 'nodes' => [{ 'name' => 'some.host', 'config' => { 'transport' => 'local' } }] }] } }
130
127
  let(:localhost_inventory_hash) { { 'groups' => [{ 'name' => 'local', 'nodes' => [{ 'name' => 'litmus_localhost', 'config' => { 'transport' => 'local' } }] }] } }
131
128
 
@@ -228,11 +225,11 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
228
225
  let(:params) { { 'action' => 'install', 'name' => 'foo' } }
229
226
  let(:config_data) { { 'modulepath' => File.join(Dir.pwd, 'spec', 'fixtures', 'modules') } }
230
227
  # Ignore rubocop because these hashes are representative of output from an external method and editing them leads to test failures.
231
- # rubocop:disable Layout/SpaceInsideHashLiteralBraces, Layout/SpaceBeforeBlockBraces, Layout/SpaceInsideBlockBraces, Layout/SpaceAroundOperators, Metrics/LineLength, Layout/SpaceAfterComma
228
+ # rubocop:disable Layout/SpaceInsideHashLiteralBraces, Layout/SpaceBeforeBlockBraces, Layout/SpaceInsideBlockBraces, Layout/SpaceAroundOperators, Layout/LineLength, Layout/SpaceAfterComma
232
229
  let(:result_unstructured_task_success){ [{'node'=>'some.host','target'=>'some.host','action'=>'task','object'=>'testtask::unstructured','status'=>'success','result'=>{'_output'=>'SUCCESS!'}}]}
233
230
  let(:result_structured_task_success){ [{'node'=>'some.host','target'=>'some.host','action'=>'task','object'=>'testtask::structured','status'=>'success','result'=>{'key1'=>'foo','key2'=>'bar'}}]}
234
231
  let(:result_failure) {[{'node'=>'some.host','target'=>'some.host','action'=>'task','object'=>'testtask::unstructured','status'=>'failure','result'=>{'_error'=>{'msg'=>'FAILURE!','kind'=>'puppetlabs.tasks/task-error','details'=>{'exitcode'=>123}}}}]}
235
- # rubocop:enable Layout/SpaceInsideHashLiteralBraces, Layout/SpaceBeforeBlockBraces, Layout/SpaceInsideBlockBraces, Layout/SpaceAroundOperators, Metrics/LineLength, Layout/SpaceAfterComma
232
+ # rubocop:enable Layout/SpaceInsideHashLiteralBraces, Layout/SpaceBeforeBlockBraces, Layout/SpaceInsideBlockBraces, Layout/SpaceAroundOperators, Layout/LineLength, Layout/SpaceAfterComma
236
233
  let(:inventory_hash) { { 'groups' => [{ 'name' => 'local', 'nodes' => [{ 'name' => 'some.host', 'config' => { 'transport' => 'local' } }] }] } }
237
234
 
238
235
  it 'responds to bolt_run_task' do
@@ -2,8 +2,6 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- load File.expand_path('../../../lib/puppet_litmus/rake_helper.rb', __dir__)
6
-
7
5
  RSpec.describe PuppetLitmus::RakeHelper do
8
6
  context 'with provision_list' do
9
7
  let(:provision_hash) { { 'default' => { 'provisioner' => 'docker', 'images' => ['waffleimage/centos7'] } } }
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
- require 'rake'
5
- load File.expand_path('../../../lib/puppet_litmus/inventory_manipulation.rb', __dir__)
6
- include PuppetLitmus::InventoryManipulation # rubocop:disable Style/MixinUsage
4
+
7
5
  describe 'litmus rake tasks' do
8
6
  before(:all) do # rubocop:disable RSpec/BeforeAfterAll
9
7
  load File.expand_path('../../../lib/puppet_litmus/rake_tasks.rb', __dir__)
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ load File.expand_path('../../../lib/puppet_litmus/util.rb', __dir__)
5
+
6
+ RSpec.describe PuppetLitmus::Util do
7
+ context 'when using interpolate_powershell' do
8
+ it 'interpolates the command' do
9
+ expect(described_class.interpolate_powershell('foo')).to match(%r{powershell\.exe})
10
+ expect(described_class.interpolate_powershell('foo')).to match(%r{NoProfile})
11
+ expect(described_class.interpolate_powershell('foo')).to match(%r{EncodedCommand})
12
+ expect(described_class.interpolate_powershell('foo')).not_to match(%r{foo})
13
+ end
14
+ end
15
+ end
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
- load File.expand_path('../../../lib/puppet_litmus/version.rb', __dir__)
5
-
6
- include PuppetLitmus # rubocop:disable Style/MixinUsage
7
4
 
8
5
  RSpec.describe PuppetLitmus do
9
6
  it 'has a version number' do
data/spec/spec_helper.rb CHANGED
@@ -3,6 +3,11 @@
3
3
  require 'rspec'
4
4
  require 'puppet_litmus'
5
5
 
6
+ # Unfortunately this needs to be included as this is
7
+ # how Litmus functions. We only include once here instead
8
+ # of including for every single spec file.
9
+ include PuppetLitmus # rubocop:disable Style/MixinUsage
10
+
6
11
  if ENV['COVERAGE'] == 'yes'
7
12
  require 'simplecov'
8
13
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet_litmus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-03 00:00:00.000000000 Z
11
+ date: 2020-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bolt
@@ -31,25 +31,19 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: 2.0.0
33
33
  - !ruby/object:Gem::Dependency
34
- name: pdk
34
+ name: puppet-modulebuilder
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: 1.10.0
40
- - - "<"
37
+ - - "~>"
41
38
  - !ruby/object:Gem::Version
42
- version: 2.0.0
39
+ version: '0.1'
43
40
  type: :runtime
44
41
  prerelease: false
45
42
  version_requirements: !ruby/object:Gem::Requirement
46
43
  requirements:
47
- - - ">="
44
+ - - "~>"
48
45
  - !ruby/object:Gem::Version
49
- version: 1.10.0
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: 2.0.0
46
+ version: '0.1'
53
47
  - !ruby/object:Gem::Dependency
54
48
  name: tty-spinner
55
49
  requirement: !ruby/object:Gem::Requirement
@@ -148,6 +142,7 @@ files:
148
142
  - lib/puppet_litmus/rake_helper.rb
149
143
  - lib/puppet_litmus/rake_tasks.rb
150
144
  - lib/puppet_litmus/spec_helper_acceptance.rb
145
+ - lib/puppet_litmus/util.rb
151
146
  - lib/puppet_litmus/version.rb
152
147
  - spec/data/doot.tar.gz
153
148
  - spec/data/inventory.yaml
@@ -156,6 +151,7 @@ files:
156
151
  - spec/lib/puppet_litmus/puppet_helpers_spec.rb
157
152
  - spec/lib/puppet_litmus/rake_helper_spec.rb
158
153
  - spec/lib/puppet_litmus/rake_tasks_spec.rb
154
+ - spec/lib/puppet_litmus/util_spec.rb
159
155
  - spec/lib/puppet_litmus/version_spec.rb
160
156
  - spec/spec_helper.rb
161
157
  homepage: https://github.com/puppetlabs/puppet_litmus
@@ -177,18 +173,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
173
  - !ruby/object:Gem::Version
178
174
  version: '0'
179
175
  requirements: []
180
- rubygems_version: 3.0.6
176
+ rubygems_version: 3.1.2
181
177
  signing_key:
182
178
  specification_version: 4
183
179
  summary: Providing a simple command line tool for puppet content creators, to enable
184
180
  simple and complex test deployments.
185
181
  test_files:
186
- - spec/data/doot.tar.gz
187
- - spec/data/inventory.yaml
188
- - spec/data/jim.yaml
189
- - spec/lib/puppet_litmus/inventory_manipulation_spec.rb
190
- - spec/lib/puppet_litmus/puppet_helpers_spec.rb
191
- - spec/lib/puppet_litmus/rake_helper_spec.rb
182
+ - spec/spec_helper.rb
192
183
  - spec/lib/puppet_litmus/rake_tasks_spec.rb
193
184
  - spec/lib/puppet_litmus/version_spec.rb
194
- - spec/spec_helper.rb
185
+ - spec/lib/puppet_litmus/util_spec.rb
186
+ - spec/lib/puppet_litmus/inventory_manipulation_spec.rb
187
+ - spec/lib/puppet_litmus/rake_helper_spec.rb
188
+ - spec/lib/puppet_litmus/puppet_helpers_spec.rb
189
+ - spec/data/doot.tar.gz
190
+ - spec/data/jim.yaml
191
+ - spec/data/inventory.yaml