51 lines
1.4 KiB
Ruby

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1
require_relative "../../../../base"
require_relative "../../../../../../plugins/hosts/darwin/cap/version"
describe VagrantPlugins::HostDarwin::Cap::Version do
describe ".version" do
let(:product_version) { "10.5.1" }
let(:env) { double(:env) }
let(:exit_code) { 0 }
let(:stderr) { "" }
let(:stdout) { product_version }
let(:result) {
Vagrant::Util::Subprocess::Result.new(exit_code, stdout, stderr)
}
before do
allow(Vagrant::Util::Subprocess).to receive(:execute).
with("sw_vers", "-productVersion").
and_return(result)
end
it "should return a Gem::Version" do
expect(described_class.version(env)).to be_a(Gem::Version)
end
it "should equal the defined version" do
expect(described_class.version(env)).to eq(Gem::Version.new(product_version))
end
context "when version cannot be parsed" do
let(:product_version) { "invalid" }
it "should raise a failure error" do
expect { described_class.version(env) }.
to raise_error(Vagrant::Errors::DarwinVersionFailed)
end
end
context "when command execution fails" do
let(:exit_code) { 1 }
it "should raise a failure error" do
expect { described_class.version(env) }.
to raise_error(Vagrant::Errors::DarwinVersionFailed)
end
end
end
end