brew/Library/Homebrew/test/dev-cmd/determine-test-runners_spec.rb

75 lines
1.9 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2023-04-04 00:05:29 +08:00
require "dev-cmd/determine-test-runners"
require "cmd/shared_examples/args_parse"
describe "brew determine-test-runners" do
2023-04-04 01:12:05 +08:00
after do
FileUtils.rm_f github_output
end
2023-04-04 00:05:29 +08:00
let(:linux_runner) { "ubuntu-22.04" }
# We need to make sure we write to a different path for each example.
2023-04-04 13:20:03 +08:00
let(:github_output) { "#{TEST_TMPDIR}/github_output#{DetermineRunnerTestHelper.new.number}" }
let(:ephemeral_suffix) { "-12345-1" }
2023-04-04 01:12:05 +08:00
let(:runner_env) do
2023-04-04 00:05:29 +08:00
{
"HOMEBREW_LINUX_RUNNER" => linux_runner,
2023-04-25 16:41:33 +08:00
"HOMEBREW_MACOS_TIMEOUT" => "90",
"GITHUB_RUN_ID" => ephemeral_suffix.split("-").second,
"GITHUB_RUN_ATTEMPT" => ephemeral_suffix.split("-").third,
}.freeze
2023-04-04 00:05:29 +08:00
end
let(:all_runners) do
out = []
MacOSVersions::SYMBOLS.each_value do |v|
macos_version = OS::Mac::Version.new(v)
next if macos_version.unsupported_release?
out << v
out << "#{v}-arm64"
end
2023-04-04 00:05:29 +08:00
out << linux_runner
2023-04-04 01:12:05 +08:00
out
2023-04-04 00:05:29 +08:00
end
it_behaves_like "parseable arguments"
it "assigns all runners for formulae without any requirements", :integration_test do
2023-04-04 00:05:29 +08:00
setup_test_formula "testball"
expect { brew "determine-test-runners", "testball", runner_env.merge({ "GITHUB_OUTPUT" => github_output }) }
2023-04-04 00:05:29 +08:00
.to not_to_output.to_stdout
.and not_to_output.to_stderr
.and be_a_success
expect(File.read(github_output)).not_to be_empty
expect(get_runners(github_output).sort).to eq(all_runners.sort)
end
2023-04-04 00:05:29 +08:00
end
def get_runners(file)
2023-04-04 00:05:29 +08:00
runner_line = File.open(file).first
json_text = runner_line[/runners=(.*)/, 1]
runner_hash = JSON.parse(json_text)
runner_hash.map { |item| item["runner"].delete_suffix(ephemeral_suffix) }
2023-04-04 00:05:29 +08:00
.sort
end
2023-04-04 13:20:03 +08:00
class DetermineRunnerTestHelper
@instances = 0
class << self
attr_accessor :instances
end
attr_reader :number
def initialize
self.class.instances += 1
@number = self.class.instances
end
end