mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
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
This commit is contained in:
42
spec/unit/plugin_spec.rb
Normal file
42
spec/unit/plugin_spec.rb
Normal file
@@ -0,0 +1,42 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user