Skip to content
Snippets Groups Projects
Commit 252c701c authored by Mike McQuaid's avatar Mike McQuaid Committed by GitHub
Browse files

Test officially supported cmd taps. (#390)

All of these taps use Homebrew internal APIs (or will shortly) and we
autoinstall them all from `brew $CMD`. We should adjust our CI to ensure
that we never accidentally break these taps when making changes to core
code so that these taps can rely more on this core code rather than
having to e.g. vendor equivalent code that never changes on our end.
parent 03772935
No related branches found
No related tags found
No related merge requests found
#: @hide_from_man_page #: @hide_from_man_page
#: * `tests` [`-v`] [`--coverage`] [`--generic`] [`--no-compat`] [`--only=`<test_script/test_method>] [`--seed` <seed>] [`--trace`] [`--online`]: #: * `tests` [`-v`] [`--coverage`] [`--generic`] [`--no-compat`] [`--only=`<test_script/test_method>] [`--seed` <seed>] [`--trace`] [`--online`] [`--official-cmd-taps`]:
#: Run Homebrew's unit and integration tests. #: Run Homebrew's unit and integration tests.
require "fileutils" require "fileutils"
require "tap"
module Homebrew module Homebrew
def tests def tests
ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "1"
if ARGV.include? "--official-cmd-taps"
ENV["HOMEBREW_TEST_OFFICIAL_CMD_TAPS"] = "1"
OFFICIAL_CMD_TAPS.each do |tap, _|
tap = Tap.fetch tap
tap.install unless tap.installed?
end
end
(HOMEBREW_LIBRARY/"Homebrew/test").cd do (HOMEBREW_LIBRARY/"Homebrew/test").cd do
ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "1"
ENV["TESTOPTS"] = "-v" if ARGV.verbose? ENV["TESTOPTS"] = "-v" if ARGV.verbose?
ENV["HOMEBREW_NO_COMPAT"] = "1" if ARGV.include? "--no-compat" ENV["HOMEBREW_NO_COMPAT"] = "1" if ARGV.include? "--no-compat"
ENV["HOMEBREW_TEST_GENERIC_OS"] = "1" if ARGV.include? "--generic" ENV["HOMEBREW_TEST_GENERIC_OS"] = "1" if ARGV.include? "--generic"
......
...@@ -659,6 +659,7 @@ module Homebrew ...@@ -659,6 +659,7 @@ module Homebrew
test "brew", "tests", *tests_args test "brew", "tests", *tests_args
test "brew", "tests", "--no-compat" test "brew", "tests", "--no-compat"
test "brew", "readall", "--syntax" test "brew", "readall", "--syntax"
test "brew", "tests", "--official-cmd-taps"
else else
test "brew", "readall", "--aliases", @tap.name test "brew", "readall", "--aliases", @tap.name
end end
......
...@@ -9,6 +9,7 @@ require "utils" ...@@ -9,6 +9,7 @@ require "utils"
require "exceptions" require "exceptions"
require "set" require "set"
require "rbconfig" require "rbconfig"
require "official_taps"
ARGV.extend(HomebrewArgvExtension) ARGV.extend(HomebrewArgvExtension)
......
...@@ -15,4 +15,10 @@ OFFICIAL_TAPS = %w[ ...@@ -15,4 +15,10 @@ OFFICIAL_TAPS = %w[
tex tex
versions versions
x11 x11
] ].freeze
OFFICIAL_CMD_TAPS = {
"caskroom/cask" => ["cask"],
"homebrew/bundle" => ["bundle"],
"homebrew/services" => ["services"],
}.freeze
...@@ -17,6 +17,12 @@ class IntegrationCommandTests < Homebrew::TestCase ...@@ -17,6 +17,12 @@ class IntegrationCommandTests < Homebrew::TestCase
@formula_files.each(&:unlink) @formula_files.each(&:unlink)
end end
def needs_test_cmd_taps
unless ENV["HOMEBREW_TEST_OFFICIAL_CMD_TAPS"]
skip "HOMEBREW_TEST_OFFICIAL_CMD_TAPS is not set"
end
end
def cmd_id_from_args(args) def cmd_id_from_args(args)
args_pretty = args.join(" ").gsub(TEST_TMPDIR, "@TMPDIR@") args_pretty = args.join(" ").gsub(TEST_TMPDIR, "@TMPDIR@")
test_pretty = "#{self.class.name}\##{name}.#{@cmd_id_index += 1}" test_pretty = "#{self.class.name}\##{name}.#{@cmd_id_index += 1}"
...@@ -668,4 +674,35 @@ class IntegrationCommandTests < Homebrew::TestCase ...@@ -668,4 +674,35 @@ class IntegrationCommandTests < Homebrew::TestCase
ensure ensure
desc_cache.unlink desc_cache.unlink
end end
def test_bundle
needs_test_cmd_taps
HOMEBREW_REPOSITORY.cd do
shutup do
system "git", "init"
system "git", "commit", "--allow-empty", "-m", "This is a test commit"
end
end
mktmpdir do |path|
FileUtils.touch "#{path}/Brewfile"
Dir.chdir path do
assert_equal "The Brewfile's dependencies are satisfied.",
cmd("bundle", "check")
end
end
ensure
FileUtils.rm_rf HOMEBREW_REPOSITORY/".git"
end
def test_cask
needs_test_cmd_taps
assert_equal "Warning: nothing to list", cmd("cask", "list")
end
def test_services
needs_test_cmd_taps
assert_equal "Warning: No services available to control with `brew services`",
cmd("services", "list")
end
end end
...@@ -94,14 +94,8 @@ begin ...@@ -94,14 +94,8 @@ begin
exit Homebrew.failed? ? 1 : 0 exit Homebrew.failed? ? 1 : 0
else else
require "tap" require "tap"
possible_tap = case cmd possible_tap = OFFICIAL_CMD_TAPS.find { |_, cmds| cmds.include?(cmd) }
when "brewdle", "brewdler", "bundle", "bundler" possible_tap = Tap.fetch(possible_tap.first) if possible_tap
Tap.fetch("Homebrew", "bundle")
when "cask"
Tap.fetch("caskroom", "cask")
when "services"
Tap.fetch("Homebrew", "services")
end
if possible_tap && !possible_tap.installed? if possible_tap && !possible_tap.installed?
brew_uid = HOMEBREW_BREW_FILE.stat.uid brew_uid = HOMEBREW_BREW_FILE.stat.uid
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment