brew/Library/Homebrew/test/cask/quarantine_spec.rb

252 lines
7.4 KiB
Ruby
Raw Normal View History

2020-10-10 14:16:11 +02:00
# typed: false
# frozen_string_literal: true
2020-08-09 01:34:07 +02:00
require "cask/cmd/audit"
require "cask/cmd/fetch"
require "cask/cmd/install"
require "cask/cask_loader"
require "cask/download"
require "cask/quarantine"
2018-09-06 08:29:14 +02:00
describe Cask::Quarantine, :cask do
matcher :be_quarantined do
match do |path|
expect(
described_class.detect(path),
).to be true
end
end
describe "by default" do
it "quarantines a nice fresh Cask" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("local-transmission")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("local-transmission"))
2019-02-02 17:11:37 +01:00
expect(cask).to be_installed
expect(cask.config.appdir.join("Transmission.app")).to be_quarantined
end
it "quarantines Cask fetches" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Fetch.run("local-transmission")
local_transmission = Cask::CaskLoader.load(cask_path("local-transmission"))
2020-11-19 18:12:16 +01:00
cached_location = Cask::Download.new(local_transmission).fetch
expect(cached_location).to be_quarantined
end
it "quarantines Cask audits" do
expect do
Cask::Cmd::Audit.run("local-transmission", "--download")
end.to not_raise_error
.and output(/audit for local-transmission: passed/).to_stdout
.and not_to_output.to_stderr
2018-09-06 08:29:14 +02:00
local_transmission = Cask::CaskLoader.load(cask_path("local-transmission"))
2020-11-19 18:12:16 +01:00
cached_location = Cask::Download.new(local_transmission).fetch
expect(cached_location).to be_quarantined
end
it "quarantines Cask installs even if the fetch was not" do
Cask::Cmd::Fetch.run("local-transmission", "--no-quarantine")
Cask::Cmd::Install.run("local-transmission")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("local-transmission"))
expect(cask).to be_installed
2019-02-02 17:11:37 +01:00
expect(cask.config.appdir.join("Transmission.app")).to be_quarantined
end
it "quarantines dmg-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-dmg")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-dmg"))
expect(cask).to be_installed
2019-02-02 17:11:37 +01:00
expect(cask.config.appdir.join("container")).to be_quarantined
end
it "quarantines tar-gz-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-tar-gz")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-tar-gz"))
2019-02-02 17:11:37 +01:00
expect(cask).to be_installed
expect(cask.config.appdir.join("container")).to be_quarantined
end
it "quarantines xar-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-xar")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-xar"))
2019-02-02 17:11:37 +01:00
expect(cask).to be_installed
expect(cask.config.appdir.join("container")).to be_quarantined
end
it "quarantines pure bzip2-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-bzip2")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-bzip2"))
expect(cask).to be_installed
2019-02-02 17:11:37 +01:00
expect(cask.config.appdir.join("container")).to be_quarantined
end
it "quarantines pure gzip-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-gzip")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-gzip"))
expect(cask).to be_installed
2019-02-02 17:11:37 +01:00
expect(cask.config.appdir.join("container")).to be_quarantined
end
it "quarantines the pkg in naked-pkg-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-pkg")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-pkg"))
2019-02-02 17:11:37 +01:00
expect(cask).to be_installed
2019-02-02 17:11:37 +01:00
expect(cask.staged_path/"container.pkg").to be_quarantined
end
it "quarantines a nested container" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("nested-app")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("nested-app"))
expect(cask).to be_installed
2019-02-02 17:11:37 +01:00
expect(cask.config.appdir.join("MyNestedApp.app")).to be_quarantined
end
end
describe "when disabled" do
it "does not quarantine even a nice, fresh Cask" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("local-transmission", "--no-quarantine")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("local-transmission"))
2019-02-02 17:11:37 +01:00
expect(cask).to be_installed
expect(cask.config.appdir.join("Transmission.app")).not_to be_quarantined
end
it "does not quarantine Cask fetches" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Fetch.run("local-transmission", "--no-quarantine")
local_transmission = Cask::CaskLoader.load(cask_path("local-transmission"))
2020-11-19 18:12:16 +01:00
cached_location = Cask::Download.new(local_transmission).fetch
2018-09-20 09:07:56 +01:00
expect(cached_location).not_to be_quarantined
end
it "does not quarantine Cask audits" do
expect do
Cask::Cmd::Audit.run("local-transmission", "--download", "--no-quarantine")
end.to not_raise_error
.and output(/audit for local-transmission: passed/).to_stdout
.and not_to_output.to_stderr
local_transmission = Cask::CaskLoader.load(cask_path("local-transmission"))
2020-11-19 18:12:16 +01:00
cached_location = Cask::Download.new(local_transmission).fetch
2018-09-20 09:07:56 +01:00
expect(cached_location).not_to be_quarantined
end
it "does not quarantine Cask installs even if the fetch was" do
Cask::Cmd::Fetch.run("local-transmission")
Cask::Cmd::Install.run("local-transmission", "--no-quarantine")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("local-transmission"))
2019-02-02 17:11:37 +01:00
expect(cask).to be_installed
expect(cask.config.appdir.join("Transmission.app")).not_to be_quarantined
end
it "does not quarantine dmg-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-dmg", "--no-quarantine")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-dmg"))
2019-02-02 17:11:37 +01:00
expect(cask).to be_installed
expect(cask.config.appdir.join("container")).not_to be_quarantined
end
it "does not quarantine tar-gz-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-tar-gz", "--no-quarantine")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-tar-gz"))
2019-02-02 17:11:37 +01:00
expect(cask).to be_installed
expect(cask.config.appdir.join("container")).not_to be_quarantined
end
it "does not quarantine xar-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-xar", "--no-quarantine")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-xar"))
expect(cask).to be_installed
2019-02-02 17:11:37 +01:00
expect(cask.config.appdir.join("container")).not_to be_quarantined
end
it "does not quarantine pure bzip2-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-bzip2", "--no-quarantine")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-bzip2"))
expect(cask).to be_installed
2019-02-02 17:11:37 +01:00
expect(cask.config.appdir.join("container")).not_to be_quarantined
end
it "does not quarantine pure gzip-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-gzip", "--no-quarantine")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("container-gzip"))
expect(cask).to be_installed
2019-02-02 17:11:37 +01:00
expect(cask.config.appdir.join("container")).not_to be_quarantined
end
it "does not quarantine the pkg in naked-pkg-based Casks" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("container-pkg", "--no-quarantine")
2018-09-06 08:29:14 +02:00
naked_pkg = Cask::CaskLoader.load(cask_path("container-pkg"))
expect(naked_pkg).to be_installed
expect(
2018-09-06 08:29:14 +02:00
Cask::Caskroom.path.join("container-pkg", naked_pkg.version, "container.pkg"),
2018-09-20 09:07:56 +01:00
).not_to be_quarantined
end
it "does not quarantine a nested container" do
2018-09-06 08:29:14 +02:00
Cask::Cmd::Install.run("nested-app", "--no-quarantine")
2019-02-02 17:11:37 +01:00
cask = Cask::CaskLoader.load(cask_path("nested-app"))
expect(cask).to be_installed
2019-02-02 17:11:37 +01:00
expect(cask.config.appdir.join("MyNestedApp.app")).not_to be_quarantined
end
end
end