Add tests for CaskLoader::for.

This commit is contained in:
Markus Reiter 2024-02-06 19:56:09 +01:00
parent ed00dc0b95
commit 094761dcd9
No known key found for this signature in database
GPG Key ID: 245293B51702655B
3 changed files with 61 additions and 7 deletions

View File

@ -498,6 +498,7 @@ module Cask
$stderr.puts "#{$PROGRAM_NAME} (#{loader_class}): loading #{ref}" if debug? $stderr.puts "#{$PROGRAM_NAME} (#{loader_class}): loading #{ref}" if debug?
if [FromAPILoader, FromTapLoader].include?(loader_class) if [FromAPILoader, FromTapLoader].include?(loader_class)
ref = "#{CoreCaskTap.instance}/#{ref}" if CoreCaskTap.instance.cask_renames.key?(ref)
token, tap, = tap_cask_token_type(ref, warn: warn) token, tap, = tap_cask_token_type(ref, warn: warn)
loader_class = T.cast(loader_class, T.any(T.class_of(FromAPILoader), T.class_of(FromTapLoader))) loader_class = T.cast(loader_class, T.any(T.class_of(FromAPILoader), T.class_of(FromTapLoader)))
return loader_class.new("#{tap}/#{token}") return loader_class.new("#{tap}/#{token}")
@ -511,7 +512,6 @@ module Cask
return FromTapPathLoader.new(possible_tap_casks.first) return FromTapPathLoader.new(possible_tap_casks.first)
when 2..Float::INFINITY when 2..Float::INFINITY
loaders = possible_tap_casks.map(&FromTapPathLoader.method(:new)) loaders = possible_tap_casks.map(&FromTapPathLoader.method(:new))
raise TapCaskAmbiguityError.new(ref, loaders) raise TapCaskAmbiguityError.new(ref, loaders)
end end

View File

@ -26,9 +26,7 @@ describe Cask::CaskLoader::FromAPILoader, :cask do
context "when not using the API" do context "when not using the API" do
before do before do
allow(Homebrew::EnvConfig) ENV["HOMEBREW_NO_INSTALL_FROM_API"] = "1"
.to receive(:no_install_from_api?)
.and_return(true)
end end
it "returns false" do it "returns false" do
@ -38,9 +36,7 @@ describe Cask::CaskLoader::FromAPILoader, :cask do
context "when using the API" do context "when using the API" do
before do before do
allow(Homebrew::EnvConfig) ENV.delete("HOMEBREW_NO_INSTALL_FROM_API")
.to receive(:no_install_from_api?)
.and_return(false)
end end
it "returns true for valid token" do it "returns true for valid token" do

View File

@ -0,0 +1,58 @@
# frozen_string_literal: true
describe Cask::CaskLoader, :cask do
describe "::for" do
let(:tap) { CoreCaskTap.instance }
context "when a cask is renamed" do
let(:old_token) { "version-newest" }
let(:new_token) { "version-latest" }
let(:api_casks) do
[old_token, new_token].to_h do |token|
hash = described_class.load(new_token).to_hash_with_variations
json = JSON.pretty_generate(hash)
cask_json = JSON.parse(json)
[token, cask_json.except("token")]
end
end
let(:cask_renames) do
{ old_token => new_token }
end
before do
allow(Homebrew::API::Cask)
.to receive(:all_casks)
.and_return(api_casks)
allow(tap).to receive(:cask_renames)
.and_return(cask_renames)
end
context "when not using the API" do
before do
ENV["HOMEBREW_NO_INSTALL_FROM_API"] = "1"
end
it "warns" do
expect do
expect(described_class.for("version-newest")).to be_a Cask::CaskLoader::FromTapPathLoader
end.to output(/version-newest was renamed to version-latest/).to_stderr
end
end
context "when using the API" do
before do
ENV.delete("HOMEBREW_NO_INSTALL_FROM_API")
end
it "warns" do
expect do
expect(described_class.for("version-newest")).to be_a Cask::CaskLoader::FromAPILoader
end.to output(/version-newest was renamed to version-latest/).to_stderr
end
end
end
end
end