diff --git a/plugins/commands/provider/command.rb b/plugins/commands/provider/command.rb index 791a82246..401c8be03 100644 --- a/plugins/commands/provider/command.rb +++ b/plugins/commands/provider/command.rb @@ -46,7 +46,7 @@ module VagrantPlugins # Check if we're just doing a usability check if options[:usable] - puts machine.provider_name.to_s + @env.ui.output(machine.provider_name.to_s) return 0 if machine.provider.class.usable?(false) return 1 end @@ -59,8 +59,12 @@ module VagrantPlugins end machine.provider.capability(:install) + return end + # No subtask, just output the provider name + @env.ui.output(machine.provider_name.to_s) + # Success, exit status 0 0 end diff --git a/test/unit/plugins/commands/provider/command_test.rb b/test/unit/plugins/commands/provider/command_test.rb new file mode 100644 index 000000000..c1dae2923 --- /dev/null +++ b/test/unit/plugins/commands/provider/command_test.rb @@ -0,0 +1,47 @@ +require File.expand_path("../../../../base", __FILE__) + +require Vagrant.source_root.join("plugins/commands/provider/command") + +describe VagrantPlugins::CommandProvider::Command do + include_context "unit" + + let(:iso_env) do + # We have to create a Vagrantfile so there is a root path + env = isolated_environment + env.vagrantfile("") + env.create_vagrant_env + end + + let(:guest) { double("guest") } + let(:host) { double("host") } + let(:machine) { iso_env.machine(iso_env.machine_names[0], :dummy) } + + let(:argv) { [] } + + subject { described_class.new(argv, iso_env) } + + before do + allow(subject).to receive(:with_target_vms) { |&block| block.call machine } + end + + describe "execute" do + context "no arguments" do + it "exits with the provider name" do + expect(subject.execute).to eq(0) + end + end + + context "--usable" do + let(:argv) { ["--usable"] } + + it "exits 0 if it is usable" do + expect(subject.execute).to eq(0) + end + + it "exits 1 if it is not usable" do + expect(machine.provider.class).to receive(:usable?).and_return(false) + expect(subject.execute).to eq(1) + end + end + end +end