diff --git a/Library/Homebrew/cask/audit.rb b/Library/Homebrew/cask/audit.rb index ffa47e7394..38c0271e1a 100644 --- a/Library/Homebrew/cask/audit.rb +++ b/Library/Homebrew/cask/audit.rb @@ -324,13 +324,18 @@ module Cask return if block_url_offline? odebug "Auditing URL format" - if bad_sourceforge_url? - add_error "SourceForge URL format incorrect. See #{Formatter.url(SOURCEFORGE_OSDN_REFERENCE_URL)}", - location: cask.url.location - elsif bad_osdn_url? - add_error "OSDN URL format incorrect. See #{Formatter.url(SOURCEFORGE_OSDN_REFERENCE_URL)}", - location: cask.url.location - end + return unless bad_sourceforge_url? + + add_error "SourceForge URL format incorrect. See #{Formatter.url(SOURCEFORGE_OSDN_REFERENCE_URL)}", + location: cask.url.location + end + + def audit_download_url_is_osdn + return unless cask.url + return if block_url_offline? + return unless bad_osdn_url? + + add_error "OSDN download urls are disabled.", location: cask.url.location, strict_only: true end VERIFIED_URL_REFERENCE_URL = "https://docs.brew.sh/Cask-Cookbook#when-url-and-homepage-domains-differ-add-verified" @@ -895,7 +900,7 @@ module Cask sig { returns(T::Boolean) } def bad_osdn_url? - bad_url_format?(/osd/, [%r{\Ahttps?://([^/]+.)?dl\.osdn\.jp/}]) + domain.match?(%r{^(?:\w+\.)*osdn\.jp(?=/|$)}) end # sig { returns(String) } diff --git a/Library/Homebrew/test/cask/audit_spec.rb b/Library/Homebrew/test/cask/audit_spec.rb index 72a330e61d..6da7326f7f 100644 --- a/Library/Homebrew/test/cask/audit_spec.rb +++ b/Library/Homebrew/test/cask/audit_spec.rb @@ -932,17 +932,21 @@ RSpec.describe Cask::Audit, :cask do it { is_expected.not_to error_with(message) } end + end - context "with incorrect OSDN URL format" do - let(:cask_token) { "osdn-incorrect-url-format" } + describe "disable OSDN download url" do + let(:only) { ["download_url_is_osdn"] } + let(:message) { /OSDN download urls are disabled./ } + let(:cask_token) { "osdn-urls" } - it { is_expected.to error_with(message) } + context "when --strict is not passed" do + it { is_expected.not_to error_with(message) } end - context "with correct OSDN URL format" do - let(:cask_token) { "osdn-correct-url-format" } + context "when --strict is passed" do + let(:strict) { true } - it { is_expected.not_to error_with(message) } + it { is_expected.to error_with(message) } end end diff --git a/Library/Homebrew/test/support/fixtures/cask/Casks/osdn-incorrect-url-format.rb b/Library/Homebrew/test/support/fixtures/cask/Casks/osdn-incorrect-url-format.rb deleted file mode 100644 index 10a36d10cc..0000000000 --- a/Library/Homebrew/test/support/fixtures/cask/Casks/osdn-incorrect-url-format.rb +++ /dev/null @@ -1,6 +0,0 @@ -cask "osdn-incorrect-url-format" do - version "1.2.3" - - url "https://osdn.jp/projects/something/files/Something-1.2.3.dmg/download" - homepage "https://osdn.jp/projects/something/" -end diff --git a/Library/Homebrew/test/support/fixtures/cask/Casks/osdn-correct-url-format.rb b/Library/Homebrew/test/support/fixtures/cask/Casks/osdn-urls.rb similarity index 80% rename from Library/Homebrew/test/support/fixtures/cask/Casks/osdn-correct-url-format.rb rename to Library/Homebrew/test/support/fixtures/cask/Casks/osdn-urls.rb index c80bdacf6d..569859db53 100644 --- a/Library/Homebrew/test/support/fixtures/cask/Casks/osdn-correct-url-format.rb +++ b/Library/Homebrew/test/support/fixtures/cask/Casks/osdn-urls.rb @@ -1,4 +1,4 @@ -cask "osdn-correct-url-format" do +cask "osdn-urls" do version "1.2.3" url "https://user.dl.osdn.jp/something/id/Something-1.2.3.dmg"