mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
Add rudimentary spec test to WaitTillUp using vagrant-spec
Add some basic spec tests for the WaitTillUp action class to lay some foundations. Utilize vagrant-spec pinned to a known working commit for tests to pass consistently until they provide releases. Requires updating some of the rspec libraries and includes sharedcontext.rb from the jantman/vagrant-r10k project on github.
This commit is contained in:
24
spec/support/libvirt_context.rb
Normal file
24
spec/support/libvirt_context.rb
Normal file
@@ -0,0 +1,24 @@
|
||||
require 'fog/libvirt'
|
||||
|
||||
shared_context "libvirt" do
|
||||
include_context "unit"
|
||||
|
||||
let(:libvirt_context) { true }
|
||||
let(:id) { "dummy-vagrant_dummy" }
|
||||
let(:connection) { double("::Fog::Compute") }
|
||||
|
||||
def connection_result(options={})
|
||||
result = options.fetch(:result, nil)
|
||||
double("connection_result" => result)
|
||||
end
|
||||
|
||||
before do
|
||||
# we don't want unit tests to ever run commands on the system; so we wire
|
||||
# in a double to ensure any unexpected messages raise exceptions
|
||||
stub_const("::Fog::Compute", connection)
|
||||
|
||||
# drivers also call vm_exists? during init;
|
||||
allow(connection).to receive(:servers).with(kind_of(String)).
|
||||
and_return(connection_result(result: nil))
|
||||
end
|
||||
end
|
||||
34
spec/support/sharedcontext.rb
Normal file
34
spec/support/sharedcontext.rb
Normal file
@@ -0,0 +1,34 @@
|
||||
require 'spec_helper'
|
||||
|
||||
shared_context "unit" do
|
||||
include_context 'vagrant-unit'
|
||||
|
||||
let(:test_env) do
|
||||
vagrantfile ||= <<-EOF
|
||||
Vagrant.configure('2') do |config|
|
||||
config.vm.define :test
|
||||
end
|
||||
EOF
|
||||
test_env = isolated_environment
|
||||
test_env.vagrantfile vagrantfile
|
||||
test_env
|
||||
end
|
||||
let(:env) { { env: iso_env, machine: machine, ui: ui, root_path: '/rootpath' } }
|
||||
let(:conf) { Vagrant::Config::V2::DummyConfig.new() }
|
||||
let(:ui) { Vagrant::UI::Basic.new() }
|
||||
let(:iso_env) { test_env.create_vagrant_env ui_class: Vagrant::UI::Basic }
|
||||
let(:machine) { iso_env.machine(:test, :libvirt) }
|
||||
# Mock the communicator to prevent SSH commands for being executed.
|
||||
let(:communicator) { double('communicator') }
|
||||
# Mock the guest operating system.
|
||||
let(:guest) { double('guest') }
|
||||
let(:app) { lambda { |env| } }
|
||||
let(:plugin) { register_plugin() }
|
||||
|
||||
before (:each) do
|
||||
machine.stub(:guest => guest)
|
||||
machine.stub(:communicator => communicator)
|
||||
machine.stub(:id => id)
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user