59 lines
1.8 KiB
Ruby
59 lines
1.8 KiB
Ruby
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
require File.expand_path("../../../../base", __FILE__)
|
|
|
|
require Vagrant.source_root.join("plugins/provisioners/container/client")
|
|
|
|
describe VagrantPlugins::ContainerProvisioner::Client do
|
|
|
|
let(:machine) { double("machine", communicate: communicator, ui: ui) }
|
|
let(:ui) { Vagrant::UI::Silent.new }
|
|
let(:communicator) { double("communicator") }
|
|
let(:container_command) { "CONTAINER_COMMAND" }
|
|
subject { described_class.new(machine, container_command) }
|
|
|
|
describe "#container_name" do
|
|
it "converts a container name to a run appropriate form" do
|
|
config = { :name => "test/test:1.1.1", :original_name => "test/test:1.1.1" }
|
|
expect(subject.container_name(config)).to eq("test-test-1.1.1")
|
|
end
|
|
end
|
|
|
|
describe "#build_images" do
|
|
before { allow(communicator).to receive(:sudo) }
|
|
|
|
it "should use sudo to run command" do
|
|
expect(communicator).to receive(:sudo).with(/#{Regexp.escape(container_command)}/)
|
|
subject.build_images([["path", {}]])
|
|
end
|
|
|
|
it "should output information to use" do
|
|
expect(ui).to receive(:info).and_call_original
|
|
subject.build_images([["path", {}]])
|
|
end
|
|
|
|
it "should handle communicator output" do
|
|
expect(communicator).to receive(:sudo).with(/#{Regexp.escape(container_command)}/).
|
|
and_yield(:stdout, "some output")
|
|
subject.build_images([["path", {}]])
|
|
end
|
|
end
|
|
|
|
describe "#pull_images" do
|
|
before do
|
|
allow(communicator).to receive(:sudo)
|
|
end
|
|
|
|
it "should use sudo to run command" do
|
|
expect(communicator).to receive(:sudo).with(/#{Regexp.escape(container_command)}/)
|
|
subject.pull_images(:image)
|
|
end
|
|
|
|
it "should output information to use" do
|
|
expect(ui).to receive(:info).and_call_original
|
|
subject.pull_images(:image)
|
|
end
|
|
end
|
|
end
|