Update to pull in rspec-puppet-facts
Change-Id: Ib85a7516306a5a92ad6a5f321b6aa95e4e6009aa
This commit is contained in:
parent
d54150a1ad
commit
bf88733ef7
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
pkg/
|
||||||
|
Gemfile.lock
|
||||||
|
vendor/
|
||||||
|
spec/fixtures/
|
||||||
|
.vagrant/
|
||||||
|
.bundle/
|
||||||
|
coverage/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.iml
|
||||||
|
openstack/
|
38
Gemfile
Normal file
38
Gemfile
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
source ENV['GEM_SOURCE'] || "https://rubygems.org"
|
||||||
|
|
||||||
|
group :development, :test do
|
||||||
|
gem 'puppetlabs_spec_helper', :require => 'false'
|
||||||
|
gem 'rspec-puppet', '~> 2.2.0', :require => 'false'
|
||||||
|
gem 'rspec-puppet-facts', :require => 'false'
|
||||||
|
gem 'metadata-json-lint', :require => 'false'
|
||||||
|
gem 'puppet-lint-param-docs', :require => 'false'
|
||||||
|
gem 'puppet-lint-absolute_classname-check', :require => 'false'
|
||||||
|
gem 'puppet-lint-absolute_template_path', :require => 'false'
|
||||||
|
gem 'puppet-lint-trailing_newline-check', :require => 'false'
|
||||||
|
gem 'puppet-lint-unquoted_string-check', :require => 'false'
|
||||||
|
gem 'puppet-lint-leading_zero-check', :require => 'false'
|
||||||
|
gem 'puppet-lint-variable_contains_upcase', :require => 'false'
|
||||||
|
gem 'puppet-lint-numericvariable', :require => 'false'
|
||||||
|
gem 'json', :require => 'false'
|
||||||
|
gem 'webmock', :require => 'false'
|
||||||
|
end
|
||||||
|
|
||||||
|
group :system_tests do
|
||||||
|
gem 'beaker-rspec', :require => 'false'
|
||||||
|
gem 'beaker-puppet_install_helper', :require => 'false'
|
||||||
|
gem 'r10k', :require => 'false'
|
||||||
|
end
|
||||||
|
|
||||||
|
if facterversion = ENV['FACTER_GEM_VERSION']
|
||||||
|
gem 'facter', facterversion, :require => false
|
||||||
|
else
|
||||||
|
gem 'facter', :require => false
|
||||||
|
end
|
||||||
|
|
||||||
|
if puppetversion = ENV['PUPPET_GEM_VERSION']
|
||||||
|
gem 'puppet', puppetversion, :require => false
|
||||||
|
else
|
||||||
|
gem 'puppet', :require => false
|
||||||
|
end
|
||||||
|
|
||||||
|
# vim:ft=ruby
|
85
Rakefile
Normal file
85
Rakefile
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
require 'puppetlabs_spec_helper/rake_tasks'
|
||||||
|
require 'puppet-lint/tasks/puppet-lint'
|
||||||
|
require 'puppet-syntax/tasks/puppet-syntax'
|
||||||
|
require 'json'
|
||||||
|
|
||||||
|
modname = JSON.parse(open('metadata.json').read)['name'].split('-')[1]
|
||||||
|
|
||||||
|
PuppetSyntax.exclude_paths ||= []
|
||||||
|
PuppetSyntax.exclude_paths << "spec/fixtures/**/*"
|
||||||
|
PuppetSyntax.exclude_paths << "pkg/**/*"
|
||||||
|
PuppetSyntax.exclude_paths << "vendor/**/*"
|
||||||
|
|
||||||
|
Rake::Task[:lint].clear
|
||||||
|
PuppetLint::RakeTask.new :lint do |config|
|
||||||
|
config.ignore_paths = ["spec/**/*.pp", "vendor/**/*.pp"]
|
||||||
|
config.fail_on_warnings = true
|
||||||
|
config.log_format = '%{path}:%{linenumber}:%{KIND}: %{message}'
|
||||||
|
config.disable_checks = ["80chars", "class_inherits_from_params_class", "only_variable_string"]
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Run acceptance tests"
|
||||||
|
RSpec::Core::RakeTask.new(:acceptance) do |t|
|
||||||
|
t.pattern = 'spec/acceptance'
|
||||||
|
end
|
||||||
|
|
||||||
|
Rake::Task[:spec_prep].clear
|
||||||
|
desc 'Create the fixtures directory'
|
||||||
|
task :spec_prep do
|
||||||
|
# Allow to test the module with custom dependencies
|
||||||
|
# like you could do with .fixtures file
|
||||||
|
if ENV['PUPPETFILE']
|
||||||
|
puppetfile = ENV['PUPPETFILE']
|
||||||
|
if ENV['GEM_HOME']
|
||||||
|
gem_home = ENV['GEM_HOME']
|
||||||
|
gem_bin_dir = "#{gem_home}" + '/bin/'
|
||||||
|
else
|
||||||
|
gem_bin_dir = ''
|
||||||
|
end
|
||||||
|
r10k = ['env']
|
||||||
|
r10k += ["PUPPETFILE=#{puppetfile}"]
|
||||||
|
r10k += ["PUPPETFILE_DIR=#{Dir.pwd}/spec/fixtures/modules"]
|
||||||
|
r10k += ["#{gem_bin_dir}r10k"]
|
||||||
|
r10k += ['puppetfile', 'install', '-v']
|
||||||
|
sh(*r10k)
|
||||||
|
else
|
||||||
|
# otherwise, use official OpenStack Puppetfile
|
||||||
|
zuul_ref = ENV['ZUUL_REF']
|
||||||
|
zuul_branch = ENV['ZUUL_BRANCH']
|
||||||
|
zuul_url = ENV['ZUUL_URL']
|
||||||
|
repo = 'openstack/puppet-openstack-integration'
|
||||||
|
rm_rf(repo)
|
||||||
|
if File.exists?('/usr/zuul-env/bin/zuul-cloner')
|
||||||
|
zuul_clone_cmd = ['/usr/zuul-env/bin/zuul-cloner']
|
||||||
|
zuul_clone_cmd += ['--cache-dir', '/opt/git']
|
||||||
|
zuul_clone_cmd += ['--zuul-ref', "#{zuul_ref}"]
|
||||||
|
zuul_clone_cmd += ['--zuul-branch', "#{zuul_branch}"]
|
||||||
|
zuul_clone_cmd += ['--zuul-url', "#{zuul_url}"]
|
||||||
|
zuul_clone_cmd += ['git://git.openstack.org', "#{repo}"]
|
||||||
|
sh(*zuul_clone_cmd)
|
||||||
|
else
|
||||||
|
sh("git clone https://git.openstack.org/#{repo} #{repo}")
|
||||||
|
end
|
||||||
|
script = ['env']
|
||||||
|
script += ["PUPPETFILE_DIR=#{Dir.pwd}/spec/fixtures/modules"]
|
||||||
|
script += ["ZUUL_REF=#{zuul_ref}"]
|
||||||
|
script += ["ZUUL_BRANCH=#{zuul_branch}"]
|
||||||
|
script += ["ZUUL_URL=#{zuul_url}"]
|
||||||
|
script += ['bash', "#{repo}/install_modules_unit.sh"]
|
||||||
|
sh(*script)
|
||||||
|
end
|
||||||
|
rm_rf("spec/fixtures/modules/#{modname}")
|
||||||
|
ln_s(Dir.pwd, "spec/fixtures/modules/#{modname}")
|
||||||
|
mkdir_p('spec/fixtures/manifests')
|
||||||
|
touch('spec/fixtures/manifests/site.pp')
|
||||||
|
end
|
||||||
|
|
||||||
|
Rake::Task[:spec_clean].clear
|
||||||
|
desc 'Clean up the fixtures directory'
|
||||||
|
task :spec_clean do
|
||||||
|
rm_rf('spec/fixtures/modules')
|
||||||
|
rm_rf('openstack')
|
||||||
|
if File.zero?('spec/fixtures/manifests/site.pp')
|
||||||
|
rm_f('spec/fixtures/manifests/site.pp')
|
||||||
|
end
|
||||||
|
end
|
11
spec/acceptance/nodesets/centos-70-x64.yml
Normal file
11
spec/acceptance/nodesets/centos-70-x64.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
HOSTS:
|
||||||
|
centos-server-70-x64:
|
||||||
|
roles:
|
||||||
|
- master
|
||||||
|
platform: el-7-x86_64
|
||||||
|
box: puppetlabs/centos-7.0-64-nocm
|
||||||
|
box_url: https://vagrantcloud.com/puppetlabs/centos-7.0-64-nocm
|
||||||
|
hypervisor: vagrant
|
||||||
|
CONFIG:
|
||||||
|
log_level: debug
|
||||||
|
type: foss
|
10
spec/acceptance/nodesets/default.yml
Normal file
10
spec/acceptance/nodesets/default.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
HOSTS:
|
||||||
|
ubuntu-server-14.04-amd64:
|
||||||
|
roles:
|
||||||
|
- master
|
||||||
|
platform: ubuntu-14.04-amd64
|
||||||
|
box: puppetlabs/ubuntu-14.04-64-nocm
|
||||||
|
box_url: https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm
|
||||||
|
hypervisor: vagrant
|
||||||
|
CONFIG:
|
||||||
|
type: foss
|
10
spec/acceptance/nodesets/nodepool-centos7.yml
Normal file
10
spec/acceptance/nodesets/nodepool-centos7.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
HOSTS:
|
||||||
|
centos-70-x64:
|
||||||
|
roles:
|
||||||
|
- master
|
||||||
|
platform: el-7-x86_64
|
||||||
|
hypervisor: none
|
||||||
|
ip: 127.0.0.1
|
||||||
|
CONFIG:
|
||||||
|
type: foss
|
||||||
|
set_env: false
|
10
spec/acceptance/nodesets/nodepool-trusty.yml
Normal file
10
spec/acceptance/nodesets/nodepool-trusty.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
HOSTS:
|
||||||
|
ubuntu-14.04-amd64:
|
||||||
|
roles:
|
||||||
|
- master
|
||||||
|
platform: ubuntu-14.04-amd64
|
||||||
|
hypervisor: none
|
||||||
|
ip: 127.0.0.1
|
||||||
|
CONFIG:
|
||||||
|
type: foss
|
||||||
|
set_env: false
|
11
spec/acceptance/nodesets/ubuntu-server-1404-x64.yml
Normal file
11
spec/acceptance/nodesets/ubuntu-server-1404-x64.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
HOSTS:
|
||||||
|
ubuntu-server-14.04-amd64:
|
||||||
|
roles:
|
||||||
|
- master
|
||||||
|
platform: ubuntu-14.04-amd64
|
||||||
|
box: puppetlabs/ubuntu-14.04-64-nocm
|
||||||
|
box_url: https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm
|
||||||
|
hypervisor: vagrant
|
||||||
|
CONFIG:
|
||||||
|
log_level: debug
|
||||||
|
type: foss
|
40
spec/defaults.rb
Normal file
40
spec/defaults.rb
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# This file contains a module to return a default set of facts and supported
|
||||||
|
# operating systems for the tests in this module.
|
||||||
|
module OSDefaults
|
||||||
|
def self.get_facts(extra_facts={})
|
||||||
|
{ :os_service_default => '<SERVICE DEFAULT>' }.merge(extra_facts)
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.get_supported_os
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"operatingsystem" => "CentOS",
|
||||||
|
"operatingsystemrelease" => [
|
||||||
|
"6.0",
|
||||||
|
"7.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"operatingsystem" => "RedHat",
|
||||||
|
"operatingsystemrelease" => [
|
||||||
|
"6.0",
|
||||||
|
"7.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"operatingsystem" => "Ubuntu",
|
||||||
|
"operatingsystemrelease" => [
|
||||||
|
"12.04",
|
||||||
|
"14.04"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"operatingsystem" => "Debian",
|
||||||
|
"operatingsystemrelease" => [
|
||||||
|
"7",
|
||||||
|
"8"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
end
|
19
spec/spec_helper.rb
Normal file
19
spec/spec_helper.rb
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
require 'puppetlabs_spec_helper/module_spec_helper'
|
||||||
|
require 'shared_examples'
|
||||||
|
require 'webmock/rspec'
|
||||||
|
|
||||||
|
require 'rspec-puppet-facts'
|
||||||
|
include RspecPuppetFacts
|
||||||
|
require 'defaults.rb'
|
||||||
|
|
||||||
|
RSpec.configure do |c|
|
||||||
|
c.alias_it_should_behave_like_to :it_configures, 'configures'
|
||||||
|
c.alias_it_should_behave_like_to :it_raises, 'raises'
|
||||||
|
# TODO(aschultz): remove this after all tests converted to use OSDefaults
|
||||||
|
# instead of referencing @default_facts
|
||||||
|
c.before :each do
|
||||||
|
@default_facts = OSDefaults.get_facts
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
at_exit { RSpec::Puppet::Coverage.report! }
|
56
spec/spec_helper_acceptance.rb
Normal file
56
spec/spec_helper_acceptance.rb
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
require 'beaker-rspec'
|
||||||
|
require 'beaker/puppet_install_helper'
|
||||||
|
|
||||||
|
run_puppet_install_helper
|
||||||
|
|
||||||
|
RSpec.configure do |c|
|
||||||
|
# Project root
|
||||||
|
proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
||||||
|
modname = JSON.parse(open('metadata.json').read)['name'].split('-')[1]
|
||||||
|
|
||||||
|
# Readable test descriptions
|
||||||
|
c.formatter = :documentation
|
||||||
|
|
||||||
|
# Configure all nodes in nodeset
|
||||||
|
c.before :suite do
|
||||||
|
# Install module and dependencies
|
||||||
|
hosts.each do |host|
|
||||||
|
|
||||||
|
# install git
|
||||||
|
install_package host, 'git'
|
||||||
|
|
||||||
|
zuul_ref = ENV['ZUUL_REF']
|
||||||
|
zuul_branch = ENV['ZUUL_BRANCH']
|
||||||
|
zuul_url = ENV['ZUUL_URL']
|
||||||
|
|
||||||
|
repo = 'openstack/puppet-openstack-integration'
|
||||||
|
|
||||||
|
# Start out with clean moduledir, don't trust r10k to purge it
|
||||||
|
on host, "rm -rf /etc/puppet/modules/*"
|
||||||
|
# Install dependent modules via git or zuul
|
||||||
|
r = on host, "test -e /usr/zuul-env/bin/zuul-cloner", { :acceptable_exit_codes => [0,1] }
|
||||||
|
if r.exit_code == 0
|
||||||
|
zuul_clone_cmd = '/usr/zuul-env/bin/zuul-cloner '
|
||||||
|
zuul_clone_cmd += '--cache-dir /opt/git '
|
||||||
|
zuul_clone_cmd += "--zuul-ref #{zuul_ref} "
|
||||||
|
zuul_clone_cmd += "--zuul-branch #{zuul_branch} "
|
||||||
|
zuul_clone_cmd += "--zuul-url #{zuul_url} "
|
||||||
|
zuul_clone_cmd += "git://git.openstack.org #{repo}"
|
||||||
|
on host, zuul_clone_cmd
|
||||||
|
else
|
||||||
|
on host, "git clone https://git.openstack.org/#{repo} #{repo}"
|
||||||
|
end
|
||||||
|
|
||||||
|
on host, "ZUUL_REF=#{zuul_ref} ZUUL_BRANCH=#{zuul_branch} ZUUL_URL=#{zuul_url} bash #{repo}/install_modules.sh"
|
||||||
|
|
||||||
|
# Install the module being tested
|
||||||
|
on host, "rm -fr /etc/puppet/modules/#{modname}"
|
||||||
|
puppet_module_install(:source => proj_root, :module_name => modname)
|
||||||
|
|
||||||
|
on host, "rm -fr #{repo}"
|
||||||
|
|
||||||
|
# List modules installed to help with debugging
|
||||||
|
on host, puppet('module','list'), { :acceptable_exit_codes => 0 }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user