From e6cac2e1b8af23f2ed7e477185bef4aa10d2eeb3 Mon Sep 17 00:00:00 2001 From: Colleen Murphy Date: Fri, 18 Aug 2017 10:41:43 +0200 Subject: [PATCH] Depend on helper gem for spec_helper_acceptance Instead of keeping a local copy of spec_helper_acceptance.rb and requiring updates to all modules for any change, we can move it into the common helper gem and require it from there. This will make it easier to create and review changes that affect all puppet modules. Also change the Gemfile to look for the gem in the local workspace if running in a zuul environment. Change-Id: If86144ecaf206ada80aebae350504c0d51495dff --- Gemfile | 12 +++-- spec/acceptance/basic_spec.rb | 2 +- spec/acceptance/behind_proxy_spec.rb | 2 +- spec/acceptance/loadbalancer_spec.rb | 2 +- spec/spec_helper_acceptance.rb | 65 ---------------------------- 5 files changed, 11 insertions(+), 72 deletions(-) delete mode 100644 spec/spec_helper_acceptance.rb diff --git a/Gemfile b/Gemfile index fbec945..9854cc9 100644 --- a/Gemfile +++ b/Gemfile @@ -1,11 +1,15 @@ source 'https://rubygems.org' +if ENV['ZUUL_REF'] && File.exists?("#{ENV['WORKSPACE']}/openstack-infra/puppet-openstack_infra_spec_helper") + gem_checkout_method = {:path => "#{ENV['WORKSPACE']}/openstack-infra/puppet-openstack_infra_spec_helper"} +else + gem_checkout_method = {:git => 'https://git.openstack.org/openstack-infra/puppet-openstack_infra_spec_helper'} +end +gem_checkout_method[:require] = false + group :development, :test, :system_tests do gem 'puppet-openstack_infra_spec_helper', - :git => 'https://git.openstack.org/openstack-infra/puppet-openstack_infra_spec_helper', - :require => false - # Not all modules can do this, so we add it here to the ones that can - gem 'puppet-lint-empty_string-check' + gem_checkout_method end # vim:ft=ruby diff --git a/spec/acceptance/basic_spec.rb b/spec/acceptance/basic_spec.rb index faee3db..1fa44c9 100644 --- a/spec/acceptance/basic_spec.rb +++ b/spec/acceptance/basic_spec.rb @@ -1,4 +1,4 @@ -require 'spec_helper_acceptance' +require 'puppet-openstack_infra_spec_helper/spec_helper_acceptance' describe 'puppet-cgit module', :if => ['fedora', 'redhat'].include?(os[:family]) do def pp_path diff --git a/spec/acceptance/behind_proxy_spec.rb b/spec/acceptance/behind_proxy_spec.rb index afb2ddf..bd86b3e 100644 --- a/spec/acceptance/behind_proxy_spec.rb +++ b/spec/acceptance/behind_proxy_spec.rb @@ -1,4 +1,4 @@ -require 'spec_helper_acceptance' +require 'puppet-openstack_infra_spec_helper/spec_helper_acceptance' describe 'puppet-cgit module begind proxy', :if => ['fedora', 'redhat'].include?(os[:family]) do def pp_path diff --git a/spec/acceptance/loadbalancer_spec.rb b/spec/acceptance/loadbalancer_spec.rb index d077fe2..f8452d9 100644 --- a/spec/acceptance/loadbalancer_spec.rb +++ b/spec/acceptance/loadbalancer_spec.rb @@ -1,4 +1,4 @@ -require 'spec_helper_acceptance' +require 'puppet-openstack_infra_spec_helper/spec_helper_acceptance' describe 'puppet-cgit loadbalancer module', :if => ['debian', 'ubuntu'].include?(os[:family]) do def pp_path diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb deleted file mode 100644 index 002ab34..0000000 --- a/spec/spec_helper_acceptance.rb +++ /dev/null @@ -1,65 +0,0 @@ -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(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| - - # 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