Skip to content
This repository has been archived by the owner on Nov 2, 2019. It is now read-only.

Develop #19

Merged
merged 6 commits into from
Aug 13, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions lib/vagrant_spec/command/init.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# encoding: UTF-8

require 'fileutils'

require 'vagrant_spec/ansible_inventory'
require 'vagrant_spec/machine_data'
require 'vagrant_spec/config'
Expand Down Expand Up @@ -30,6 +32,7 @@ def initialize(argv, env)

def execute
return unless parse_opts
FileUtils.mkdir @directory unless Dir.exist? @directory
unless @ansible_inventory == DEFAULTS['ansible_inventory']
VagrantSpec::AnsibleInventory.new(@env).generate
end
Expand Down
15 changes: 11 additions & 4 deletions lib/vagrant_spec/test_plan.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,21 @@ def initialize(env)
# This will fail if any of the tests fail, but it will allow all tests to
# run
def run
print_banner
@test_plan.each do |plan|
found_nodes = nodes(plan)
if found_nodes
found_nodes.each { |node| execute_plan_tests(node, plan) }
end
end
exit @ret_code
end

def print_banner
@env.ui.info('*******************************************************')
@env.ui.info('***************** ServerSpec Test Run *****************')
@env.ui.info('*******************************************************')
@env.ui.info('')
@test_plan.each do |plan|
nodes(plan).each { |node| execute_plan_tests(node, plan) }
end
exit @ret_code
end

# Return array of active Vagrant machines
Expand Down
1 change: 1 addition & 0 deletions scripts/poor_mans_smoke_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ bundle exec vagrant spec test -h
bundle exec vagrant spec no_command -h
rm -f "serverspec/spec_helper.rb"
rm -f ".vagrantspec_machine_data"
rm -f "vagrantspec_inventory"
bundle exec vagrant up
bundle exec vagrant spec init
ansible-playbook site.yml -i vagrantspec_inventory
Expand Down
10 changes: 10 additions & 0 deletions spec/unit/vagrant_spec_test/command_spec/init_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ def execute_proc
allow_any_instance_of(VagrantSpec::MachineData).to receive(:generate)
allow(mock_ansible_inventory).to receive(:generate)
allow(mock_machine_data).to receive(:generate)
allow(Dir).to receive(:exist?) { false }
allow(FileUtils).to receive(:mkdir)
end
end

Expand All @@ -55,6 +57,14 @@ def execute_protection_proc
end
end

context 'when the @directory does not exist' do
it '#execute creates the @directory' do
execute_protection_proc.call
expect(FileUtils).to receive(:mkdir).with(subject.directory)
subject.execute
end
end

context 'and when @ansible_inventory eq empty hash,' do
it '#execute creates an instance of VagrantSpec::SpecHelper' do
execute_protection_proc.call
Expand Down
29 changes: 15 additions & 14 deletions spec/unit/vagrant_spec_test/test_plan_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,6 @@
describe VagrantSpec::TestPlan do
include RSpec::Support::InSubProcess
include_context 'unit'

##############################################################################
# mocks

include_examples 'shared_mocks'

let(:mock_plan) do
Expand All @@ -40,9 +36,6 @@

let(:mock_ssh_backend) { double(Specinfra::Backend::Ssh) }

##############################################################################
# Stubs

before do
allow_any_instance_of(VagrantSpec::MachineFinder)
.to receive(:match_nodes) { [double(Vagrant::Machine)] }
Expand All @@ -63,6 +56,11 @@

subject { VagrantSpec::TestPlan.new(iso_env) }

it '#print_banner prints the testing initialization banner' do
expect(mock_ui).to receive(:info)
subject.print_banner
end

context 'when passing a Regexp object' do
it '#nodes calls match_nodes on a machine_finder instance' do
expect(subject.m_finder).to receive(:match_nodes)
Expand Down Expand Up @@ -93,13 +91,6 @@
end
end

##############################################################################
# Testing #execute_plan_tests
#
# These tests must be executed in a sub process because execute_plan_tests
# executes clear_examples. clear_examples modifies global state, so we must
# contain it.

def execute_plan_tests_proc
proc do
allow(subject).to receive(:close_ssh)
Expand Down Expand Up @@ -129,4 +120,14 @@ def execute_plan_tests_proc
expect(subject).to receive(:configure_serverspec)
end
end

context 'when nodes returns nil' do
it '#run does not fail with NoMethodError' do
allow(subject).to receive(:execute_plan_tests)
allow(subject).to receive(:exit)
allow(subject).to receive(:nodes) { nil }

expect { subject.run }.not_to raise_error
end
end
end