mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00

This PR removes all remaining unnecessary cache clearing in tests from the codebase since we now clear all cachable classes between tests making this functionally unnecessary. Original PR to automatically clear caches: - https://github.com/Homebrew/brew/pull/16746 I also moved the `Utils::Analytics` module to use cachable so that we don't have to clear caches specifically in tests anymore.
73 lines
2.0 KiB
Ruby
73 lines
2.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "api"
|
|
|
|
RSpec.describe Homebrew::API::Cask do
|
|
let(:cache_dir) { mktmpdir }
|
|
|
|
before do
|
|
stub_const("Homebrew::API::HOMEBREW_CACHE_API", cache_dir)
|
|
end
|
|
|
|
def mock_curl_download(stdout:)
|
|
allow(Utils::Curl).to receive(:curl_download) do |*_args, **kwargs|
|
|
kwargs[:to].write stdout
|
|
end
|
|
allow(Homebrew::API).to receive(:verify_and_parse_jws) do |json_data|
|
|
[true, json_data]
|
|
end
|
|
end
|
|
|
|
describe "::all_casks" do
|
|
let(:casks_json) do
|
|
<<~EOS
|
|
[{
|
|
"token": "foo",
|
|
"url": "https://brew.sh/foo"
|
|
}, {
|
|
"token": "bar",
|
|
"url": "https://brew.sh/bar"
|
|
}]
|
|
EOS
|
|
end
|
|
let(:casks_hash) do
|
|
{
|
|
"foo" => { "url" => "https://brew.sh/foo" },
|
|
"bar" => { "url" => "https://brew.sh/bar" },
|
|
}
|
|
end
|
|
|
|
it "returns the expected cask JSON list" do
|
|
mock_curl_download stdout: casks_json
|
|
casks_output = described_class.all_casks
|
|
expect(casks_output).to eq casks_hash
|
|
end
|
|
end
|
|
|
|
describe "::source_download", :needs_macos do
|
|
let(:cask) do
|
|
cask = Cask::CaskLoader::FromAPILoader.new(
|
|
"everything",
|
|
from_json: JSON.parse((TEST_FIXTURE_DIR/"cask/everything.json").read.strip),
|
|
).load(config: nil)
|
|
cask
|
|
end
|
|
|
|
before do
|
|
allow_any_instance_of(Homebrew::API::Download).to receive(:fetch)
|
|
allow_any_instance_of(Homebrew::API::Download).to receive(:symlink_location).and_return(
|
|
TEST_FIXTURE_DIR/"cask/Casks/everything.rb",
|
|
)
|
|
end
|
|
|
|
it "specifies the correct URL and sha256" do
|
|
expect(Homebrew::API::Download).to receive(:new).with(
|
|
"https://raw.githubusercontent.com/Homebrew/homebrew-cask/abcdef1234567890abcdef1234567890abcdef12/Casks/everything.rb",
|
|
Checksum.new("d8d0d6b2e5ff65388eccb82236fd3aa157b4a29bb043a1f72b97f0e9b70e8320"),
|
|
any_args,
|
|
).and_call_original
|
|
described_class.source_download(cask)
|
|
end
|
|
end
|
|
end
|