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
#: * `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.
require "fileutils"
require "tap"
module Homebrew
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
ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "1"
ENV["TESTOPTS"] = "-v" if ARGV.verbose?
ENV["HOMEBREW_NO_COMPAT"] = "1" if ARGV.include? "--no-compat"
ENV["HOMEBREW_TEST_GENERIC_OS"] = "1" if ARGV.include? "--generic"
......
......@@ -659,6 +659,7 @@ module Homebrew
test "brew", "tests", *tests_args
test "brew", "tests", "--no-compat"
test "brew", "readall", "--syntax"
test "brew", "tests", "--official-cmd-taps"
else
test "brew", "readall", "--aliases", @tap.name
end
......
......@@ -9,6 +9,7 @@ require "utils"
require "exceptions"
require "set"
require "rbconfig"
require "official_taps"
ARGV.extend(HomebrewArgvExtension)
......
......@@ -15,4 +15,10 @@ OFFICIAL_TAPS = %w[
tex
versions
x11
]
].freeze
OFFICIAL_CMD_TAPS = {
"caskroom/cask" => ["cask"],
"homebrew/bundle" => ["bundle"],
"homebrew/services" => ["services"],
}.freeze
......@@ -17,6 +17,12 @@ class IntegrationCommandTests < Homebrew::TestCase
@formula_files.each(&:unlink)
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)
args_pretty = args.join(" ").gsub(TEST_TMPDIR, "@TMPDIR@")
test_pretty = "#{self.class.name}\##{name}.#{@cmd_id_index += 1}"
......@@ -668,4 +674,35 @@ class IntegrationCommandTests < Homebrew::TestCase
ensure
desc_cache.unlink
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
......@@ -94,14 +94,8 @@ begin
exit Homebrew.failed? ? 1 : 0
else
require "tap"
possible_tap = case cmd
when "brewdle", "brewdler", "bundle", "bundler"
Tap.fetch("Homebrew", "bundle")
when "cask"
Tap.fetch("caskroom", "cask")
when "services"
Tap.fetch("Homebrew", "services")
end
possible_tap = OFFICIAL_CMD_TAPS.find { |_, cmds| cmds.include?(cmd) }
possible_tap = Tap.fetch(possible_tap.first) if possible_tap
if possible_tap && !possible_tap.installed?
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