Add spec for nested directories.
This commit is contained in:
parent
95b0b198a5
commit
85f76e312a
@ -17,23 +17,44 @@ end
|
|||||||
|
|
||||||
describe UnpackStrategy do
|
describe UnpackStrategy do
|
||||||
describe "#extract_nestedly" do
|
describe "#extract_nestedly" do
|
||||||
let(:file_name) { "file" }
|
subject(:strategy) { described_class.detect(path) }
|
||||||
let(:nested_archive) {
|
|
||||||
dir = mktmpdir
|
|
||||||
|
|
||||||
(dir/"file").write "This file was inside a GZIP inside a BZIP2."
|
|
||||||
system "gzip", dir.children.first
|
|
||||||
system "bzip2", dir.children.first
|
|
||||||
|
|
||||||
dir.children.first
|
|
||||||
}
|
|
||||||
let(:unpack_dir) { mktmpdir }
|
let(:unpack_dir) { mktmpdir }
|
||||||
subject(:strategy) { described_class.detect(nested_archive) }
|
|
||||||
|
|
||||||
it "can extract nested archives" do
|
context "when extracting a GZIP nested in a BZIP2" do
|
||||||
strategy.extract_nestedly(to: unpack_dir)
|
let(:file_name) { "file" }
|
||||||
|
let(:path) {
|
||||||
|
dir = mktmpdir
|
||||||
|
|
||||||
expect(File.read(unpack_dir/file_name)).to eq("This file was inside a GZIP inside a BZIP2.")
|
(dir/"file").write "This file was inside a GZIP inside a BZIP2."
|
||||||
|
system "gzip", dir.children.first
|
||||||
|
system "bzip2", dir.children.first
|
||||||
|
|
||||||
|
dir.children.first
|
||||||
|
}
|
||||||
|
|
||||||
|
it "can extract nested archives" do
|
||||||
|
strategy.extract_nestedly(to: unpack_dir)
|
||||||
|
|
||||||
|
expect(File.read(unpack_dir/file_name)).to eq("This file was inside a GZIP inside a BZIP2.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when extracting a directory with nested directories" do
|
||||||
|
let(:directories) { "A/B/C" }
|
||||||
|
let(:path) {
|
||||||
|
(mktmpdir/"file.tar").tap do |path|
|
||||||
|
mktmpdir do |dir|
|
||||||
|
(dir/directories).mkpath
|
||||||
|
system "tar", "-c", "-f", path, "-C", dir, "A/"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
it "does not recurse into nested directories" do
|
||||||
|
strategy.extract_nestedly(to: unpack_dir)
|
||||||
|
expect(Pathname.glob(unpack_dir/"**/*")).to include unpack_dir/directories
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user