Class: Homebrew::TestBot::Formulae Private
- Inherits:
-
TestFormulae
- Object
- Test
- TestFormulae
- Homebrew::TestBot::Formulae
- Includes:
- OS::Mac::TestBot::Formulae
- Defined in:
- test_bot/formulae.rb
This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.
Instance Attribute Summary collapse
- #added_formulae ⇒ void writeonly private
- #deleted_formulae ⇒ void writeonly private
- #testing_formulae ⇒ void writeonly private
Attributes inherited from TestFormulae
#artifact_cache, #skipped_or_failed_formulae
Attributes inherited from Test
Instance Method Summary collapse
- #initialize(tap:, git:, dry_run:, fail_fast:, verbose:, output_paths:) ⇒ void constructor private
- #run!(args:) ⇒ void private
Methods included from OS::Linux::TestBot::TestFormulae
#previous_run_artifact_specifier
Methods included from OS::Mac::TestBot::TestFormulae
#previous_run_artifact_specifier
Methods inherited from Test
Methods included from Utils::Output::Mixin
#issue_reporting_message, #odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_outside_github_actions, #pretty_deprecated, #pretty_disabled, #pretty_duration, #pretty_install_status, #pretty_installed, #pretty_outdated, #pretty_uninstalled, #pretty_upgradable
Constructor Details
#initialize(tap:, git:, dry_run:, fail_fast:, verbose:, output_paths:) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'test_bot/formulae.rb', line 26 def initialize(tap:, git:, dry_run:, fail_fast:, verbose:, output_paths:) super(tap:, git:, dry_run:, fail_fast:, verbose:) @built_formulae = T.let([], T::Array[String]) @bottle_checksums = T.let({}, T::Hash[Pathname, String]) @bottle_output_path = T.let(output_paths.fetch(:bottle), Pathname) @linkage_output_path = T.let(output_paths.fetch(:linkage), Pathname) @skipped_or_failed_formulae_output_path = T.let(output_paths.fetch(:skipped_or_failed_formulae), Pathname) @testing_formulae = T.let([], T::Array[String]) @added_formulae = T.let([], T::Array[String]) @deleted_formulae = T.let([], T::Array[String]) @testing_formulae_count = T.let(0, Integer) @tested_formulae_count = T.let(0, Integer) @unchanged_dependencies = T.let([], T::Array[String]) @unchanged_build_dependencies = T.let([], T::Array[String]) @bottle_filename = T.let(nil, T.nilable(Pathname)) @bottle_json_filename = T.let(nil, T.nilable(Pathname)) end |
Instance Attribute Details
#added_formulae=(value) ⇒ void (writeonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
11 12 13 |
# File 'test_bot/formulae.rb', line 11 def added_formulae=(value) @added_formulae = value end |
#deleted_formulae=(value) ⇒ void (writeonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
14 15 16 |
# File 'test_bot/formulae.rb', line 14 def deleted_formulae=(value) @deleted_formulae = value end |
#testing_formulae=(value) ⇒ void (writeonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
8 9 10 |
# File 'test_bot/formulae.rb', line 8 def testing_formulae=(value) @testing_formulae = value end |
Instance Method Details
#run!(args:) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'test_bot/formulae.rb', line 46 def run!(args:) test_header(:Formulae) verify_local_bottles with_env(HOMEBREW_DISABLE_LOAD_FORMULA: "1") do # Portable Ruby bottles are handled differently. next if testing_portable_ruby? download_artifacts_from_previous_run!("bottles{,_#{previous_run_artifact_specifier}*}", dry_run: args.dry_run?) end @bottle_checksums.merge!( bottle_glob("*", artifact_cache, ".{json,tar.gz}", bottle_tag: "*").to_h do |bottle_file| [bottle_file.realpath, bottle_file.sha256] end, ) # #run! modifies `@testing_formulae`, so we need to track this separately. @testing_formulae_count = @testing_formulae.count perform_bash_cleanup = @testing_formulae.include?("bash") @tested_formulae_count = 0 sorted_formulae.each do |f| verify_local_bottles if testing_portable_ruby? portable_formula!(f) else formula!(f, args:) end puts next if @testing_formulae_count < 3 progress_text = +"Test progress: " progress_text += "#{@tested_formulae_count} formula(e) tested, " progress_text += "#{@testing_formulae_count - @tested_formulae_count} remaining" info_header progress_text end @deleted_formulae.each do |f| deleted_formula!(f) verify_local_bottles puts end return unless GitHub::Actions.env_set? # Remove `bash` after it is tested, since leaving a broken `bash` # installation in the environment can cause issues with subsequent # GitHub Actions steps. test "brew", "uninstall", "--formula", "--force", "bash" if perform_bash_cleanup File.open(ENV.fetch("GITHUB_OUTPUT"), "a") do |f| f.puts "skipped_or_failed_formulae=#{@skipped_or_failed_formulae.join(",")}" end @skipped_or_failed_formulae_output_path.write(@skipped_or_failed_formulae.join(",")) ensure verify_local_bottles FileUtils.rm_rf artifact_cache end |