Merge pull request #8353 from chrisroberts/testing/spec
Add initial setup for package testing
This commit is contained in:
commit
d25d6d1b8b
|
@ -45,3 +45,6 @@ doc/
|
|||
.ruby-gemset
|
||||
.ruby-version
|
||||
.rvmrc
|
||||
|
||||
# Box storage for spec
|
||||
test/vagrant-spec/boxes/*.box
|
|
@ -9,7 +9,7 @@ shared_examples 'provider/linked_clone' do |provider, options|
|
|||
|
||||
before do
|
||||
environment.skeleton('linked_clone')
|
||||
assert_execute('vagrant', 'box', 'add', options[:box])
|
||||
assert_execute('vagrant', 'box', 'add', 'box', options[:box])
|
||||
end
|
||||
|
||||
after do
|
||||
|
|
|
@ -8,7 +8,7 @@ shared_examples "provider/network/intnet" do |provider, options|
|
|||
|
||||
before do
|
||||
environment.skeleton("network_intnet")
|
||||
assert_execute("vagrant", "box", "add", options[:box])
|
||||
assert_execute("vagrant", "box", "add", "box", options[:box])
|
||||
assert_execute("vagrant", "up", "--provider=#{provider}")
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
# Guest boxes to use for vagrant-spec
|
||||
GUEST_BOXES = {
|
||||
'spox/ubuntu-16.04' => '0.0.1',
|
||||
'spox/centos-7' => '0.0.1',
|
||||
'spox/windows-10' => '0.0.1',
|
||||
'spox/osx-10.12' => '0.0.1'
|
||||
}
|
||||
|
||||
# Host boxes to run vagrant-spec
|
||||
HOST_BOXES = {
|
||||
'spox/ubuntu-16.04' => '0.0.1',
|
||||
'spox/centos-7' => '0.0.1',
|
||||
'spox/windows-10' => '0.0.1',
|
||||
'spox/osx-10.12' => '0.0.1'
|
||||
}
|
||||
|
||||
# Determine what providers to test
|
||||
enabled_providers = ENV.fetch("VAGRANT_SPEC_PROVIDERS", "virtualbox").split(",")
|
||||
# Set what boxes should be used
|
||||
enabled_guests = ENV["VAGRANT_GUEST_BOXES"] ? ENV["VAGRANT_GUEST_BOXES"].split(",") : GUEST_BOXES.keys
|
||||
enabled_hosts = ENV["VAGRANT_HOST_BOXES"] ? ENV["VAGRANT_HOST_BOXES"].split(",") : HOST_BOXES.keys
|
||||
|
||||
guest_boxes = Hash[GUEST_BOXES.find_all{|name, version| enabled_guests.include?(name)}.compact]
|
||||
host_boxes = Hash[HOST_BOXES.find_all{|name, version| enabled_hosts.include?(name)}.compact]
|
||||
|
||||
# Download copies of the guest boxes for testing if missing
|
||||
enabled_providers.each do |provider_name|
|
||||
guest_boxes.each do |guest_box, box_version|
|
||||
box_owner, box_name = guest_box.split('/')
|
||||
box_path = File.join(File.dirname(__FILE__), "./boxes/#{guest_box.sub('/', '_')}.#{provider_name}.#{box_version}.box")
|
||||
if !File.exist?(box_path)
|
||||
$stderr.puts "Downloading guest box #{guest_box}"
|
||||
result = system("curl -Lf -o #{box_path} \"https://atlas.hashicorp.com/#{box_owner}/boxes/#{box_name}/versions/#{box_version}/providers/#{provider_name}.box\"")
|
||||
if !result
|
||||
$stderr.puts
|
||||
$stderr.puts "ERROR: Failed to download guest box #{guest_box} for #{provider_name}!"
|
||||
exit 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Vagrant.configure(2) do |global_config|
|
||||
host_boxes.each do |box_name, box_version|
|
||||
platform = box_name.split('/').last.sub(/[^a-z]+$/, '')
|
||||
|
||||
enabled_providers.each do |provider_name|
|
||||
global_config.vm.define("#{box_name.split('/').last}-#{provider_name}") do |config|
|
||||
config.vm.box = box_name
|
||||
config.vm.box_version = box_version
|
||||
config.vm.synced_folder '.', '/vagrant', disable: true
|
||||
config.vm.synced_folder '../../', '/vagrant'
|
||||
config.vm.provider :vmware_workstation do |vmware|
|
||||
vmware.vmx["memsize"] = "2048"
|
||||
vmware.vmx['vhv.enable'] = 'TRUE'
|
||||
vmware.vmx['vhv.allow'] = 'TRUE'
|
||||
end
|
||||
config.vm.provision :shell, path: "./scripts/#{platform}-setup.#{provider_name}.sh"
|
||||
GUEST_BOXES.each do |guest_box, box_version|
|
||||
config.vm.provision(
|
||||
:shell,
|
||||
path: "./scripts/#{platform}-run.#{provider_name}.sh",
|
||||
keep_color: true,
|
||||
env: {
|
||||
"VAGRANT_SPEC_BOX" => "/vagrant/test/vagrant-spec/boxes/#{guest_box.sub('/', '_')}.#{provider_name}.#{box_version}.box"
|
||||
}
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,10 @@
|
|||
require_relative "../../acceptance/base"
|
||||
|
||||
Vagrant::Spec::Acceptance.configure do |c|
|
||||
c.component_paths << File.expand_path("../test/acceptance", __FILE__)
|
||||
c.skeleton_paths << File.expand_path("../test/acceptance/skeletons", __FILE__)
|
||||
|
||||
c.provider "virtualbox",
|
||||
box: ENV["VAGRANT_SPEC_BOX"],
|
||||
contexts: ["provider-context/virtualbox"]
|
||||
end
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
set -x
|
||||
|
||||
export VAGRANT_SPEC_BOX="${VAGRANT_SPEC_BOX}"
|
||||
vagrant vagrant-spec /vagrant/test/vagrant-spec/configs/vagrant-spec.config.virtualbox.rb
|
||||
result=$?
|
||||
|
||||
exit $result
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
set -xe
|
||||
|
||||
apt-get update -q
|
||||
apt-get install -qy virtualbox
|
||||
|
||||
pushd /vagrant
|
||||
|
||||
dpkg -i ./pkg/dist/vagrant_*_x86_64.deb
|
||||
vagrant plugin install ./vagrant-spec.gem
|
||||
|
||||
popd
|
Loading…
Reference in New Issue