80 lines
2.0 KiB
Ruby
80 lines
2.0 KiB
Ruby
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
require_relative "../../../../base"
|
|
|
|
describe "VagrantPlugins::VagrantPlugins::Cap::Rsync" do
|
|
let(:caps) do
|
|
VagrantPlugins::GuestOpenWrt::Plugin
|
|
.components
|
|
.guest_capabilities[:openwrt]
|
|
end
|
|
|
|
let(:machine) { double("machine") }
|
|
let(:comm) { VagrantTests::DummyCommunicator::Communicator.new(machine) }
|
|
let(:guest_directory) { "/guest/directory/path" }
|
|
|
|
before do
|
|
allow(machine).to receive(:communicate).and_return(comm)
|
|
end
|
|
|
|
after do
|
|
comm.verify_expectations!
|
|
end
|
|
|
|
describe ".rsync_installed" do
|
|
let(:cap) { caps.get(:rsync_installed) }
|
|
|
|
describe "when rsync is in the path" do
|
|
it "is true" do
|
|
comm.stub_command("which rsync", stdout: '/usr/bin/rsync', exit_code: 0)
|
|
expect(cap.rsync_installed(machine)).to be true
|
|
end
|
|
end
|
|
|
|
describe "when rsync is not in the path" do
|
|
it "is false" do
|
|
comm.stub_command("which rsync", stdout: '', exit_code: 1)
|
|
expect(cap.rsync_installed(machine)).to be false
|
|
end
|
|
end
|
|
end
|
|
|
|
describe ".rsync_install" do
|
|
let(:cap) { caps.get(:rsync_install) }
|
|
|
|
it "installs rsync" do
|
|
cap.rsync_install(machine)
|
|
|
|
expect(comm.received_commands[0]).to match(/opkg update/)
|
|
expect(comm.received_commands[0]).to match(/opkg install rsync/)
|
|
end
|
|
end
|
|
|
|
describe ".rsync_command" do
|
|
let(:cap) { caps.get(:rsync_command) }
|
|
|
|
it "provides the rsync command to use" do
|
|
expect(cap.rsync_command(machine)).to eq("rsync -zz")
|
|
end
|
|
end
|
|
|
|
describe ".rsync_pre" do
|
|
let(:cap) { caps.get(:rsync_pre) }
|
|
|
|
it "creates target directory on guest" do
|
|
cap.rsync_pre(machine, :guestpath => guest_directory)
|
|
expect(comm.received_commands[0]).to match(/mkdir -p '\/guest\/directory\/path'/)
|
|
end
|
|
end
|
|
|
|
describe ".rsync_post" do
|
|
let(:cap) { caps.get(:rsync_post) }
|
|
|
|
it "is a no-op" do
|
|
cap.rsync_post(machine, {})
|
|
expect(comm).to_not receive(:execute)
|
|
end
|
|
end
|
|
end
|