Try to use zuul-cloner to prepare fixtures
In OpenStack Infra, we would like to run Puppet unit tests that
sometimes depends on other Puppet OpenStack modules.
Example: a patch in puppet-openstacklib that needs to be tested in puppet-nova.
This patch modifies the Rakefile to:
* clean spec_prep and spec_clean Rake tasks
* use openstack/puppet-openstack-integration/install_modules_unit.sh script
to clone modules.
* do not use .fixtures.yaml file to clone modules and rely on
zuul-cloner or git.
* Add openstack/ in gitignore so we never commit the
puppet-openstack-integration repository (can happen when spec_clean
did not run but you want to submit the patch anyway)
* Allow to run a custom Puppetfile if PUPPETFILE env is exported. It
will allow people to test the module with the dependencies they like,
feature we had with .fixtures.yaml.
Also add 'r10k' to Gemfile.
That way, we will be able to use zuul dependencies and run tests accross
modules like we do with functional testing.
Change-Id: I154e5ab5623b932fc3c550f7969a39993f38a3cf
(cherry picked from commit 79cb000d22
)
This commit is contained in:
parent
09e2ced9be
commit
884c563701
|
@ -1,13 +0,0 @@
|
|||
fixtures:
|
||||
repositories:
|
||||
'inifile': 'git://github.com/puppetlabs/puppetlabs-inifile.git'
|
||||
'concat':
|
||||
repo: 'git://github.com/puppetlabs/puppetlabs-concat.git'
|
||||
ref: '1.2.1'
|
||||
'keystone': 'git://github.com/stackforge/puppet-keystone.git'
|
||||
'mysql': 'git://github.com/puppetlabs/puppetlabs-mysql.git'
|
||||
'openstacklib': 'git://github.com/stackforge/puppet-openstacklib.git'
|
||||
'postgresql': 'git://github.com/puppetlabs/puppet-postgresql.git'
|
||||
'stdlib': 'git://github.com/puppetlabs/puppetlabs-stdlib.git'
|
||||
symlinks:
|
||||
'tuskar': "#{source_dir}"
|
|
@ -5,3 +5,4 @@ Gemfile.lock
|
|||
.vendor
|
||||
.bundle/
|
||||
vendor/
|
||||
openstack/
|
||||
|
|
4
Gemfile
4
Gemfile
|
@ -20,6 +20,10 @@ group :development, :test do
|
|||
gem 'webmock'
|
||||
end
|
||||
|
||||
group :system_tests do
|
||||
gem 'r10k', :require => 'false'
|
||||
end
|
||||
|
||||
if puppetversion = ENV['PUPPET_GEM_VERSION']
|
||||
gem 'puppet', puppetversion, :require => false
|
||||
else
|
||||
|
|
64
Rakefile
64
Rakefile
|
@ -1,5 +1,8 @@
|
|||
require 'puppetlabs_spec_helper/rake_tasks'
|
||||
require 'puppet-lint/tasks/puppet-lint'
|
||||
require 'json'
|
||||
|
||||
modname = JSON.parse(open('metadata.json').read)['name'].split('-')[1]
|
||||
|
||||
PuppetLint.configuration.fail_on_warnings = true
|
||||
PuppetLint.configuration.send('disable_80chars')
|
||||
|
@ -7,3 +10,64 @@ PuppetLint.configuration.send('disable_class_parameter_defaults')
|
|||
|
||||
task(:default).clear
|
||||
task :default => [:spec, :lint]
|
||||
|
||||
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} -b stable/kilo #{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
|
||||
|
|
Loading…
Reference in New Issue