Add test for extracting unwritable files.

This commit is contained in:
Markus Reiter 2023-02-21 01:02:15 +01:00
parent 347bc4535f
commit fa2d917dec
No known key found for this signature in database
GPG Key ID: 245293B51702655B

View File

@ -28,10 +28,12 @@ describe UnpackStrategy do
context "when extracting a directory with nested directories" do context "when extracting a directory with nested directories" do
let(:directories) { "A/B/C" } let(:directories) { "A/B/C" }
let(:writable) { true }
let(:path) { let(:path) {
(mktmpdir/"file.tar").tap do |path| (mktmpdir/"file.tar").tap do |path|
mktmpdir do |dir| mktmpdir do |dir|
(dir/directories).mkpath (dir/directories).mkpath
FileUtils.chmod "-w", (dir/directories) unless writable
system "tar", "--create", "--file", path, "--directory", dir, "A/" system "tar", "--create", "--file", path, "--directory", dir, "A/"
end end
end end
@ -41,6 +43,17 @@ describe UnpackStrategy do
strategy.extract_nestedly(to: unpack_dir) strategy.extract_nestedly(to: unpack_dir)
expect(Pathname.glob(unpack_dir/"**/*")).to include unpack_dir/directories expect(Pathname.glob(unpack_dir/"**/*")).to include unpack_dir/directories
end end
context "which are not writable" do
let(:writable) { false }
it "makes them writable but not world-writable" do
strategy.extract_nestedly(to: unpack_dir)
expect(unpack_dir/directories).to be_writable
expect(unpack_dir/directories).not_to be_world_writable
end
end
end end
context "when extracting a nested archive" do context "when extracting a nested archive" do