diff --git a/Library/Homebrew/livecheck/skip_conditions.rb b/Library/Homebrew/livecheck/skip_conditions.rb index 4ed474dea6..a8212b3a08 100644 --- a/Library/Homebrew/livecheck/skip_conditions.rb +++ b/Library/Homebrew/livecheck/skip_conditions.rb @@ -120,6 +120,7 @@ module Homebrew } private_class_method def self.cask_deprecated(cask, livecheck_defined, full_name: false, verbose: false) return {} if !cask.deprecated? || livecheck_defined + return {} if cask.disable_date && cask.deprecation_reason == :unsigned Livecheck.status_hash(cask, "deprecated", full_name:, verbose:) end diff --git a/Library/Homebrew/test/livecheck/skip_conditions_spec.rb b/Library/Homebrew/test/livecheck/skip_conditions_spec.rb index 0ea8445649..94859b9404 100644 --- a/Library/Homebrew/test/livecheck/skip_conditions_spec.rb +++ b/Library/Homebrew/test/livecheck/skip_conditions_spec.rb @@ -79,10 +79,10 @@ RSpec.describe Homebrew::Livecheck::SkipConditions do let(:casks) do { - basic: Cask::Cask.new("test") do + basic: Cask::Cask.new("test") do version "0.0.1,2" - url "https://brew.sh/test-0.0.1.tgz" + url "https://brew.sh/test-#{version.csv.first}.tgz" name "Test" desc "Test cask" homepage "https://brew.sh" @@ -92,32 +92,42 @@ RSpec.describe Homebrew::Livecheck::SkipConditions do regex(/"stable":"(\d+(?:\.\d+)+)"/i) end end, - deprecated: Cask::Cask.new("test_deprecated") do + deprecated: Cask::Cask.new("test_deprecated") do version "0.0.1" sha256 :no_check - url "https://brew.sh/test-0.0.1.tgz" + url "https://brew.sh/test-#{version}.tgz" name "Test Deprecate" desc "Deprecated test cask" homepage "https://brew.sh" deprecate! date: "2020-06-25", because: :discontinued end, - disabled: Cask::Cask.new("test_disabled") do + disabled: Cask::Cask.new("test_disabled") do version "0.0.1" sha256 :no_check - url "https://brew.sh/test-0.0.1.tgz" + url "https://brew.sh/test-#{version}.tgz" name "Test Disable" desc "Disabled test cask" homepage "https://brew.sh" disable! date: "2020-06-25", because: :discontinued end, - extract_plist: Cask::Cask.new("test_extract_plist_skip") do + future_disable_unsigned: Cask::Cask.new("test_future_disable_unsigned") do version "0.0.1" - url "https://brew.sh/test-0.0.1.tgz" + url "https://brew.sh/test-#{version}.tgz" + name "Test Future Disabled Unsigned" + desc "Future Disable Unsigned test cask" + homepage "https://brew.sh" + + disable! date: "3000-06-25", because: :unsigned + end, + extract_plist: Cask::Cask.new("test_extract_plist_skip") do + version "0.0.1" + + url "https://brew.sh/test-#{version}.tgz" name "Test ExtractPlist Skip" desc "Skipped test cask" homepage "https://brew.sh" @@ -126,7 +136,7 @@ RSpec.describe Homebrew::Livecheck::SkipConditions do strategy :extract_plist end end, - latest: Cask::Cask.new("test_latest") do + latest: Cask::Cask.new("test_latest") do version :latest sha256 :no_check @@ -135,7 +145,7 @@ RSpec.describe Homebrew::Livecheck::SkipConditions do desc "Latest test cask" homepage "https://brew.sh" end, - unversioned: Cask::Cask.new("test_unversioned") do + unversioned: Cask::Cask.new("test_unversioned") do version "1.2.3" sha256 :no_check @@ -144,10 +154,10 @@ RSpec.describe Homebrew::Livecheck::SkipConditions do desc "Unversioned test cask" homepage "https://brew.sh" end, - skip: Cask::Cask.new("test_skip") do + skip: Cask::Cask.new("test_skip") do version "0.0.1" - url "https://brew.sh/test-0.0.1.tgz" + url "https://brew.sh/test-#{version}.tgz" name "Test Skip" desc "Skipped test cask" homepage "https://brew.sh" @@ -156,10 +166,10 @@ RSpec.describe Homebrew::Livecheck::SkipConditions do skip end end, - skip_with_message: Cask::Cask.new("test_skip_with_message") do + skip_with_message: Cask::Cask.new("test_skip_with_message") do version "0.0.1" - url "https://brew.sh/test-0.0.1.tgz" + url "https://brew.sh/test-#{version}.tgz" name "Test Skip" desc "Skipped test cask" homepage "https://brew.sh" @@ -374,6 +384,12 @@ RSpec.describe Homebrew::Livecheck::SkipConditions do end end + context "when a cask without a `livecheck` block is deprecated with a future disable date because `:unsigned`" do + it "does not skip" do + expect(skip_conditions.skip_information(casks[:future_disable_unsigned])).to eq({}) + end + end + context "when a cask has a `livecheck` block using `ExtractPlist` and `--extract-plist` is not used" do it "skips" do expect(skip_conditions.skip_information(casks[:extract_plist], extract_plist: false))