diff --git a/.rubocop.yml b/.rubocop.yml index 4209cee3a..402ce79b9 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -167,3 +167,6 @@ PDK/FileUtilsRemoveEntrySecure: Exclude: - lib/pdk/util/filesystem.rb - spec/acceptance/**/*.rb + +RSpec/SharedExamples: + Enabled: false diff --git a/package-testing/Gemfile b/package-testing/Gemfile index ec3c2bd39..4109fe77e 100644 --- a/package-testing/Gemfile +++ b/package-testing/Gemfile @@ -2,7 +2,7 @@ source ENV.fetch('GEM_SOURCE', nil) || 'https://rubygems.org' gem 'beaker', '~> 4.39' gem 'beaker-abs', '~> 0.11.0' -gem 'beaker-hostgenerator', '~> 1.18.1' +gem 'beaker-hostgenerator', '~> 2.2.0' gem 'beaker-puppet', '= 1.29.0' gem 'beaker-rspec', '= 7.1.0' gem 'beaker-vmpooler', '= 1.4.0' @@ -13,5 +13,6 @@ gem 'rake' gem 'win32-security', require: false if File::ALT_SEPARATOR group :development do - gem 'pry-byebug', '~> 3.4' + gem 'pry' + gem 'pry-stack_explorer' end diff --git a/package-testing/config/options.rb b/package-testing/config/options.rb index 9509bd085..fbf28634e 100644 --- a/package-testing/config/options.rb +++ b/package-testing/config/options.rb @@ -1,6 +1,6 @@ { ssh: { - # keys: ['~/.ssh/id_rsa-acceptance'], + keys: ['~/.ssh/id_rsa-acceptance'], verify_host_key: :never }, preserve_hosts: 'onfail', diff --git a/package-testing/spec/package/update_module_spec.rb b/package-testing/spec/package/update_module_spec.rb index e6fa193cb..8b74c2d81 100644 --- a/package-testing/spec/package/update_module_spec.rb +++ b/package-testing/spec/package/update_module_spec.rb @@ -3,15 +3,13 @@ require 'json' modules = [ - 'puppetlabs/puppetlabs-motd', - 'puppetlabs/puppetlabs-concat', - 'puppetlabs/puppetlabs-inifile' + 'puppetlabs/puppetlabs-motd' ] describe 'Updating an existing module' do modules.each do |mod| context "when updating #{mod}" do - metadata = JSON.parse(open("https://raw.githubusercontent.com/#{mod}/main/metadata.json").read) + metadata = JSON.parse(URI.open("https://raw.githubusercontent.com/#{mod}/main/metadata.json").read) metadata['template-url'] = 'pdk-default#main' repo_dir = File.join(home_dir, metadata['name']) @@ -24,7 +22,7 @@ module_dir = File.join(home_dir(true), metadata['name']) create_remote_file(get_working_node, File.join(module_dir, 'metadata.json'), metadata.to_json) - sync_yaml = YAML.safe_load(open("https://raw.githubusercontent.com/#{mod}/main/.sync.yml").read) + sync_yaml = YAML.safe_load(URI.open("https://raw.githubusercontent.com/#{mod}/main/.sync.yml").read) sync_yaml['Gemfile'].each_key do |gem_type| next unless sync_yaml['Gemfile'][gem_type].respond_to?(:each_key) @@ -53,7 +51,7 @@ subject { super().stdout.split("\n") } it 'does not output any unexpected errors' do - expect(subject).to all(match(/\((?:info|warning|error)\): (?:puppet-lint|rubocop|task-metadata-lint|task-name|puppet-epp)/i)) + expect(subject).to all(match(/\((?:convention|info|warning|error)\): (?:puppet-lint|rubocop|task-metadata-lint|task-name|puppet-epp)/i)) end end end diff --git a/package-testing/spec/package/version_selection_spec.rb b/package-testing/spec/package/version_selection_spec.rb index 386a84e0b..9482b80d0 100644 --- a/package-testing/spec/package/version_selection_spec.rb +++ b/package-testing/spec/package/version_selection_spec.rb @@ -3,12 +3,8 @@ describe 'Test puppet & ruby version selection' do module_name = 'version_selection' test_cases = [ - { envvar: 'PDK_PUPPET_VERSION', version: '6.29.0', expected_puppet: '6.29', expected_ruby: '2.5.9' }, - { envvar: 'PDK_PUPPET_VERSION', version: '7.23.0', expected_puppet: '7.23', expected_ruby: '2.7.7' }, - # PE should now map to the latest Puppet version relative to the PE version - { envvar: 'PDK_PE_VERSION', version: '2019.8.7', expected_puppet: '6.29', expected_ruby: '2.5.9' }, - { envvar: 'PDK_PE_VERSION', version: '2021.7.0', expected_puppet: '7.23', expected_ruby: '2.7.7' }, - { envvar: 'PDK_PE_VERSION', version: '2021.7.1', expected_puppet: '7.23', expected_ruby: '2.7.7' } + { envvar: 'PDK_PUPPET_VERSION', version: '7.24.0', expected_puppet: '7.24.0', expected_ruby: '2.7.8' }, + { envvar: 'PDK_PUPPET_VERSION', version: '8.0.1', expected_puppet: '8.0.1', expected_ruby: '3.2.2' } ] before(:all) do @@ -16,17 +12,12 @@ end test_cases.each do |test_case| - slug = test_case[:envvar] == 'PDK_PE_VERSION' ? 'PE' : 'Puppet' - - context "Select #{slug} #{test_case[:version]}" do + context "Select Puppet #{test_case[:version]}" do let(:env) { { test_case[:envvar] => test_case[:version] } } let(:cwd) { module_name } - let(:expected_puppets) do - gemspecs = shell("find #{install_dir(true)} -name 'puppet-#{test_case[:expected_puppet]}.*.gemspec'") - puppet_versions = gemspecs.stdout.lines.map { |r| r[/puppet-([\d.]+)(-.+?)?\.gemspec\Z/, 1] } - puppet_versions.map { |r| Regexp.escape(r) }.join('|') - end + let(:expected_puppet) { Regexp.escape(test_case[:expected_puppet]) } + let(:expected_ruby) { Regexp.escape(test_case[:expected_ruby]) } describe command('rm Gemfile.lock; pdk bundle update --local') do its(:exit_status) { is_expected.to eq(0) } @@ -34,14 +25,14 @@ describe command('pdk bundle exec puppet --version') do its(:exit_status) { is_expected.to eq(0) } - its(:stderr) { is_expected.to match(/using puppet (#{expected_puppets})/im) } - its(:stdout) { is_expected.to match(/^(#{expected_puppets})$/im) } + its(:stderr) { is_expected.to match(/using puppet (#{expected_puppet})/im) } + its(:stdout) { is_expected.to match(/^(#{expected_puppet})*/im) } end describe command('pdk bundle exec ruby --version') do its(:exit_status) { is_expected.to eq(0) } - its(:stderr) { is_expected.to match(/using ruby #{Regexp.escape(test_case[:expected_ruby])}[.0-9]*/im) } - its(:stdout) { is_expected.to match(/^ruby #{Regexp.escape(test_case[:expected_ruby])}[.0-9]*p/im) } + its(:stderr) { is_expected.to match(/using ruby #{expected_ruby}*/im) } + its(:stdout) { is_expected.to match(/^(#{expected_ruby})*/im) } end end end diff --git a/package-testing/spec/spec_helper_package.rb b/package-testing/spec/spec_helper_package.rb index 8bcc2c9ed..553dac0c3 100644 --- a/package-testing/spec/spec_helper_package.rb +++ b/package-testing/spec/spec_helper_package.rb @@ -3,12 +3,17 @@ Dir['./spec/package/support/*.rb'].sort.each { |f| require f } -RSpec.shared_context 'set path' do - let(:path) { windows_node? ? nil : "#{install_dir}/bin:$PATH" } -end +include SpecUtils # rubocop:disable Style/MixinUsage set :env, PDK_DISABLE_ANALYTICS: 'true' +bin_path = SpecUtils.windows_node? ? 'bin$PATH' : 'bin:$PATH' +set :path, "#{SpecUtils.install_dir}/#{bin_path}" + +hosts.each do |host| + install_pdk_on(host) +end + RSpec.configure do |c| c.include SpecUtils c.extend SpecUtils @@ -19,8 +24,6 @@ end end - c.include_context :set_path - # rubocop:disable RSpec/BeforeAfterAll c.before(:all) do RSpec.configuration.logger.log_level = :warn