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.
This commit is contained in:
parent
037729351f
commit
252c701c59
@ -1,13 +1,23 @@
|
||||
#: @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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user