brew/Library/Homebrew/test/cask/artifact/alt_target_spec.rb
Claudia 5be80a78f6
Use Homebrew-controlled domain for Cask dummy URLs
In a number of Cask specs, the value of the `homepage` stanza is currently set
to https://example.com. As of 2018-11-28, the TLS certificate served by
example.com seems to be expired, possibly due to an oversight on ICANN’s side.

While the certificate is certainly going to be renewed soon, it would be
desirable for Homebrew’s test result to be less dependent on ICANN’s actions.
This commit changes the homepages of all test Casks to http://brew.sh, whose
domain and TLS certificate are both controlled by Homebrew.
2018-11-28 20:51:55 +01:00

76 lines
2.4 KiB
Ruby

describe Cask::Artifact::App, :cask do
describe "activate to alternate target" do
let(:cask) { Cask::CaskLoader.load(cask_path("with-alt-target")) }
let(:install_phase) {
lambda do
cask.artifacts.select { |a| a.is_a?(described_class) }.each do |artifact|
artifact.install_phase(command: NeverSudoSystemCommand, force: false)
end
end
}
let(:source_path) { cask.staged_path.join("Caffeine.app") }
let(:target_path) { Cask::Config.global.appdir.join("AnotherName.app") }
before do
InstallHelper.install_without_artifacts(cask)
end
it "installs the given apps using the proper target directory" do
expect(source_path).to be_a_directory
expect(target_path).not_to exist
install_phase.call
expect(target_path).to be_a_directory
expect(source_path).not_to exist
end
describe "when app is in a subdirectory" do
let(:cask) {
Cask::Cask.new("subdir") do
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
homepage "https://brew.sh/local-caffeine"
version "1.2.3"
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"
app "subdir/Caffeine.app", target: "AnotherName.app"
end
}
it "installs the given apps using the proper target directory" do
appsubdir = cask.staged_path.join("subdir").tap(&:mkpath)
FileUtils.mv(source_path, appsubdir)
install_phase.call
expect(target_path).to be_a_directory
expect(appsubdir.join("Caffeine.app")).not_to exist
end
end
it "only uses apps when they are specified" do
staged_app_copy = source_path.sub("Caffeine.app", "Caffeine Deluxe.app")
FileUtils.cp_r source_path, staged_app_copy
install_phase.call
expect(target_path).to be_a_directory
expect(source_path).not_to exist
expect(Cask::Config.global.appdir.join("Caffeine Deluxe.app")).not_to exist
expect(cask.staged_path.join("Caffeine Deluxe.app")).to be_a_directory
end
it "avoids clobbering an existing app by moving over it" do
target_path.mkpath
expect(install_phase).to raise_error(Cask::CaskError, "It seems there is already an App at '#{target_path}'.")
expect(source_path).to be_a_directory
expect(target_path).to be_a_directory
expect(File.identical?(source_path, target_path)).to be false
end
end
end