Move spec_helper_acceptance into helper gem
Every puppet module contains the same file that prepares beaker tests. Currently, when we need to make changes to it, we need to change it in every puppet module. This is inefficient and causes a huge review backlog for identical changes. This patch copies the spec_helper_acceptance.rb file, with minor modifications to keep the path logic correct, into the common helper gem. The modules already depend on this gem for common gem dependencies. This way, modules can simply `require puppet-openstack_infra_spec_helper/spec_helper_acceptance` in their tests and not bother keeping the spec_helper_acceptance module locally. Change-Id: I18ed6cd2f8ee472a66cf580e3e183d14c00e6877
This commit is contained in:
parent
8472caea46
commit
0861447aaa
|
@ -0,0 +1,71 @@
|
||||||
|
require 'beaker-rspec'
|
||||||
|
|
||||||
|
hosts.each do |host|
|
||||||
|
|
||||||
|
# puppet 3 isn't available from apt.puppetlabs.com so install it from the Xenial repos
|
||||||
|
on host, "which apt-get && apt-get install puppet -y", { :acceptable_exit_codes => [0,1] }
|
||||||
|
# otherwise use the beaker helpers to install the yum.puppetlabs.com repo and puppet
|
||||||
|
r = on host, "which yum", { :acceptable_exit_codes => [0,1] }
|
||||||
|
if r.exit_code == 0
|
||||||
|
install_puppet
|
||||||
|
end
|
||||||
|
add_platform_foss_defaults(host, 'unix')
|
||||||
|
|
||||||
|
on host, "mkdir -p #{host['distmoduledir']}"
|
||||||
|
end
|
||||||
|
|
||||||
|
RSpec.configure do |c|
|
||||||
|
# Project root
|
||||||
|
proj_root = File.expand_path(File.join(Dir.getwd))
|
||||||
|
modname = JSON.parse(open('metadata.json').read)['name'].split('-')[1]
|
||||||
|
|
||||||
|
# Make sure proj_root is the real project root
|
||||||
|
unless File.exists?("#{proj_root}/metadata.json")
|
||||||
|
raise "bundle exec rspec spec/acceptance needs be run from module root."
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# Readable test descriptions
|
||||||
|
c.formatter = :documentation
|
||||||
|
|
||||||
|
# Configure all nodes in nodeset
|
||||||
|
c.before :suite do
|
||||||
|
# Install module and dependencies
|
||||||
|
hosts.each do |host|
|
||||||
|
|
||||||
|
# Clean out any module cruft
|
||||||
|
shell('rm -fr /etc/puppet/modules/*')
|
||||||
|
|
||||||
|
# install git
|
||||||
|
install_package host, 'git'
|
||||||
|
|
||||||
|
zuul_ref = ENV['ZUUL_REF']
|
||||||
|
zuul_branch = ENV['ZUUL_BRANCH']
|
||||||
|
zuul_url = ENV['ZUUL_URL']
|
||||||
|
|
||||||
|
# Install dependent modules via git or zuul
|
||||||
|
r = on host, "test -e /usr/zuul-env/bin/zuul-cloner", { :acceptable_exit_codes => [0,1] }
|
||||||
|
repo = 'openstack-infra/system-config'
|
||||||
|
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}/tools/install_modules_acceptance.sh"
|
||||||
|
on host, "rm -fr /etc/puppet/modules/#{modname}"
|
||||||
|
|
||||||
|
# Install the module being tested
|
||||||
|
puppet_module_install(:source => proj_root, :module_name => modname)
|
||||||
|
on host, "rm -fr #{repo}"
|
||||||
|
# List modules installed to help with debugging
|
||||||
|
on hosts[0], puppet('module','list'), { :acceptable_exit_codes => 0 }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue