-
-
Save bltavares/db59406d14f93f02a24e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Run in directory project | |
comment_spec(){ | |
spec_helper=$(cat <<\EOF | |
require 'beaker-rspec' | |
hosts.each do |host| | |
#install_puppet | |
#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 | |
EOF | |
) | |
cat > spec/spec_helper_acceptance.rb <<<"$spec_helper" | |
} | |
echo "Enter Option: " | |
echo "1)New Project " | |
echo "2)Run Test Centos" | |
echo "3)Run Test Ubuntu" | |
read option | |
case $option in | |
1) | |
echo "Project: " | |
read project_name | |
git clone https://review.openstack.org/openstack-infra/puppet-${project_name} | |
pushd puppet-$project_name | |
# git checkout -b add-acceptance-tests | |
gem_file_addition=$(cat <<\EOF | |
group :system_tests do | |
gem 'beaker-rspec', :require => false | |
end | |
EOF | |
) | |
gitignore=$(cat <<\EOF | |
Gemfile.lock | |
.bundled_gems/ | |
log/ | |
junit/ | |
.vagrant/ | |
EOF | |
) | |
basic_spec=$(cat <<\EOF | |
require 'spec_helper_acceptance' | |
describe 'puppet-'${project_name}' module' do | |
def pp_path | |
base_path = File.dirname(__FILE__) | |
File.join(base_path, 'fixtures') | |
end | |
def preconditions_puppet_module | |
module_path = File.join(pp_path, 'preconditions.pp') | |
File.read(module_path) | |
end | |
def default_puppet_module | |
module_path = File.join(pp_path, 'default.pp') | |
File.read(module_path) | |
end | |
before(:all) do | |
apply_manifest(preconditions_puppet_module, catch_failures: true) | |
end | |
it 'should work with no errors' do | |
apply_manifest(default_puppet_module, catch_failures: true) | |
end | |
it 'should be idempotent' do | |
apply_manifest(default_puppet_module, catch_failures: true) | |
apply_manifest(default_puppet_module, catch_changes: true) | |
end | |
end | |
EOF | |
) | |
cat > .gitignore <<<"$gitignore" | |
cat > spec/acceptance/basic_spec.rb <<<"$basic_spec" | |
cat >> Gemfile <<<"$gem_file_addition" | |
mkdir -p spec/acceptance/fixtures/ | |
touch spec/acceptance/fixtures/{default,preconditions}.pp | |
bundle install | |
;; | |
2) | |
platform='platform: el-7-x86_64' | |
box='box: glauco\/openstack-infra-development-centos' | |
sed -i '' -e "s/platform.*/${platform}/" spec/acceptance/nodesets/default.yml | |
sed -i '' -e "s/box:.*/${box}/" spec/acceptance/nodesets/default.yml | |
comment_spec | |
;; | |
3) | |
platform='platform: ubuntu-14.04-amd64' | |
box='box: glauco\/openstack-infra-development-ubuntu' | |
sed -i '' -e "s/platform.*/${platform}/" spec/acceptance/nodesets/default.yml | |
sed -i '' -e "s/box:.*/${box}/" spec/acceptance/nodesets/default.yml | |
comment_spec | |
;; | |
*) echo "INVALID NUMBER!" ;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment