 51c4421409
			
		
	
	
		51c4421409
		
			
		
	
	
	
	
		
			
			We will now build on Ventura (macOS 13) to Sequoia (macOS 15). Runners for macOS 15-x86_64 will not be allocated by default due to a lack of appropriate hardware.
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require "dev-cmd/determine-test-runners"
 | |
| require "cmd/shared_examples/args_parse"
 | |
| 
 | |
| RSpec.describe Homebrew::DevCmd::DetermineTestRunners do
 | |
|   def get_runners(file)
 | |
|     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) }
 | |
|                .sort
 | |
|   end
 | |
| 
 | |
|   after do
 | |
|     FileUtils.rm_f github_output
 | |
|   end
 | |
| 
 | |
|   let(:linux_runner) { "ubuntu-22.04" }
 | |
|   # We need to make sure we write to a different path for each example.
 | |
|   let(:github_output) { "#{TEST_TMPDIR}/github_output#{DetermineRunnerTestHelper.new.number}" }
 | |
|   let(:ephemeral_suffix) { "-12345" }
 | |
|   let(:runner_env) do
 | |
|     {
 | |
|       "HOMEBREW_LINUX_RUNNER"       => linux_runner,
 | |
|       "HOMEBREW_MACOS_LONG_TIMEOUT" => "false",
 | |
|       "GITHUB_RUN_ID"               => ephemeral_suffix.split("-").second,
 | |
|     }.freeze
 | |
|   end
 | |
|   let(:all_runners) do
 | |
|     out = []
 | |
|     MacOSVersion::SYMBOLS.each_value do |v|
 | |
|       macos_version = MacOSVersion.new(v)
 | |
|       next if macos_version < GitHubRunnerMatrix::OLDEST_HOMEBREW_CORE_MACOS_RUNNER
 | |
|       next if macos_version > GitHubRunnerMatrix::NEWEST_HOMEBREW_CORE_MACOS_RUNNER
 | |
| 
 | |
|       out << "#{v}-arm64"
 | |
|       next if macos_version > GitHubRunnerMatrix::NEWEST_HOMEBREW_CORE_INTEL_MACOS_RUNNER
 | |
| 
 | |
|       out << "#{v}-x86_64"
 | |
|     end
 | |
| 
 | |
|     out << linux_runner
 | |
| 
 | |
|     out
 | |
|   end
 | |
| 
 | |
|   it_behaves_like "parseable arguments"
 | |
| 
 | |
|   it "assigns all runners for formulae without any requirements", :integration_test do
 | |
|     setup_test_formula "testball"
 | |
| 
 | |
|     expect { brew "determine-test-runners", "testball", runner_env.merge({ "GITHUB_OUTPUT" => github_output }) }
 | |
|       .to 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
 | |
| end
 | |
| 
 | |
| 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
 |