Merge pull request #19010 from Homebrew/livecheck/xorg-handle-mesa-urls

Xorg: Handle archive.mesa3d.org URLs
This commit is contained in:
Mike McQuaid 2024-12-30 12:40:03 +00:00 committed by GitHub
commit 5013c44adf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 12 deletions

View File

@ -14,6 +14,7 @@ module Homebrew
# * `https://www.x.org/archive/individual/lib/libexample-1.2.3.tar.bz2`
# * `https://ftp.x.org/archive/individual/lib/libexample-1.2.3.tar.bz2`
# * `https://www.x.org/pub/individual/doc/example-1.2.3.tar.gz`
# * `https://xorg.freedesktop.org/archive/individual/util/example-1.2.3.tar.xz`
#
# The notable differences between URLs are as follows:
#
@ -50,8 +51,10 @@ module Homebrew
# The `Regexp` used to determine if the strategy applies to the URL.
URL_MATCH_REGEX = %r{
^https?://(?:[^/]+?\.)* # Scheme and any leading subdomains
(?:x\.org/(?:[^/]+/)*individual/(?:[^/]+/)*#{MODULE_REGEX.source.strip}
|freedesktop\.org/(?:archive|dist|software)/(?:[^/]+/)*#{MODULE_REGEX.source.strip})
(?:x\.org/(?:[^/]+/)*individual
|freedesktop\.org/(?:archive|dist|software)
|archive\.mesa3d\.org)
/(?:[^/]+/)*#{MODULE_REGEX.source.strip}
}ix
# Used to cache page content, so we don't fetch the same pages

View File

@ -7,37 +7,47 @@ RSpec.describe Homebrew::Livecheck::Strategy::Xorg do
let(:xorg_urls) do
{
app: "https://www.x.org/archive/individual/app/abc-1.2.3.tar.bz2",
font: "https://www.x.org/archive/individual/font/abc-1.2.3.tar.bz2",
lib: "https://www.x.org/archive/individual/lib/libabc-1.2.3.tar.bz2",
ftp_lib: "https://ftp.x.org/archive/individual/lib/libabc-1.2.3.tar.bz2",
pub_doc: "https://www.x.org/pub/individual/doc/abc-1.2.3.tar.bz2",
app: "https://www.x.org/archive/individual/app/abc-1.2.3.tar.bz2",
font: "https://www.x.org/archive/individual/font/abc-1.2.3.tar.bz2",
lib: "https://www.x.org/archive/individual/lib/libabc-1.2.3.tar.bz2",
ftp_lib: "https://ftp.x.org/archive/individual/lib/libabc-1.2.3.tar.bz2",
pub_doc: "https://www.x.org/pub/individual/doc/abc-1.2.3.tar.bz2",
freedesktop: "https://xorg.freedesktop.org/archive/individual/util/abc-1.2.3.tar.xz",
mesa: "https://archive.mesa3d.org/mesa-1.2.3.tar.xz",
}
end
let(:non_xorg_url) { "https://brew.sh/test" }
let(:generated) do
{
app: {
app: {
url: "https://www.x.org/archive/individual/app/",
regex: /href=.*?abc[._-]v?(\d+(?:\.\d+)+)\.t/i,
},
font: {
font: {
url: "https://www.x.org/archive/individual/font/",
regex: /href=.*?abc[._-]v?(\d+(?:\.\d+)+)\.t/i,
},
lib: {
lib: {
url: "https://www.x.org/archive/individual/lib/",
regex: /href=.*?libabc[._-]v?(\d+(?:\.\d+)+)\.t/i,
},
ftp_lib: {
ftp_lib: {
url: "https://ftp.x.org/archive/individual/lib/",
regex: /href=.*?libabc[._-]v?(\d+(?:\.\d+)+)\.t/i,
},
pub_doc: {
pub_doc: {
url: "https://www.x.org/archive/individual/doc/",
regex: /href=.*?abc[._-]v?(\d+(?:\.\d+)+)\.t/i,
},
freedesktop: {
url: "https://xorg.freedesktop.org/archive/individual/util/",
regex: /href=.*?abc[._-]v?(\d+(?:\.\d+)+)\.t/i,
},
mesa: {
url: "https://archive.mesa3d.org/",
regex: /href=.*?mesa[._-]v?(\d+(?:\.\d+)+)\.t/i,
},
}
end
@ -48,6 +58,8 @@ RSpec.describe Homebrew::Livecheck::Strategy::Xorg do
expect(xorg.match?(xorg_urls[:lib])).to be true
expect(xorg.match?(xorg_urls[:ftp_lib])).to be true
expect(xorg.match?(xorg_urls[:pub_doc])).to be true
expect(xorg.match?(xorg_urls[:freedesktop])).to be true
expect(xorg.match?(xorg_urls[:mesa])).to be true
end
it "returns false for a non-X.Org URL" do
@ -62,6 +74,8 @@ RSpec.describe Homebrew::Livecheck::Strategy::Xorg do
expect(xorg.generate_input_values(xorg_urls[:lib])).to eq(generated[:lib])
expect(xorg.generate_input_values(xorg_urls[:ftp_lib])).to eq(generated[:ftp_lib])
expect(xorg.generate_input_values(xorg_urls[:pub_doc])).to eq(generated[:pub_doc])
expect(xorg.generate_input_values(xorg_urls[:freedesktop])).to eq(generated[:freedesktop])
expect(xorg.generate_input_values(xorg_urls[:mesa])).to eq(generated[:mesa])
end
it "returns an empty hash for a non-X.org URL" do