Skip to content

Instantly share code, notes, and snippets.

@bltavares
Last active September 18, 2015 14:49
Show Gist options
  • Save bltavares/2d57ae8da54fa95e2933 to your computer and use it in GitHub Desktop.
Save bltavares/2d57ae8da54fa95e2933 to your computer and use it in GitHub Desktop.
#!/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