From d1b09a90da17e53d2c8d5fae5d170b25deba538b Mon Sep 17 00:00:00 2001 From: Bevan Kay Date: Tue, 28 Feb 2023 18:54:27 +1100 Subject: [PATCH 1/4] cask/auditor: only audit 10 languages by default on casks with many languages --- Library/Homebrew/cask/auditor.rb | 12 +++- Library/Homebrew/test/cask/cmd/audit_spec.rb | 8 +++ .../cask/Casks/with-many-languages.rb | 55 +++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb diff --git a/Library/Homebrew/cask/auditor.rb b/Library/Homebrew/cask/auditor.rb index a450040dcc..72c104953a 100644 --- a/Library/Homebrew/cask/auditor.rb +++ b/Library/Homebrew/cask/auditor.rb @@ -48,12 +48,22 @@ module Cask @except = except end + LANGUAGE_BLOCK_LIMIT = 10 + def audit warnings = Set.new errors = Set.new if !language && language_blocks - language_blocks.each_key do |l| + if language_blocks.length > LANGUAGE_BLOCK_LIMIT && !@audit_new_cask + sample_keys = language_blocks.keys.sample(LANGUAGE_BLOCK_LIMIT) + sample_languages = language_blocks.select { |k| sample_keys.include?(k) } + ohai "Auditing a sample of available languages: #{sample_keys.map { |lang| lang[0].to_s }.to_sentence}" + else + sample_languages = language_blocks + end + + sample_languages.each_key do |l| audit = audit_languages(l) summary = audit.summary(include_passed: output_passed?, include_warnings: output_warnings?) if summary.present? && output_summary?(audit) diff --git a/Library/Homebrew/test/cask/cmd/audit_spec.rb b/Library/Homebrew/test/cask/cmd/audit_spec.rb index fb5d2b3873..1c48cc123f 100644 --- a/Library/Homebrew/test/cask/cmd/audit_spec.rb +++ b/Library/Homebrew/test/cask/cmd/audit_spec.rb @@ -5,6 +5,7 @@ require "cask/auditor" describe Cask::Cmd::Audit, :cask do let(:cask) { Cask::Cask.new("cask") } + let(:cask_with_many_languages) { Cask::CaskLoader.load(cask_path("with-many-languages")) } let(:result) { { warnings: Set.new, errors: Set.new } } describe "selection of Casks to audit" do @@ -160,4 +161,11 @@ describe Cask::Cmd::Audit, :cask do described_class.run("casktoken") end + + it "audits a sample of language when cask contains more than 10 languages" do + allow(Cask::CaskLoader).to receive(:load).and_return(cask_with_many_languages) + expect { + described_class.run("with-many-languages") + }.to output(/==> auditing a sample of available languages/im).to_stdout + end end diff --git a/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb b/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb new file mode 100644 index 0000000000..3e88465e06 --- /dev/null +++ b/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb @@ -0,0 +1,55 @@ +cask "with-many-languages" do + version "1.2.3" + + language "en", default: true do + sha256 :no_check + "en" + end + language "cs" do + sha256 :no_check + "cs" + end + language "es-AR" do + sha256 :no_check + "es-AR" + end + language "ff" do + sha256 :no_check + "ff" + end + language "fi" do + sha256 :no_check + "fi" + end + language "gn" do + sha256 :no_check + "gn" + end + language "gu" do + sha256 :no_check + "gu" + end + language "ko" do + sha256 :no_check + "ko" + end + language "ru" do + sha256 :no_check + "ru" + end + language "sv" do + sha256 :no_check + "sv" + end + language "th" do + sha256 :no_check + "th" + end + + name "Caffeine" + desc "Keep your mac awake" + url "file://#{TEST_FIXTURE_DIR}/cask/caffeine#{version}.zip" + homepage "https://brew.sh/" + + app "Caffeine.app" +end From 295a3539a5d1108b9c2487f8c19bd0eb63e9a881 Mon Sep 17 00:00:00 2001 From: Bevan Kay Date: Tue, 28 Feb 2023 18:55:12 +1100 Subject: [PATCH 2/4] Update with-many-languages.rb --- .../test/support/fixtures/cask/Casks/with-many-languages.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb b/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb index 3e88465e06..6f5aded763 100644 --- a/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb +++ b/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb @@ -48,7 +48,7 @@ cask "with-many-languages" do name "Caffeine" desc "Keep your mac awake" - url "file://#{TEST_FIXTURE_DIR}/cask/caffeine#{version}.zip" + url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip" homepage "https://brew.sh/" app "Caffeine.app" From 48a728245864ac7109596ba27ca298b2c59c8ca0 Mon Sep 17 00:00:00 2001 From: Bevan Kay Date: Tue, 28 Feb 2023 19:02:08 +1100 Subject: [PATCH 3/4] fix style --- .../test/support/fixtures/cask/Casks/with-many-languages.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb b/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb index 6f5aded763..401fe113fc 100644 --- a/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb +++ b/Library/Homebrew/test/support/fixtures/cask/Casks/with-many-languages.rb @@ -46,9 +46,9 @@ cask "with-many-languages" do "th" end - name "Caffeine" - desc "Keep your mac awake" url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip" + name "Caffeine" + desc "Keep your computer awake" homepage "https://brew.sh/" app "Caffeine.app" From 0589ac427dfe28cc679dc203b767552f5899db57 Mon Sep 17 00:00:00 2001 From: Bevan Kay Date: Tue, 28 Feb 2023 23:00:43 +1100 Subject: [PATCH 4/4] Update Library/Homebrew/cask/auditor.rb Co-authored-by: Mike McQuaid --- Library/Homebrew/cask/auditor.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/cask/auditor.rb b/Library/Homebrew/cask/auditor.rb index 72c104953a..0969a7dc30 100644 --- a/Library/Homebrew/cask/auditor.rb +++ b/Library/Homebrew/cask/auditor.rb @@ -55,12 +55,12 @@ module Cask errors = Set.new if !language && language_blocks - if language_blocks.length > LANGUAGE_BLOCK_LIMIT && !@audit_new_cask + sample_languages = if language_blocks.length > LANGUAGE_BLOCK_LIMIT && !@audit_new_cask sample_keys = language_blocks.keys.sample(LANGUAGE_BLOCK_LIMIT) - sample_languages = language_blocks.select { |k| sample_keys.include?(k) } ohai "Auditing a sample of available languages: #{sample_keys.map { |lang| lang[0].to_s }.to_sentence}" + language_blocks.select { |k| sample_keys.include?(k) } else - sample_languages = language_blocks + language_blocks end sample_languages.each_key do |l|