Skip to content

Commit

Permalink
cask internal json v3: add + update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
apainintheneck committed Mar 16, 2024
1 parent 6cf84ed commit e1646a7
Show file tree
Hide file tree
Showing 8 changed files with 158 additions and 28 deletions.
1 change: 0 additions & 1 deletion Library/Homebrew/cask/cask.rb
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,6 @@ def to_h
# @private
def to_internal_api_hash
api_hash = {
"token" => token,
"name" => name,
"desc" => desc,
"homepage" => homepage,
Expand Down
34 changes: 17 additions & 17 deletions Library/Homebrew/test/api/internal_tap_json/cask_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
"ankerslicer" => "ankermake",
"autodesk-fusion360" => "autodesk-fusion",
"betterdummy" => "betterdisplay",
"julia-lang" => "julia",
"factor-lang" => "factor",
"smlnj-lang" => "smlnj",
})
end
Expand All @@ -67,16 +67,16 @@
end

context "when loading formulae" do
let(:julia_metadata) do
let(:factor_metadata) do
{
"token" => "julia",
"name" => %w[Julia],
"desc" => "Programming language for technical computing",
"homepage" => "https://julialang.org/",
"version" => "1.10.2",
"ruby_source_path" => "Casks/j/julia.rb",
"token" => "factor",
"name" => %w[Factor],
"desc" => "Programming language",
"homepage" => "https://factorcode.org/",
"version" => "0.99",
"ruby_source_path" => "Casks/f/factor.rb",
"ruby_source_checksum" => {
"sha256" => "7fbf6c98c0a3b75ca8636c141f38512a899565a58518fc714e5f73c210e24449",
"sha256" => "a0dabe24c67269e5310b47639cf32e74f49959ba1be454b2c072805b1f04c7e5",
},
}
end
Expand All @@ -95,16 +95,16 @@
}
end

it "loads julia" do
julia = Cask::CaskLoader.load("julia")
expect(julia.to_h).to include(julia_metadata)
expect(julia.sha256).to eq("26b822154ae05f2c2b66d2b1538e1df86f1bb39967cbc9380a7f2271f5a677ce")
expect(julia.url.to_s).to eq("https://julialang-s3.julialang.org/bin/mac/x64/1.10/julia-1.10.2-mac64.dmg")
it "loads factor" do
factor = Cask::CaskLoader.load("factor")
expect(factor.to_h).to include(factor_metadata)
expect(factor.sha256).to eq("8a7968b873b5e87c83b5d0f5ddb4d3d76a2460f5e5c14edac6b18fe5957bd7d6")
expect(factor.url.to_s).to eq("https://downloads.factorcode.org/releases/0.99/factor-macosx-x86-64-0.99.dmg")
end

it "loads julia from rename" do
julia = Cask::CaskLoader.load("julia-lang")
expect(julia.to_h).to include(**julia_metadata)
it "loads factor from rename" do
factor = Cask::CaskLoader.load("factor-lang")
expect(factor.to_h).to include(**factor_metadata)
end

it "loads smlnj" do
Expand Down
16 changes: 6 additions & 10 deletions Library/Homebrew/test/api/internal_tap_json/formula_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
cp_r(TEST_FIXTURE_DIR/"internal_tap_json/homebrew-core", Tap::TAP_DIRECTORY/"homebrew")

# NOTE: Symlinks can't be copied recursively so we create them manually here.
(Tap::TAP_DIRECTORY/"homebrew/homebrew-core").tap do |core_tap|
mkdir(core_tap/"Aliases")
ln_s(core_tap/"Formula/f/fennel.rb", core_tap/"Aliases/fennel-lang")
ln_s(core_tap/"Formula/p/ponyc.rb", core_tap/"Aliases/ponyc-lang")
CoreTap.instance.path.tap do |core_tap_path|
mkdir(core_tap_path/"Aliases")
ln_s(core_tap_path/"Formula/f/fennel.rb", core_tap_path/"Aliases/fennel-lang")
ln_s(core_tap_path/"Formula/p/ponyc.rb", core_tap_path/"Aliases/ponyc-lang")
end
end

Expand All @@ -37,19 +37,15 @@
# tap so `CoreCaskTap.tap_migrations` gets called and tries to
# fetch stuff from the API. This just avoids errors.
allow(Homebrew::API).to receive(:fetch_json_api_file)
.with("cask_tap_migrations.jws.json", anything)
.and_return([{}, false])
.with("internal/v3/homebrew-cask.jws.json")
.and_return([{ "tap_migrations" => {}, "casks" => {} }, false])

# To allow `formula_names.txt` to be written to the cache.
(HOMEBREW_CACHE/"api").mkdir

Homebrew::API::Formula.clear_cache
end

after do
Homebrew::API::Formula.clear_cache
end

it "loads tap aliases" do
expect(CoreTap.instance.alias_table).to eq({
"fennel-lang" => "fennel",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
{
"tap_git_head": "b26c1e550a8b7eed2dcd5306ea8f3da3848258b3",
"renames": {
"ankerslicer": "ankermake",
"autodesk-fusion360": "autodesk-fusion",
"betterdummy": "betterdisplay",
"factor-lang": "factor",
"smlnj-lang": "smlnj"
},
"tap_migrations": {
"azure-cli": "homebrew/core",
"basex": "homebrew/core",
"borgbackup": "homebrew/core",
"chronograf": "homebrew/core",
"consul": "homebrew/core"
},
"casks": {
"factor": {
"name": [
"Factor"
],
"desc": "Programming language",
"homepage": "https://factorcode.org/",
"url": "https://downloads.factorcode.org/releases/0.99/factor-macosx-x86-64-0.99.dmg",
"version": "0.99",
"sha256": "8a7968b873b5e87c83b5d0f5ddb4d3d76a2460f5e5c14edac6b18fe5957bd7d6",
"artifacts": [
{
"suite": [
"factor"
]
}
],
"ruby_source_path": "Casks/f/factor.rb",
"ruby_source_sha256": "a0dabe24c67269e5310b47639cf32e74f49959ba1be454b2c072805b1f04c7e5",
"caveats": "To use factor, you may need to add the $APPDIR/factor directory\nto your PATH environment variable, e.g. (for Bash shell):\n export PATH=$APPDIR/factor:\"$PATH\"\n"
},
"smlnj": {
"name": [
"Standard ML of New Jersey"
],
"desc": "Compiler for the Standard ML '97 programming language",
"homepage": "https://www.smlnj.org/",
"url": "http://smlnj.cs.uchicago.edu/dist/working/110.99.4/smlnj-amd64-110.99.4.pkg",
"version": "110.99.4",
"sha256": "2bf858017b8ba43a70b30527290ed9fbbc81d9eaac1abeba62469d95392019a3",
"artifacts": [
{
"uninstall": [
{
"pkgutil": "org.smlnj.amd64.pkg"
}
]
},
{
"pkg": [
"smlnj-amd64-110.99.4.pkg"
]
},
{
"zap": [
{
"delete": "/usr/local/smlnj"
}
]
}
],
"ruby_source_path": "Casks/s/smlnj.rb",
"ruby_source_sha256": "d47f46a88248272314a501741460d42a8c731030912a83ef58d3c7fd1e90034d",
"url_specs": {
"verified": "smlnj.cs.uchicago.edu/"
},
"caveats": "To use smlnj, you may need to add the /usr/local/smlnj/bin directory\nto your PATH environment variable, e.g. (for Bash shell):\n export PATH=/usr/local/smlnj/bin:\"$PATH\"\n"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
cask "factor" do
version "0.99"
sha256 "8a7968b873b5e87c83b5d0f5ddb4d3d76a2460f5e5c14edac6b18fe5957bd7d6"

url "https://downloads.factorcode.org/releases/#{version}/factor-macosx-x86-64-#{version}.dmg"
name "Factor"
desc "Programming language"
homepage "https://factorcode.org/"

livecheck do
url "https://downloads.factorcode.org/releases/"
regex(%r{href=.*?(\d+(?:\.\d+)+)/}i)
end

suite "factor"

caveats do
path_environment_variable "#{appdir}/factor"
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
cask "smlnj" do
version "110.99.4"
sha256 "2bf858017b8ba43a70b30527290ed9fbbc81d9eaac1abeba62469d95392019a3"

url "http://smlnj.cs.uchicago.edu/dist/working/#{version}/smlnj-amd64-#{version}.pkg",
verified: "smlnj.cs.uchicago.edu/"
name "Standard ML of New Jersey"
desc "Compiler for the Standard ML '97 programming language"
homepage "https://www.smlnj.org/"

livecheck do
url :homepage
regex(%r{href=.*?/smlnj-amd64-(\d+(?:\.\d+)*)\.pkg}i)
end

pkg "smlnj-amd64-#{version}.pkg"

uninstall pkgutil: "org.smlnj.amd64.pkg"

zap delete: "/usr/local/smlnj"

caveats do
path_environment_variable "/usr/local/smlnj/bin"
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"ankerslicer": "ankermake",
"autodesk-fusion360": "autodesk-fusion",
"betterdummy": "betterdisplay",
"factor-lang": "factor",
"smlnj-lang": "smlnj"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"azure-cli": "homebrew/core",
"basex": "homebrew/core",
"borgbackup": "homebrew/core",
"chronograf": "homebrew/core",
"consul": "homebrew/core"
}

0 comments on commit e1646a7

Please sign in to comment.