Skip to content

Commit

Permalink
packages_detect: tweak syntax.
Browse files Browse the repository at this point in the history
  • Loading branch information
MikeMcQuaid authored and SMillerDev committed Apr 21, 2024
1 parent b3a004e commit 64da960
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 36 deletions.
10 changes: 5 additions & 5 deletions lib/test_runner.rb
Expand Up @@ -142,14 +142,14 @@ def build_tests(argument, tap:, git:, output_paths:, skip_setup:,
args.deleted_formulae.nil?
if no_formulae_flags &&
(no_only_args || args.only_formulae? || args.only_formulae_detect?)
tests[:formulae_detect] = Tests::PackagesDetect.new(argument, tap: tap,
git: git,
tests[:formulae_detect] = Tests::PackagesDetect.new(argument, tap:,
git:,
dry_run: args.dry_run?,
fail_fast: args.fail_fast?,
verbose: args.verbose?)
elsif (no_only_args || args.only_casks_detect?)
tests[:casks_detect] = Tests::PackagesDetect.new(argument, tap: tap,
git: git,
elsif no_only_args || args.only_casks_detect?
tests[:casks_detect] = Tests::PackagesDetect.new(argument, tap:,
git:,
dry_run: args.dry_run?,
fail_fast: args.fail_fast?,
verbose: args.verbose?)
Expand Down
83 changes: 52 additions & 31 deletions lib/tests/packages_detect.rb
Expand Up @@ -3,7 +3,7 @@
module Homebrew
module Tests
class PackagesDetect < Test
attr_reader :testing_formulae, :added_formulae, :deleted_formulae,
attr_reader :testing_formulae, :added_formulae, :deleted_formulae,
:testing_casks, :added_casks, :deleted_casks

def initialize(argument, tap:, git:, dry_run:, fail_fast:, verbose:)
Expand Down Expand Up @@ -60,6 +60,15 @@ def detect_packages!(args:)
end

@testing_formulae = [canonical_formula_name]
@testing_casks = []
elsif (canonical_cask_name = safe_cask_canonical_name(@argument, args:))
unless canonical_cask_name.include?("/")
ENV["HOMEBREW_NO_INSTALL_FROM_API"] = "1"
CoreTap.ensure_installed!
end

@testing_casks = [canonical_cask_name]
@testing_formulae = []
else
raise UsageError,
"#{@argument} is not detected from GitHub Actions or a formula name!"
Expand Down Expand Up @@ -139,20 +148,14 @@ def detect_packages!(args:)

if tap && diff_start_sha1 != diff_end_sha1
formula_path = tap.formula_dir.to_s
@added_formulae +=
diff_packages(diff_start_sha1, diff_end_sha1, formula_path, "A")
modified_formulae +=
diff_packages(diff_start_sha1, diff_end_sha1, formula_path, "M")
@deleted_formulae +=
diff_packages(diff_start_sha1, diff_end_sha1, formula_path, "D")
@added_formulae += diff_packages(diff_start_sha1, diff_end_sha1, formula_path, "A")
modified_formulae += diff_packages(diff_start_sha1, diff_end_sha1, formula_path, "M")
@deleted_formulae += diff_packages(diff_start_sha1, diff_end_sha1, formula_path, "D")

cask_path = tap.cask_dir.to_s
@added_casks += @added_formulae +
diff_packages(diff_start_sha1, diff_end_sha1, cask_path, "A")
modified_casks += modified_formulae +
diff_packages(diff_start_sha1, diff_end_sha1, cask_path, "M")
@deleted_casks += @deleted_formulae +
diff_packages(diff_start_sha1, diff_end_sha1, cask_path, "D")
@added_casks += diff_packages(diff_start_sha1, diff_end_sha1, cask_path, "A")
modified_casks += diff_packages(diff_start_sha1, diff_end_sha1, cask_path, "M")
@deleted_casks += diff_packages(diff_start_sha1, diff_end_sha1, cask_path, "D")
end

# If a package is both added and deleted: it's actually modified.
Expand All @@ -169,7 +172,6 @@ def detect_packages!(args:)
if args.test_default_formula?
# Build the default test formula.
modified_formulae << "homebrew/test-bot/testbottest"
modified_casks << "homebrew/test-bot/testbottest"
end

@testing_formulae += @added_formulae + modified_formulae
Expand All @@ -189,6 +191,7 @@ def detect_packages!(args:)
@added_formulae.uniq!
modified_formulae.uniq!
@deleted_formulae.uniq!

@testing_casks.uniq!
@added_casks.uniq!
modified_casks.uniq!
Expand All @@ -214,19 +217,24 @@ def detect_packages!(args:)
end
end

puts <<-EOS
testing_formulae #{@testing_formulae.join(" ").presence || "(none)"}
added_formulae #{@added_formulae.join(" ").presence || "(none)"}
modified_formulae #{modified_formulae.join(" ").presence || "(none)"}
deleted_formulae #{@deleted_formulae.join(" ").presence || "(none)"}
formulae_to_fetch #{@formulae_to_fetch.join(" ").presence || "(none)"}
if args.only_casks_detect?
puts <<-EOS
testing_casks #{@testing_casks.join(" ").presence || "(none)"}
added_casks #{@added_casks.join(" ").presence || "(none)"}
modified_casks #{modified_casks.join(" ").presence || "(none)"}
deleted_casks #{@deleted_casks.join(" ").presence || "(none)"}
EOS
testing_casks #{@testing_casks.join(" ").presence || "(none)"}
added_casks #{@added_casks.join(" ").presence || "(none)"}
modified_casks #{modified_casks.join(" ").presence || "(none)"}
deleted_casks #{@deleted_casks.join(" ").presence || "(none)"}
EOS
else
puts <<-EOS
testing_formulae #{@testing_formulae.join(" ").presence || "(none)"}
added_formulae #{@added_formulae.join(" ").presence || "(none)"}
modified_formulae #{modified_formulae.join(" ").presence || "(none)"}
deleted_formulae #{@deleted_formulae.join(" ").presence || "(none)"}
formulae_to_fetch #{@formulae_to_fetch.join(" ").presence || "(none)"}
EOS
end
end

def safe_formula_canonical_name(formula_name, args:)
Expand All @@ -246,6 +254,22 @@ def safe_formula_canonical_name(formula_name, args:)
puts e.backtrace if args.debug?
end

def safe_cask_canonical_name(cask_name, args:)
Homebrew.with_no_api_env do
CaskLoader.load(cask_name).full_name
end
rescue TapCaskUnavailableError => e
raise if e.tap.installed?

test "brew", "tap", e.tap.name
retry unless steps.last.failed?
onoe e
puts e.backtrace if args.debug?
rescue CaskUnavailableError, TapCaskAmbiguityError => e
onoe e
puts e.backtrace if args.debug?
end

def rev_parse(ref)
Utils.popen_read(git, "-C", repository, "rev-parse", "--verify", ref).strip
end
Expand All @@ -264,14 +288,11 @@ def diff_packages(start_revision, end_revision, path, filter)
).lines.filter_map do |line|
file = Pathname.new line.chomp

name = nil
if tap.formula_file?(file)
name = tap.formula_file_to_name(file)
tap.formula_file_to_name(file)
elsif tap.cask_file?(file)
name = file.basename(".rb").to_s
file.basename(".rb").to_s
end

name
end.compact
end
end
Expand Down

0 comments on commit 64da960

Please sign in to comment.