Files
vagrant-libvirt/spec/unit/plugin_spec.rb
Darragh Bailey 9885e58c21 Update after hook definition for recent vagrant (#1506)
Vagrant newer than 2.2.11 reworked how the after hook definition
functions requiring it to be called in a different way to ensure it is
possible to hook the box remove action to perform the expected local
action.

Add a compatibility function to ensure that the plugin works with both
mechanisms and some simple tests to ensure that with the unit tests
validated against the older vagrant versions that it confirms the action
will be called as expected.

As part of fixing the call of the remove_libvirt_image action, ensure it
only executes when the box removed is a libvirt one and ignores all
others.

Fixes: #1196
2022-06-05 17:44:10 +01:00

43 lines
1.3 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
require 'support/sharedcontext'
require 'vagrant-libvirt/plugin'
describe VagrantPlugins::ProviderLibvirt::Plugin do
subject { described_class.new }
include_context 'unit'
describe '#action_hook remove_libvirt_image' do
before do
# set up some dummy boxes
box_path = File.join(env[:env].boxes.directory, 'vagrant-libvirt-VAGRANTSLASH-test', '0.0.1')
['libvirt', 'virtualbox'].each do |provider|
provider_path = File.join(box_path, provider)
FileUtils.mkdir_p(provider_path)
metadata = {'provider': provider}
File.open(File.join(provider_path, 'metadata.json'), "w") { |f| f.write metadata.to_json }
end
end
it 'should call the action hook after box remove' do
expect(VagrantPlugins::ProviderLibvirt::Action).to receive(:remove_libvirt_image).and_return(Vagrant::Action::Builder.new)
expect {
env[:env].action_runner.run(
Vagrant::Action.action_box_remove, {
box_name: 'vagrant-libvirt/test',
box_provider: 'libvirt',
box_version: '0.0.1',
force_confirm_box_remove: true,
box_remove_all_versions: false,
ui: ui,
}
)
}.to_not raise_error
end
end
end