Port Homebrew::DevCmd::DetermineTestRunners
This commit is contained in:
parent
9297a850aa
commit
19f9c52652
@ -1,62 +1,62 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "abstract_command"
|
||||||
require "cli/parser"
|
require "cli/parser"
|
||||||
require "test_runner_formula"
|
require "test_runner_formula"
|
||||||
require "github_runner_matrix"
|
require "github_runner_matrix"
|
||||||
|
|
||||||
module Homebrew
|
module Homebrew
|
||||||
sig { returns(Homebrew::CLI::Parser) }
|
module DevCmd
|
||||||
def self.determine_test_runners_args
|
class DetermineTestRunners < AbstractCommand
|
||||||
Homebrew::CLI::Parser.new do
|
cmd_args do
|
||||||
usage_banner <<~EOS
|
usage_banner <<~EOS
|
||||||
`determine-test-runners` {<testing-formulae> [<deleted-formulae>]|--all-supported}
|
`determine-test-runners` {<testing-formulae> [<deleted-formulae>]|--all-supported}
|
||||||
|
|
||||||
Determines the runners used to test formulae or their dependents. For internal use in Homebrew taps.
|
Determines the runners used to test formulae or their dependents. For internal use in Homebrew taps.
|
||||||
EOS
|
EOS
|
||||||
switch "--all-supported",
|
switch "--all-supported",
|
||||||
description: "Instead of selecting runners based on the chosen formula, return all supported runners."
|
description: "Instead of selecting runners based on the chosen formula, return all supported runners."
|
||||||
switch "--eval-all",
|
switch "--eval-all",
|
||||||
description: "Evaluate all available formulae, whether installed or not, to determine testing " \
|
description: "Evaluate all available formulae, whether installed or not, to determine testing " \
|
||||||
"dependents.",
|
"dependents.",
|
||||||
env: :eval_all
|
env: :eval_all
|
||||||
switch "--dependents",
|
switch "--dependents",
|
||||||
description: "Determine runners for testing dependents. Requires `--eval-all` or `HOMEBREW_EVAL_ALL`.",
|
description: "Determine runners for testing dependents. Requires `--eval-all` or `HOMEBREW_EVAL_ALL`.",
|
||||||
depends_on: "--eval-all"
|
depends_on: "--eval-all"
|
||||||
|
|
||||||
named_args max: 2
|
named_args max: 2
|
||||||
|
|
||||||
conflicts "--all-supported", "--dependents"
|
conflicts "--all-supported", "--dependents"
|
||||||
|
|
||||||
hide_from_man_page!
|
hide_from_man_page!
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
sig { void }
|
sig { override.void }
|
||||||
def self.determine_test_runners
|
def run
|
||||||
args = determine_test_runners_args.parse
|
if args.no_named? && !args.all_supported?
|
||||||
|
raise Homebrew::CLI::MinNamedArgumentsError, 1
|
||||||
|
elsif args.all_supported? && !args.no_named?
|
||||||
|
raise UsageError, "`--all-supported` is mutually exclusive to other arguments."
|
||||||
|
end
|
||||||
|
|
||||||
if args.no_named? && !args.all_supported?
|
testing_formulae = args.named.first&.split(",").to_a
|
||||||
raise Homebrew::CLI::MinNamedArgumentsError, 1
|
testing_formulae.map! { |name| TestRunnerFormula.new(Formulary.factory(name), eval_all: args.eval_all?) }
|
||||||
elsif args.all_supported? && !args.no_named?
|
.freeze
|
||||||
raise UsageError, "`--all-supported` is mutually exclusive to other arguments."
|
deleted_formulae = args.named.second&.split(",").to_a.freeze
|
||||||
end
|
runner_matrix = GitHubRunnerMatrix.new(testing_formulae, deleted_formulae,
|
||||||
|
all_supported: args.all_supported?,
|
||||||
|
dependent_matrix: args.dependents?)
|
||||||
|
runners = runner_matrix.active_runner_specs_hash
|
||||||
|
|
||||||
testing_formulae = args.named.first&.split(",").to_a
|
ohai "Runners", JSON.pretty_generate(runners)
|
||||||
testing_formulae.map! { |name| TestRunnerFormula.new(Formulary.factory(name), eval_all: args.eval_all?) }
|
|
||||||
.freeze
|
|
||||||
deleted_formulae = args.named.second&.split(",").to_a.freeze
|
|
||||||
runner_matrix = GitHubRunnerMatrix.new(testing_formulae, deleted_formulae,
|
|
||||||
all_supported: args.all_supported?,
|
|
||||||
dependent_matrix: args.dependents?)
|
|
||||||
runners = runner_matrix.active_runner_specs_hash
|
|
||||||
|
|
||||||
ohai "Runners", JSON.pretty_generate(runners)
|
github_output = ENV.fetch("GITHUB_OUTPUT")
|
||||||
|
File.open(github_output, "a") do |f|
|
||||||
github_output = ENV.fetch("GITHUB_OUTPUT")
|
f.puts("runners=#{runners.to_json}")
|
||||||
File.open(github_output, "a") do |f|
|
f.puts("runners_present=#{runners.present?}")
|
||||||
f.puts("runners=#{runners.to_json}")
|
end
|
||||||
f.puts("runners_present=#{runners.present?}")
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
require "dev-cmd/determine-test-runners"
|
require "dev-cmd/determine-test-runners"
|
||||||
require "cmd/shared_examples/args_parse"
|
require "cmd/shared_examples/args_parse"
|
||||||
|
|
||||||
RSpec.describe "brew determine-test-runners" do
|
RSpec.describe Homebrew::DevCmd::DetermineTestRunners do
|
||||||
def get_runners(file)
|
def get_runners(file)
|
||||||
runner_line = File.open(file).first
|
runner_line = File.open(file).first
|
||||||
json_text = runner_line[/runners=(.*)/, 1]
|
json_text = runner_line[/runners=(.*)/, 1]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user