"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}"
- mswin
- mingw
- x64_mingw
+ - gem: 'puppet_litmus'
+ platforms:
+ - ruby
+ - mswin
+ - mingw
+ - x64_mingw
+ condition: "ENV['PUPPET_GEM_VERSION'].nil? or ENV['PUPPET_GEM_VERSION'] !~ %r{ 5}"
optional:
':development':
- gem: 'github_changelog_generator'
Rakefile:
requires:
- puppet_pot_generator/rake_tasks
+ use_litmus_tasks: true
spec/spec_helper.rb:
mock_with: ':rspec'
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
- rvm: 2.5.3
- script: bundle exec rake beaker
+ env: PLATFORMS=deb_puppet5
+ rvm: 2.5.1
+ 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
- rvm: 2.5.3
- script: bundle exec rake beaker
+ env: PLATFORM=centos:deb_puppet6
+ rvm: 2.5.1
+ 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"
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]
+ gem "puppet_litmus", require: false, platforms: [:ruby, :mswin, :mingw, :x64_mingw] if ENV['PUPPET_GEM_VERSION'].nil? or ENV['PUPPET_GEM_VERSION'] !~ %r{ 5}
end
puppet_version = ENV['PUPPET_GEM_VERSION']
+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?
--- /dev/null
+---
+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']
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
}
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
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
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
end
apply_manifest(hkp_pool_pp, catch_changes: true)
- shell(PUPPETLABS_KEY_CHECK_COMMAND)
+ run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
end
end
end
apply_manifest(hkps_ubuntu_pp, catch_changes: true)
- shell(PUPPETLABS_KEY_CHECK_COMMAND)
+ run_shell(PUPPETLABS_KEY_CHECK_COMMAND)
end
end
end
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
# 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
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
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
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|
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
end
describe 'refresh' do
- if fact('osfamily') == 'Debian' && (fact('lsbdistcodename') == 'stretch' || fact('lsbdistcodename') == 'bionic')
+ if os[:family] == 'debian' && (os[:distro][:codename] == 'stretch' || os[:distro][:codename] == 'bionic')
# Set Debian Stetch specific value of 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])
else
# Set default value of puppetlabs_exp_check_command
let(:puppetlabs_exp_check_command) { PUPPETLABS_EXP_CHECK_COMMAND }
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)
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
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
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
+++ /dev/null
-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
-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
end
end
-RSpec.configure do |c|
- File.expand_path(File.join(File.dirname(__FILE__), '..'))
+def pe_install?
+ false
+end
+
+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
+else
+ # load inventory
+ inventory_hash = inventory_hash_from_inventory_file
+ node_config = config_from_node(inventory_hash, ENV['TARGET_HOST'])
- # Readable test descriptions
- c.formatter = :documentation
+ 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
+ set :request_pty, true
+ elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'winrm_nodes')
+ require 'winrm'
- # 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'))
+ 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"
- 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
+ opts = {
+ user: user,
+ password: pass,
+ endpoint: endpoint,
+ operation_timeout: 300,
+ }
+
+ winrm = WinRM::Connection.new opts
+ Specinfra.configuration.winrm = winrm
end
+
+ lsb_package = <<-MANIFEST
+ package { 'lsb-release':
+ ensure => installed,
+ }
+ MANIFEST
+
+ apply_manifest(lsb_package)
+ run_shell('puppet module install stahnma/epel')
end