]> review.fuel-infra Code Review - puppet-modules/puppetlabs-apt.git/commitdiff
Merge pull request #864 from puppetlabs/litmus
authorPaula Muir <paula@puppet.com>
Thu, 13 Jun 2019 13:57:25 +0000 (14:57 +0100)
committerGitHub <noreply@github.com>
Thu, 13 Jun 2019 13:57:25 +0000 (14:57 +0100)
(FM-8215) Convert to using litmus

14 files changed:
.fixtures.yml
.sync.yml
.travis.yml
Gemfile
Rakefile
distelli-manifest.yml [new file with mode: 0644]
metadata.json
provision.yaml [new file with mode: 0644]
spec/acceptance/apt_key_provider_spec.rb
spec/acceptance/apt_spec.rb
spec/acceptance/init_task_spec.rb
spec/acceptance/locales_spec.rb [deleted file]
spec/spec_helper_acceptance.rb
spec/spec_helper_acceptance_local.rb [new file with mode: 0644]

index b419b4d716007b132ad970fbdbb544a44551b278..6c2bda86165760b348891830f322b7f160279054 100644 (file)
@@ -4,5 +4,8 @@ fixtures:
       "repo": "git://github.com/puppetlabs/puppetlabs-stdlib.git"
     "translate": 
       "repo": "https://github.com/puppetlabs/puppetlabs-translate"
+    facts: 'git://github.com/puppetlabs/puppetlabs-facts.git'
+    puppet_agent: 'git://github.com/puppetlabs/puppetlabs-puppet_agent.git'
+    provision: 'git://github.com/puppetlabs/provision.git'
   symlinks:
     "apt": "#{source_dir}"
index 1e4bce19e30cb4e663d7590a36c94f0e25df594a..947242e2e843a605795f8857df4dd40ee61f1fdc 100644 (file)
--- a/.sync.yml
+++ b/.sync.yml
       - rubocop-rspec
 
 .travis.yml:
-  docker_sets:
-    - set: docker/debian-8
-    - set: docker/ubuntu-14.04
-  docker_defaults:
-    bundler_args: ""
-  secure: ""
-  branches:
-    - release
+  unmanaged: true
 
 appveyor.yml:
   delete: true
 
 Gemfile:
   required:
-    ':system_tests':
-      - gem: 'puppet-module-posix-system-r#{minor_version}'
-        platforms: ruby
-      - gem: 'puppet-module-win-system-r#{minor_version}'
+    ':development':
+      - gem: 'puppet_litmus'
         platforms:
+          - ruby
           - mswin
           - mingw
           - x64_mingw
+        condition: "ENV['PUPPET_GEM_VERSION'].nil? or ENV['PUPPET_GEM_VERSION'] !~ %r{ 5}"
+      - gem: 'serverspec'
   optional:
     ':development':
       - gem: 'github_changelog_generator'
@@ -47,6 +41,7 @@ Gemfile:
 Rakefile:
   requires:
     - puppet_pot_generator/rake_tasks
+  use_litmus_tasks: true
 
 spec/spec_helper.rb:
   mock_with: ':rspec'
index 1877a1752bc0ea1a997bc8a7d269e130291ed33d..0b2378e38c1e0e6174aca8efa604271a6253f2ab 100644 (file)
@@ -23,22 +23,33 @@ matrix:
   fast_finish: true
   include:
     -
-      bundler_args: 
+      bundler_args:
       dist: trusty
-      env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_set=docker/debian-8 BEAKER_TESTMODE=apply
+      env: PLATFORMS=deb_puppet5
       rvm: 2.5.3
-      script: bundle exec rake beaker
+      before_script:
+      - bundle exec rake 'litmus:provision_list[travis_deb]'
+      - bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'
+      - bundle exec rake 'litmus:install_agent[puppet5]'
+      - bundle exec rake litmus:install_module
+      script:
+      - bundle exec rake litmus:acceptance:parallel
       services: docker
       stage: acceptance
       sudo: required
     -
-      bundler_args: 
+      bundler_args:
       dist: trusty
-      env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_set=docker/ubuntu-14.04 BEAKER_TESTMODE=apply
+      env: PLATFORM=deb_puppet6
       rvm: 2.5.3
-      script: bundle exec rake beaker
+      before_script:
+      - bundle exec rake 'litmus:provision_list[travis_deb]'
+      - bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'
+      - bundle exec rake 'litmus:install_agent[puppet6]'
+      - bundle exec rake litmus:install_module
+      script:
+      - bundle exec rake litmus:acceptance:parallel
       services: docker
-      stage: acceptance
       sudo: required
     -
       env: CHECK="check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop syntax lint metadata_lint"
diff --git a/Gemfile b/Gemfile
index 0c0fdf5b28c988da3b740e9c7071ce4475dab416..070bd8bf2b32a75f43b86c57b53b6a9282ddb140 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -27,13 +27,11 @@ group :development do
   gem "puppet-module-posix-dev-r#{minor_version}", '~> 0.3',     require: false, platforms: [:ruby]
   gem "puppet-module-win-default-r#{minor_version}", '~> 0.3',   require: false, platforms: [:mswin, :mingw, :x64_mingw]
   gem "puppet-module-win-dev-r#{minor_version}", '~> 0.3',       require: false, platforms: [:mswin, :mingw, :x64_mingw]
+  gem "puppet_litmus",                                           require: false, platforms: [:ruby, :mswin, :mingw, :x64_mingw] if ENV['PUPPET_GEM_VERSION'].nil? or ENV['PUPPET_GEM_VERSION'] !~ %r{ 5}
+  gem "serverspec",                                              require: false
   gem "github_changelog_generator",                              require: false, git: 'https://github.com/skywinder/github-changelog-generator', ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')
   gem "puppet-lint-i18n",                                        require: false
 end
-group :system_tests do
-  gem "puppet-module-posix-system-r#{minor_version}", require: false, platforms: [:ruby]
-  gem "puppet-module-win-system-r#{minor_version}",   require: false, platforms: [:mswin, :mingw, :x64_mingw]
-end
 
 puppet_version = ENV['PUPPET_GEM_VERSION']
 facter_version = ENV['FACTER_GEM_VERSION']
index 24984ef4ff9256fb943f392780dd1db914f54c4d..13b58c86ddcc8d51fff1e19c957deab7f9565fd6 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -1,3 +1,4 @@
+require 'puppet_litmus/rake_tasks' if Bundler.rubygems.find_name('puppet_litmus').any?
 require 'puppetlabs_spec_helper/rake_tasks'
 require 'puppet-syntax/tasks/puppet-syntax'
 require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any?
diff --git a/distelli-manifest.yml b/distelli-manifest.yml
new file mode 100644 (file)
index 0000000..294ac2e
--- /dev/null
@@ -0,0 +1,25 @@
+team-modules/puppetlabs-apt:
+  PreBuild:
+    - source /opt/rh/rh-ruby25/enable
+    - echo "--- LETS update BUNDLER ---"
+    - bundle install --path vendor/bundle --jobs 3
+  Build:
+    - echo "--- PROVISIONING ---"
+    - source /opt/rh/rh-ruby25/enable
+    - bundle exec rake litmus:provision_list[release_checks]
+    - cat inventory.yaml
+    - echo "--- AGENT INSTALLATION ---"
+    - bundle exec rake litmus:install_agent
+    - echo "--- MODULE INSTALLATION ---"
+    - bundle exec rake litmus:install_module
+    - echo "--- TESTS RUNNING ---"
+    - bundle exec rake litmus:acceptance:parallel
+  AfterBuildSuccess:
+    - source /opt/rh/rh-ruby25/enable
+    - bundle exec rake litmus:tear_down
+  AfterBuildFailure:
+    - source /opt/rh/rh-ruby25/enable
+    - bundle exec rake litmus:tear_down
+  CommitData:
+    - RepoType: Git
+    - RepoPath: .
index 085fe21fa4ed87dc028b46cd6d52d3121c1abf5d..7995122c16cc269458002fff52ed1aff93192280 100644 (file)
@@ -40,7 +40,7 @@
       "version_requirement": ">= 5.5.10 < 7.0.0"
     }
   ],
-  "template-url": "https://github.com/puppetlabs/pdk-templates#master",
+  "template-url": "https://github.com/puppetlabs/pdk-templates/#master",
   "template-ref": "heads/master-0-g7827fc2",
   "pdk-version": "1.10.0"
 }
diff --git a/provision.yaml b/provision.yaml
new file mode 100644 (file)
index 0000000..e20c29d
--- /dev/null
@@ -0,0 +1,13 @@
+---
+default:
+  provisioner: docker 
+  images: ['waffleimage/debian8']
+travis_deb:
+  provisioner: docker
+  images: ['debian:8', 'debian:9', 'ubuntu:14.04', 'ubuntu:16.04', 'ubuntu:18.04']
+waffle_deb:
+  provisioner: docker 
+  images: ['waffleimage/debian8', 'waffleimage/debian9', 'waffleimage/ubuntu14.04', 'waffleimage/ubuntu16.04', 'waffleimage/ubuntu18.04']
+release_checks:
+  provisioner: vmpooler
+  images: ['debian-8-x86_64', 'debian-9-x86_64',  'ubuntu-1404-x86_64', 'ubuntu-1604-x86_64', 'ubuntu-1804-x86_64']
index 18c885728ecc1ae28873a65f9a2e8eb5c1936ee4..0c4539d83be9caed15237dee5a23b0ff920b406c 100644 (file)
@@ -21,7 +21,7 @@ DEBIAN_PUPPETLABS_EXP_CHECK_COMMAND = 'apt-key list | grep -F -A 1 \'pub   rsa40
 
 def install_key(key)
   retry_on_error_matching do
-    shell("apt-key adv --no-tty --keyserver pgp.mit.edu --recv-keys #{key}")
+    run_shell("apt-key adv --no-tty --keyserver pgp.mit.edu --recv-keys #{key}")
   end
 end
 
@@ -440,8 +440,8 @@ hkp_pool_pp = <<-MANIFEST
         }
   MANIFEST
 
-hkps_protocol_supported = fact('operatingsystem') =~ %r{Ubuntu} && \
-                          fact('operatingsystemrelease') =~ %r{^18\.04}
+hkps_protocol_supported = os[:family] =~ %r{Ubuntu} && \
+                          os[:family][:release][:full] =~ %r{^18\.04}
 
 if hkps_protocol_supported
   hkps_ubuntu_pp = <<-MANIFEST
@@ -646,10 +646,8 @@ describe 'apt_key' do
   before(:each) do
     # Delete twice to make sure everything is cleaned
     # up after the short key collision
-    shell("apt-key del #{PUPPETLABS_GPG_KEY_SHORT_ID}",
-          acceptable_exit_codes: [0, 1, 2])
-    shell("apt-key del #{PUPPETLABS_GPG_KEY_SHORT_ID}",
-          acceptable_exit_codes: [0, 1, 2])
+    run_shell("apt-key del #{PUPPETLABS_GPG_KEY_SHORT_ID}", expect_failures: true)
+    run_shell("apt-key del #{PUPPETLABS_GPG_KEY_SHORT_ID}", expect_failures: true)
   end
 
   describe 'ensure =>' do
@@ -684,14 +682,14 @@ describe 'apt_key' do
         end
 
         apply_manifest(gpg_key_pp, catch_changes: true)
-        shell(PUPPETLABS_KEY_CHECK_COMMAND)
+        run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
       end
     end
 
     context 'with multiple keys' do
       it 'runs without errors' do
         apply_manifest_twice(multiple_keys_pp)
-        shell(PUPPETLABS_KEY_CHECK_COMMAND)
+        run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
       end
     end
 
@@ -712,7 +710,7 @@ describe 'apt_key' do
         end
 
         apply_manifest(hkp_pool_pp, catch_changes: true)
-        shell(PUPPETLABS_KEY_CHECK_COMMAND)
+        run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
       end
     end
 
@@ -724,7 +722,7 @@ describe 'apt_key' do
           end
 
           apply_manifest(hkps_ubuntu_pp, catch_changes: true)
-          shell(PUPPETLABS_KEY_CHECK_COMMAND)
+          run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
         end
       end
     end
@@ -750,12 +748,12 @@ describe 'apt_key' do
     context 'with http://' do
       it 'works' do
         apply_manifest_twice(http_works_pp)
-        shell(PUPPETLABS_KEY_CHECK_COMMAND)
+        run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
       end
 
       it 'works with userinfo' do
         apply_manifest_twice(http_works_userinfo_pp)
-        shell(PUPPETLABS_KEY_CHECK_COMMAND)
+        run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
       end
 
       it 'fails with a 404' do
@@ -774,13 +772,12 @@ describe 'apt_key' do
     # disabled when running in travis, security issues prevent FTP
     context 'with ftp://', unless: (ENV['TRAVIS'] == 'true') do
       before(:each) do
-        shell("apt-key del #{CENTOS_GPG_KEY_LONG_ID}",
-              acceptable_exit_codes: [0, 1, 2])
+        run_shell("apt-key del #{CENTOS_GPG_KEY_LONG_ID}", expect_failures: true)
       end
 
       it 'works' do
         apply_manifest_twice(ftp_works_pp)
-        shell(CENTOS_KEY_CHECK_COMMAND)
+        run_shell(CENTOS_KEY_CHECK_COMMAND)
       end
 
       it 'fails with a 550' do
@@ -799,17 +796,17 @@ describe 'apt_key' do
     context 'with https://' do
       it 'works' do
         apply_manifest_twice(https_works_pp)
-        shell(PUPPETLABS_KEY_CHECK_COMMAND)
+        run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
       end
 
       it 'works with weak ssl' do
         apply_manifest_twice(https_with_weak_ssl_works_pp)
-        shell(PUPPETLABS_KEY_CHECK_COMMAND)
+        run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
       end
 
       it 'works with userinfo' do
         apply_manifest_twice(https_userinfo_pp)
-        shell(PUPPETLABS_KEY_CHECK_COMMAND)
+        run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
       end
 
       it 'fails with a 404' do
@@ -827,17 +824,17 @@ describe 'apt_key' do
 
     context 'with /path/that/exists' do
       before(:each) do
-        shell("curl -o /tmp/puppetlabs-pubkey.gpg \
+        run_shell("curl -o /tmp/puppetlabs-pubkey.gpg \
               http://#{PUPPETLABS_APT_URL}/#{PUPPETLABS_GPG_KEY_FILE}")
       end
 
       after(:each) do
-        shell('rm /tmp/puppetlabs-pubkey.gpg')
+        run_shell('rm /tmp/puppetlabs-pubkey.gpg')
       end
 
       it 'works' do
         apply_manifest_twice(path_exists_pp)
-        shell(PUPPETLABS_KEY_CHECK_COMMAND)
+        run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
       end
     end
 
@@ -851,11 +848,11 @@ describe 'apt_key' do
 
     context 'with /path/that/exists/with/bogus/content' do
       before(:each) do
-        shell('echo "here be dragons" > /tmp/fake-key.gpg')
+        run_shell('echo "here be dragons" > /tmp/fake-key.gpg')
       end
 
       after(:each) do
-        shell('rm /tmp/fake-key.gpg')
+        run_shell('rm /tmp/fake-key.gpg')
       end
       it 'fails' do
         apply_manifest(path_bogus_content_pp, expect_failures: true) do |r|
@@ -869,7 +866,7 @@ describe 'apt_key' do
     context 'with debug' do
       it 'works' do
         apply_manifest_twice(debug_works_pp)
-        shell(PUPPETLABS_KEY_CHECK_COMMAND)
+        run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
       end
     end
   end
@@ -891,18 +888,18 @@ describe 'apt_key' do
   end
 
   describe 'refresh' do
-    if fact('osfamily') == 'Debian' && (fact('lsbdistcodename') == 'stretch' || fact('lsbdistcodename') == 'bionic')
-      # Set Debian Stetch specific value of puppetlabs_exp_check_command
-      let(:puppetlabs_exp_check_command) { DEBIAN_PUPPETLABS_EXP_CHECK_COMMAND }
-    else
-      # Set default value of puppetlabs_exp_check_command
+    if ['8', '14.04', '16.04'].include?(host_inventory['facter']['os']['release']['major'])
+      # older OSes use puppetlabs_exp_check_command
       let(:puppetlabs_exp_check_command) { PUPPETLABS_EXP_CHECK_COMMAND }
+
+    else
+      # Set Debian Stetch and newer OSes puppetlabs_exp_check_command
+      let(:puppetlabs_exp_check_command) { DEBIAN_PUPPETLABS_EXP_CHECK_COMMAND }
+
+      # Ensure dirmngr package is installed
+      apply_manifest(refresh_check_for_dirmngr_pp, acceptable_exit_codes: [0, 2])
     end
     before(:each) do
-      if fact('lsbdistcodename') == 'stretch' || fact('lsbdistcodename') == 'bionic'
-        # Ensure dirmngr package is installed
-        apply_manifest(refresh_check_for_dirmngr_pp, acceptable_exit_codes: [0, 2])
-      end
       # Delete the Puppet Labs Release Key and install an expired version of the key
       apply_manifest(refresh_del_key_pp)
       apply_manifest(refresh_pp, catch_failures: true)
@@ -911,14 +908,14 @@ describe 'apt_key' do
       it 'updates an expired key' do
         apply_manifest(refresh_true_pp)
         # Check key has been updated to new version
-        shell(puppetlabs_exp_check_command.to_s, acceptable_exit_codes: [0])
+        run_shell(puppetlabs_exp_check_command.to_s)
       end
     end
     context 'when refresh => false' do
       it 'does not replace an expired key' do
         apply_manifest(refresh_false_pp)
         # Expired key is present and has not been updated by the new version
-        shell(puppetlabs_exp_check_command.to_s, acceptable_exit_codes: [1])
+        run_shell(puppetlabs_exp_check_command.to_s, expect_failures: true)
       end
     end
   end
index 7fe1d033297ea9061b8ee5569361083785c83838..d3215a17714b1765bbd05998a8a0d163db66ef16 100644 (file)
@@ -31,7 +31,7 @@ everything_everything_pp = <<-MANIFEST
 describe 'apt class' do
   context 'with reset' do
     it 'fixes the sources.list' do
-      shell('cp /etc/apt/sources.list /tmp')
+      run_shell('cp /etc/apt/sources.list /tmp')
     end
   end
 
@@ -43,14 +43,14 @@ describe 'apt class' do
       end
     end
     it 'stills work' do
-      shell('apt-get update')
-      shell('apt-get -y --force-yes upgrade')
+      run_shell('apt-get update')
+      run_shell('apt-get -y --force-yes upgrade')
     end
   end
 
   context 'with reset' do
     it 'fixes the sources.list' do
-      shell('cp /tmp/sources.list /etc/apt')
+      run_shell('cp /tmp/sources.list /etc/apt')
     end
   end
 end
index a95ef5df128dd07b85133be363b74020e2b5a56e..f35d2fc02b77c8c110df41ea443a2ebd727687ce 100644 (file)
@@ -1,29 +1,29 @@
 # run a test task
 require 'spec_helper_acceptance'
 
-describe 'apt tasks', if: pe_install? && puppet_version =~ %r{(5\.\d\.\d)} && fact_on(master, 'osfamily') == 'Debian' do
+describe 'apt tasks' do
   describe 'update' do
     it 'updates package lists' do
-      result = run_task(task_name: 'apt', params: 'action=update')
-      expect_multiple_regexes(result: result, regexes: [%r{Reading package lists}, %r{Job completed. 1/1 nodes succeeded}])
+      result = run_bolt_task('apt', 'action' => 'update')
+      expect(result.stdout).to contain(%r{Reading package lists})
     end
   end
   describe 'upgrade' do
     it 'upgrades packages' do
-      result = run_task(task_name: 'apt', params: 'action=upgrade')
-      expect_multiple_regexes(result: result, regexes: [%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded}, %r{Job completed. 1/1 nodes succeeded}])
+      result = run_bolt_task('apt', 'action' => 'upgrade')
+      expect(result.stdout).to contain(%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded})
     end
   end
   describe 'dist-upgrade' do
     it 'dist-upgrades packages' do
-      result = run_task(task_name: 'apt', params: 'action=dist-upgrade')
-      expect_multiple_regexes(result: result, regexes: [%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded}, %r{Job completed. 1/1 nodes succeeded}])
+      result = run_bolt_task('apt', 'action' => 'dist-upgrade')
+      expect(result.stdout).to contain(%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded})
     end
   end
   describe 'autoremove' do
     it 'autoremoves obsolete packages' do
-      result = run_task(task_name: 'apt', params: 'action=autoremove')
-      expect_multiple_regexes(result: result, regexes: [%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded}, %r{Job completed. 1/1 nodes succeeded}])
+      result = run_bolt_task('apt', 'action' => 'autoremove')
+      expect(result.stdout).to contain(%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded})
     end
   end
 end
diff --git a/spec/acceptance/locales_spec.rb b/spec/acceptance/locales_spec.rb
deleted file mode 100644 (file)
index 338e8ed..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-require 'spec_helper_acceptance'
-require 'beaker/i18n_helper'
-
-PUPPETLABS_GPG_KEY_LONG_ID     = '7F438280EF8D349F'.freeze
-PUPPETLABS_LONG_FINGERPRINT    = '123456781274D2C8A956789A456789A456789A9A'.freeze
-
-id_doesnt_match_fingerprint_pp = <<-MANIFEST
-  apt_key { '#{PUPPETLABS_LONG_FINGERPRINT}':
-    ensure  => 'present',
-    content => '123456781274D2C8A956789A456789A456789A9B',
-  }
-MANIFEST
-
-location_not_specified_fail_pp = <<-MANIFEST
-  apt::source { 'puppetlabs':
-    ensure  => 'present',
-    repos   => 'main',
-    key     => {
-      id      => '6F6B15509CF8E59E6E469F327F438280EF8D349F',
-      server  => 'hkps.pool.sks-keyservers.net',
-    },
-  }
-MANIFEST
-
-invalid_title_pp = <<-MANIFEST
-  apt::setting { 'test':
-    ensure  => 'present',
-    content => 'test'
-  }
-MANIFEST
-
-no_content_param_pp = <<-MANIFEST
-  apt::conf { 'test':
-    ensure => 'present',
-  }
-MANIFEST
-
-describe 'localization', if: (fact('osfamily') == 'Debian' || fact('osfamily') == 'RedHat') && (Gem::Version.new(puppet_version) >= Gem::Version.new('4.10.5')) do
-  before :all do
-    hosts.each do |host|
-      on(host, "sed -i \"96i FastGettext.locale='ja'\" /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb")
-      change_locale_on(host, 'ja_JP.utf-8')
-    end
-  end
-
-  describe 'ruby translations' do
-    it 'translates an interpolated string' do
-      apply_manifest(id_doesnt_match_fingerprint_pp, expect_failures: true) do |r|
-        expect(r.stderr).to match(%r{content/sourceが正当であるかを確認してください})
-      end
-    end
-    it 'translates a simple string' do
-      apply_manifest(location_not_specified_fail_pp, expect_failures: true) do |r|
-        expect(r.stderr).to match(%r{場所を指定せずにソースエントリを作成することはできません})
-      end
-    end
-  end
-
-  describe 'puppet translations' do
-    it 'translates a concatenated string' do
-      apply_manifest(invalid_title_pp, expect_failures: true) do |r|
-        expect(r.stderr).to match(%r{apt::settingのリソース名/タイトルの先頭は、'conf-'、'pref-'、'list-'にする必要があります})
-      end
-    end
-    it 'translates a simple string' do
-      apply_manifest(no_content_param_pp, expect_failures: true) do |r|
-        expect(r.stderr).to match(%r{contentパラメータを渡す必要があります})
-      end
-    end
-  end
-
-  after :all do
-    hosts.each do |host|
-      on(host, 'sed -i "96d" /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet.rb')
-      change_locale_on(host, 'en_US')
-    end
-  end
-end
index 29b178a51e3a8a125f65e273dc66e9e086c29658..2bb630c820437a8889a16654a097040618f0e836 100644 (file)
@@ -1,71 +1,58 @@
-require 'beaker-pe'
-require 'beaker-puppet'
-require 'beaker-rspec'
-require 'beaker/puppet_install_helper'
-require 'beaker/module_install_helper'
-require 'beaker-task_helper'
-require 'beaker/i18n_helper'
-require 'beaker-task_helper'
+# frozen_string_literal: true
 
-run_puppet_install_helper
-configure_type_defaults_on(hosts)
-install_bolt_on(hosts) unless pe_install?
-install_module_on(hosts)
-install_module_dependencies_on(hosts)
+require 'serverspec'
+require 'puppet_litmus'
+require 'spec_helper_acceptance_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_acceptance_local.rb'))
+include PuppetLitmus
 
-UNSUPPORTED_PLATFORMS = ['RedHat', 'Suse', 'windows', 'AIX', 'Solaris'].freeze
-MAX_RETRY_COUNT       = 5
-RETRY_WAIT            = 3
-ERROR_MATCHER         = %r{(no valid OpenPGP data found|keyserver timed out|keyserver receive failed)}
-
-# This method allows a block to be passed in and if an exception is raised
-# that matches the 'error_matcher' matcher, the block will wait a set number
-# of seconds before retrying.
-# Params:
-# - max_retry_count - Max number of retries
-# - retry_wait_interval_secs - Number of seconds to wait before retry
-# - error_matcher - Matcher which the exception raised must match to allow retry
-# Example Usage:
-# retry_on_error_matching(3, 5, /OpenGPG Error/) do
-#   apply_manifest(pp, :catch_failures => true)
-# end
-def retry_on_error_matching(max_retry_count = MAX_RETRY_COUNT, retry_wait_interval_secs = RETRY_WAIT, error_matcher = ERROR_MATCHER)
-  try = 0
-  begin
-    puts "retry_on_error_matching: try #{try}" unless try.zero?
-    try += 1
-    yield
-  rescue StandardError => e
-    raise(_('Attempted this %{value0} times. Raising %{value1}') % { value0: max_retry_count, value1: e }) unless try < max_retry_count && (error_matcher.nil? || e.message =~ error_matcher)
-    sleep retry_wait_interval_secs
-    retry
+if ENV['TARGET_HOST'].nil? || ENV['TARGET_HOST'] == 'localhost'
+  puts 'Running tests against this machine !'
+  if Gem.win_platform?
+    set :backend, :cmd
+  else
+    set :backend, :exec
   end
-end
+else
+  # load inventory
+  inventory_hash = inventory_hash_from_inventory_file
+  node_config = config_from_node(inventory_hash, ENV['TARGET_HOST'])
 
-RSpec.configure do |c|
-  File.expand_path(File.join(File.dirname(__FILE__), '..'))
+  if target_in_group(inventory_hash, ENV['TARGET_HOST'], 'docker_nodes')
+    host = ENV['TARGET_HOST']
+    set :backend, :docker
+    set :docker_container, host
+  elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'ssh_nodes')
+    set :backend, :ssh
+    options = Net::SSH::Config.for(host)
+    options[:user] = node_config.dig('ssh', 'user') unless node_config.dig('ssh', 'user').nil?
+    options[:port] = node_config.dig('ssh', 'port') unless node_config.dig('ssh', 'port').nil?
+    options[:keys] = node_config.dig('ssh', 'private-key') unless node_config.dig('ssh', 'private-key').nil?
+    options[:password] = node_config.dig('ssh', 'password') unless node_config.dig('ssh', 'password').nil?
+    options[:verify_host_key] = Net::SSH::Verifiers::Null.new unless node_config.dig('ssh', 'host-key-check').nil?
+    host = if ENV['TARGET_HOST'].include?(':')
+             ENV['TARGET_HOST'].split(':').first
+           else
+             ENV['TARGET_HOST']
+           end
+    set :host,        options[:host_name] || host
+    set :ssh_options, options
+  elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'winrm_nodes')
+    require 'winrm'
 
-  # Readable test descriptions
-  c.formatter = :documentation
+    set :backend, :winrm
+    set :os, family: 'windows'
+    user = node_config.dig('winrm', 'user') unless node_config.dig('winrm', 'user').nil?
+    pass = node_config.dig('winrm', 'password') unless node_config.dig('winrm', 'password').nil?
+    endpoint = "http://#{ENV['TARGET_HOST']}:5985/wsman"
 
-  # Configure all nodes in nodeset
-  c.before :suite do
-    run_puppet_access_login(user: 'admin') if pe_install? && (Gem::Version.new(puppet_version) >= Gem::Version.new('5.0.0'))
+    opts = {
+      user: user,
+      password: pass,
+      endpoint: endpoint,
+      operation_timeout: 300,
+    }
 
-    hosts.each do |host|
-      # This will be removed, this is temporary to test localisation.
-      if (fact('osfamily') == 'Debian' || fact('osfamily') == 'RedHat') &&
-         (Gem::Version.new(puppet_version) >= Gem::Version.new('4.10.5') &&
-          Gem::Version.new(puppet_version) < Gem::Version.new('5.2.0'))
-        on(host, 'mkdir /opt/puppetlabs/puppet/share/locale/ja')
-        on(host, 'touch /opt/puppetlabs/puppet/share/locale/ja/puppet.po')
-      end
-      if fact('osfamily') == 'Debian'
-        # install language on debian systems
-        install_language_on(host, 'ja_JP.utf-8') if not_controller(host)
-        # This will be removed, this is temporary to test localisation.
-      end
-      on host, puppet('module', 'install', 'stahnma/epel')
-    end
+    winrm = WinRM::Connection.new opts
+    Specinfra.configuration.winrm = winrm
   end
 end
diff --git a/spec/spec_helper_acceptance_local.rb b/spec/spec_helper_acceptance_local.rb
new file mode 100644 (file)
index 0000000..4022171
--- /dev/null
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+UNSUPPORTED_PLATFORMS = ['RedHat', 'Suse', 'windows', 'AIX', 'Solaris'].freeze
+MAX_RETRY_COUNT       = 5
+RETRY_WAIT            = 3
+ERROR_MATCHER         = %r{(no valid OpenPGP data found|keyserver timed out|keyserver receive failed)}
+
+# this is needed for puppet facts / apply
+lsb_package = <<-MANIFEST
+package { 'lsb-release':
+  ensure => installed,
+}
+MANIFEST
+
+include PuppetLitmus
+apply_manifest(lsb_package)
+
+# This method allows a block to be passed in and if an exception is raised
+# that matches the 'error_matcher' matcher, the block will wait a set number
+# of seconds before retrying.
+# Params:
+# - max_retry_count - Max number of retries
+# - retry_wait_interval_secs - Number of seconds to wait before retry
+# - error_matcher - Matcher which the exception raised must match to allow retry
+# Example Usage:
+# retry_on_error_matching(3, 5, /OpenGPG Error/) do
+#   apply_manifest(pp, :catch_failures => true)
+# end
+
+def retry_on_error_matching(max_retry_count = MAX_RETRY_COUNT, retry_wait_interval_secs = RETRY_WAIT, error_matcher = ERROR_MATCHER)
+  try = 0
+  begin
+    puts "retry_on_error_matching: try #{try}" unless try.zero?
+    try += 1
+    yield
+  rescue StandardError => e
+    raise('Attempted this %{value0} times. Raising %{value1}' % { value0: max_retry_count, value1: e }) unless try < max_retry_count && (error_matcher.nil? || e.message =~ error_matcher)
+    sleep retry_wait_interval_secs
+    retry
+  end
+end