Last active
September 18, 2015 14:49
-
-
Save bltavares/2d57ae8da54fa95e2933 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
#!/usr/bin/env bash | |
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 | |
) | |
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- 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 | |
) | |
nodeset=$(cat <<\EOF | |
HOSTS: | |
ubuntu-server-1404-x64: | |
roles: | |
- master | |
platform: ubuntu-14.04-amd64 | |
box: glauco/openstack-infra-development-ubuntu | |
box_url: https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm | |
hypervisor: vagrant | |
CONFIG: | |
log_level: debug | |
type: git | |
EOF | |
) | |
cat > .gitignore <<<"$gitignore" | |
cat > spec/acceptance/basic_spec.rb <<<"$basic_spec" | |
cat > spec/spec_helper_acceptance.rb <<<"$spec_helper" | |
cat > spec/acceptance/nodesets/default.yml <<<"$nodeset" | |
cat >> Gemfile <<<"$gem_file_addition" | |
mkdir -p spec/acceptance/fixtures/ | |
touch spec/acceptance/fixtures/{default,preconditions}.pp |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment