128 lines
3.7 KiB
Ruby
128 lines
3.7 KiB
Ruby
require_relative "../../../../base"
|
|
|
|
describe "VagrantPlugins::GuestLinux::Cap::FileSystem" do
|
|
let(:caps) do
|
|
VagrantPlugins::GuestLinux::Plugin
|
|
.components
|
|
.guest_capabilities[:linux]
|
|
end
|
|
|
|
let(:machine) { double("machine", communicate: comm) }
|
|
let(:comm) { double("comm") }
|
|
|
|
before { allow(comm).to receive(:execute) }
|
|
|
|
describe ".create_tmp_path" do
|
|
let(:cap) { caps.get(:create_tmp_path) }
|
|
let(:opts) { {} }
|
|
|
|
it "should generate path on guest" do
|
|
expect(comm).to receive(:execute).with(/mktemp/)
|
|
cap.create_tmp_path(machine, opts)
|
|
end
|
|
|
|
it "should capture path generated on guest" do
|
|
expect(comm).to receive(:execute).with(/mktemp/).and_yield(:stdout, "TMP_PATH")
|
|
expect(cap.create_tmp_path(machine, opts)).to eq("TMP_PATH")
|
|
end
|
|
|
|
it "should strip newlines on path" do
|
|
expect(comm).to receive(:execute).with(/mktemp/).and_yield(:stdout, "TMP_PATH\n")
|
|
expect(cap.create_tmp_path(machine, opts)).to eq("TMP_PATH")
|
|
end
|
|
|
|
context "when type is a directory" do
|
|
before { opts[:type] = :directory }
|
|
|
|
it "should create guest path as a directory" do
|
|
expect(comm).to receive(:execute).with(/-d/)
|
|
cap.create_tmp_path(machine, opts)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe ".decompress_tgz" do
|
|
let(:cap) { caps.get(:decompress_tgz) }
|
|
let(:comp) { "compressed_file" }
|
|
let(:dest) { "path/to/destination" }
|
|
let(:opts) { {} }
|
|
|
|
before { allow(cap).to receive(:create_tmp_path).and_return("TMP_DIR") }
|
|
after{ cap.decompress_tgz(machine, comp, dest, opts) }
|
|
|
|
it "should create temporary directory for extraction" do
|
|
expect(cap).to receive(:create_tmp_path)
|
|
end
|
|
|
|
it "should extract file with tar" do
|
|
expect(comm).to receive(:execute).with(/tar/)
|
|
end
|
|
|
|
it "should extract file to temporary directory" do
|
|
expect(comm).to receive(:execute).with(/TMP_DIR/)
|
|
end
|
|
|
|
it "should remove compressed file from guest" do
|
|
expect(comm).to receive(:execute).with(/rm .*#{comp}/)
|
|
end
|
|
|
|
it "should remove extraction directory from guest" do
|
|
expect(comm).to receive(:execute).with(/rm .*TMP_DIR/)
|
|
end
|
|
|
|
it "should create parent directories for destination" do
|
|
expect(comm).to receive(:execute).with(/mkdir -p .*to'/)
|
|
end
|
|
|
|
context "when type is directory" do
|
|
before { opts[:type] = :directory }
|
|
|
|
it "should create destination directory" do
|
|
expect(comm).to receive(:execute).with(/mkdir -p .*destination'/)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe ".decompress_zip" do
|
|
let(:cap) { caps.get(:decompress_zip) }
|
|
let(:comp) { "compressed_file" }
|
|
let(:dest) { "path/to/destination" }
|
|
let(:opts) { {} }
|
|
|
|
before { allow(cap).to receive(:create_tmp_path).and_return("TMP_DIR") }
|
|
after{ cap.decompress_zip(machine, comp, dest, opts) }
|
|
|
|
it "should create temporary directory for extraction" do
|
|
expect(cap).to receive(:create_tmp_path)
|
|
end
|
|
|
|
it "should extract file with zip" do
|
|
expect(comm).to receive(:execute).with(/zip/)
|
|
end
|
|
|
|
it "should extract file to temporary directory" do
|
|
expect(comm).to receive(:execute).with(/TMP_DIR/)
|
|
end
|
|
|
|
it "should remove compressed file from guest" do
|
|
expect(comm).to receive(:execute).with(/rm .*#{comp}/)
|
|
end
|
|
|
|
it "should remove extraction directory from guest" do
|
|
expect(comm).to receive(:execute).with(/rm .*TMP_DIR/)
|
|
end
|
|
|
|
it "should create parent directories for destination" do
|
|
expect(comm).to receive(:execute).with(/mkdir -p .*to'/)
|
|
end
|
|
|
|
context "when type is directory" do
|
|
before { opts[:type] = :directory }
|
|
|
|
it "should create destination directory" do
|
|
expect(comm).to receive(:execute).with(/mkdir -p .*destination'/)
|
|
end
|
|
end
|
|
end
|
|
end
|