Add baseline test for Cask#to_h
Also, added a test for loading JSON files in the cask loader.
This commit is contained in:
parent
c19017c6bd
commit
9087afba74
@ -41,6 +41,12 @@ describe Cask::Cask, :cask do
|
||||
expect(c.token).to eq("local-caffeine")
|
||||
end
|
||||
|
||||
it "returns an instance of the Cask from a JSON file" do
|
||||
c = Cask::CaskLoader.load("#{tap_path}/caffeine.json")
|
||||
expect(c).to be_a(described_class)
|
||||
expect(c.token).to eq("caffeine")
|
||||
end
|
||||
|
||||
it "returns an instance of the Cask from a URL" do
|
||||
c = Cask::CaskLoader.load("file://#{tap_path}/Casks/local-caffeine.rb")
|
||||
expect(c).to be_a(described_class)
|
||||
@ -49,9 +55,7 @@ describe Cask::Cask, :cask do
|
||||
|
||||
it "raises an error when failing to download a Cask from a URL" do
|
||||
expect {
|
||||
url = "file://#{tap_path}/Casks/notacask.rb"
|
||||
|
||||
Cask::CaskLoader.load(url)
|
||||
Cask::CaskLoader.load("file://#{tap_path}/Casks/notacask.rb")
|
||||
}.to raise_error(Cask::CaskUnavailableError)
|
||||
end
|
||||
|
||||
@ -212,6 +216,33 @@ describe Cask::Cask, :cask do
|
||||
end
|
||||
end
|
||||
|
||||
describe "#to_h" do
|
||||
let(:json_file) { "#{TEST_FIXTURE_DIR}/cask/everything.json" }
|
||||
let(:expected_json) { File.read(json_file).strip }
|
||||
|
||||
context "when loaded from cask file" do
|
||||
it "returns expected hash" do
|
||||
hash = Cask::CaskLoader.load("everything").to_h
|
||||
|
||||
expect(hash).to be_a(Hash)
|
||||
expect(JSON.pretty_generate(hash)).to eq(expected_json)
|
||||
end
|
||||
end
|
||||
|
||||
context "when loaded from json file" do
|
||||
it "returns expected hash" do
|
||||
expect(Homebrew::API::Cask).not_to receive(:fetch_source)
|
||||
hash = Cask::CaskLoader::FromAPILoader
|
||||
.new("everything", from_json: JSON.parse(expected_json))
|
||||
.load(config: nil)
|
||||
.to_h
|
||||
|
||||
expect(hash).to be_a(Hash)
|
||||
expect(JSON.pretty_generate(hash)).to eq(expected_json)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#to_hash_with_variations" do
|
||||
let!(:original_macos_version) { MacOS.full_version.to_s }
|
||||
let(:expected_versions_variations) {
|
||||
|
||||
@ -0,0 +1,48 @@
|
||||
# Used to test cask hash generation.
|
||||
cask "everything" do
|
||||
version "1.2.3"
|
||||
|
||||
language "en", default: true do
|
||||
sha256 "c64c05bdc0be845505d6e55e69e696a7f50d40846e76155f0c85d5ff5e7bbb84"
|
||||
"en-US"
|
||||
end
|
||||
language "eo" do
|
||||
sha256 "e8ffa07370a7fb7e1696b04c269e01d3459725965a32facdd54629a95d148908"
|
||||
"eo"
|
||||
end
|
||||
|
||||
url "https://cachefly.everything.app/releases/Everything_#{version}.zip",
|
||||
user_agent: :fake,
|
||||
cookies: { "ALL" => "1234" }
|
||||
name "Everything"
|
||||
desc "Little bit of everything"
|
||||
homepage "https://www.everything.app/"
|
||||
|
||||
auto_updates true
|
||||
conflicts_with formula: "nothing"
|
||||
depends_on cask: "something"
|
||||
container type: :naked
|
||||
|
||||
app "Everything.app"
|
||||
installer script: {
|
||||
executable: "~/just/another/path/install.sh",
|
||||
args: ["--mode=silent"],
|
||||
sudo: true,
|
||||
print_stderr: false,
|
||||
}
|
||||
|
||||
uninstall launchctl: "com.every.thing.agent",
|
||||
delete: ["/Library/EverythingHelperTools"],
|
||||
kext: "com.every.thing.driver",
|
||||
signal: [
|
||||
["TERM", "com.every.thing.controller#{version.major}"],
|
||||
["TERM", "com.every.thing.bin"],
|
||||
]
|
||||
|
||||
zap trash: [
|
||||
"~/.everything",
|
||||
"~/Library/Everything",
|
||||
]
|
||||
|
||||
caveats "Installing everything might take a while..."
|
||||
end
|
||||
42
Library/Homebrew/test/support/fixtures/cask/caffeine.json
Normal file
42
Library/Homebrew/test/support/fixtures/cask/caffeine.json
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
"token": "caffeine",
|
||||
"full_token": "caffeine",
|
||||
"tap": null,
|
||||
"name": [
|
||||
|
||||
],
|
||||
"desc": null,
|
||||
"homepage": "https://brew.sh/",
|
||||
"url": "https://www.example.com/cask/caffeine.zip",
|
||||
"appcast": null,
|
||||
"version": "1.2.3",
|
||||
"versions": {
|
||||
},
|
||||
"installed": null,
|
||||
"outdated": false,
|
||||
"sha256": "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94",
|
||||
"artifacts": [
|
||||
{
|
||||
"app": [
|
||||
"Caffeine.app"
|
||||
]
|
||||
},
|
||||
{
|
||||
"zap": [
|
||||
{
|
||||
"trash": "/$HOME/support/fixtures/cask/caffeine/org.example.caffeine.plist"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"caveats": null,
|
||||
"depends_on": {
|
||||
},
|
||||
"conflicts_with": null,
|
||||
"container": null,
|
||||
"auto_updates": null,
|
||||
"tap_git_head": null,
|
||||
"languages": [
|
||||
|
||||
]
|
||||
}
|
||||
99
Library/Homebrew/test/support/fixtures/cask/everything.json
Normal file
99
Library/Homebrew/test/support/fixtures/cask/everything.json
Normal file
@ -0,0 +1,99 @@
|
||||
{
|
||||
"token": "everything",
|
||||
"full_token": "everything",
|
||||
"tap": "homebrew/cask",
|
||||
"name": [
|
||||
"Everything"
|
||||
],
|
||||
"desc": "Little bit of everything",
|
||||
"homepage": "https://www.everything.app/",
|
||||
"url": "https://cachefly.everything.app/releases/Everything_1.2.3.zip",
|
||||
"url_specs": {
|
||||
"cookies": {
|
||||
"ALL": "1234"
|
||||
},
|
||||
"user_agent": ":fake"
|
||||
},
|
||||
"appcast": null,
|
||||
"version": "1.2.3",
|
||||
"versions": {
|
||||
},
|
||||
"installed": null,
|
||||
"outdated": false,
|
||||
"sha256": "c64c05bdc0be845505d6e55e69e696a7f50d40846e76155f0c85d5ff5e7bbb84",
|
||||
"artifacts": [
|
||||
{
|
||||
"uninstall": [
|
||||
{
|
||||
"launchctl": "com.every.thing.agent",
|
||||
"delete": [
|
||||
"/Library/EverythingHelperTools"
|
||||
],
|
||||
"kext": "com.every.thing.driver",
|
||||
"signal": [
|
||||
[
|
||||
"TERM",
|
||||
"com.every.thing.controller1"
|
||||
],
|
||||
[
|
||||
"TERM",
|
||||
"com.every.thing.bin"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"installer": [
|
||||
{
|
||||
"script": {
|
||||
"executable": "~/just/another/path/install.sh",
|
||||
"args": [
|
||||
"--mode=silent"
|
||||
],
|
||||
"sudo": true,
|
||||
"print_stderr": false
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"app": [
|
||||
"Everything.app"
|
||||
]
|
||||
},
|
||||
{
|
||||
"zap": [
|
||||
{
|
||||
"trash": [
|
||||
"~/.everything",
|
||||
"~/Library/Everything"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"caveats": "Installing everything might take a while...\n\neverything requires a kernel extension to work.\nIf the installation fails, retry after you enable it in:\n System Preferences → Security & Privacy → General\n\nFor more information, refer to vendor documentation or this Apple Technical Note:\n https://developer.apple.com/library/content/technotes/tn2459/_index.html\n",
|
||||
"depends_on": {
|
||||
"cask": [
|
||||
"something"
|
||||
]
|
||||
},
|
||||
"conflicts_with": {
|
||||
"formula": [
|
||||
"nothing"
|
||||
]
|
||||
},
|
||||
"container": {
|
||||
"type": "naked"
|
||||
},
|
||||
"auto_updates": true,
|
||||
"tap_git_head": null,
|
||||
"languages": [
|
||||
"en",
|
||||
"eo"
|
||||
],
|
||||
"ruby_source_checksum": {
|
||||
"sha256": "b2707d1952f02c3fa566b7ad2a707a847a959d36f51d3dee642dbe5deec12f27"
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user