diff options
| author | Mike McQuaid | 2016-07-04 16:08:53 +0100 |
|---|---|---|
| committer | GitHub | 2016-07-04 16:08:53 +0100 |
| commit | 252c701c59227c385ef6178fe99523cca8c843bb (patch) | |
| tree | ed2bbef375b61cc579438371b76db8f66a9b76d8 /Library | |
| parent | 037729351fbb6d6baf7d044eb81544da3848a876 (diff) | |
| download | brew-252c701c59227c385ef6178fe99523cca8c843bb.tar.bz2 | |
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.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cmd/tests.rb | 14 | ||||
| -rw-r--r-- | Library/Homebrew/dev-cmd/test-bot.rb | 1 | ||||
| -rw-r--r-- | Library/Homebrew/global.rb | 1 | ||||
| -rw-r--r-- | Library/Homebrew/official_taps.rb | 8 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_integration_cmds.rb | 37 | ||||
| -rw-r--r-- | Library/brew.rb | 10 |
6 files changed, 60 insertions, 11 deletions
diff --git a/Library/Homebrew/cmd/tests.rb b/Library/Homebrew/cmd/tests.rb index ae10f0f7a..2e6bb647b 100644 --- a/Library/Homebrew/cmd/tests.rb +++ b/Library/Homebrew/cmd/tests.rb @@ -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" diff --git a/Library/Homebrew/dev-cmd/test-bot.rb b/Library/Homebrew/dev-cmd/test-bot.rb index 2f6c44d3a..9e55fbfa6 100644 --- a/Library/Homebrew/dev-cmd/test-bot.rb +++ b/Library/Homebrew/dev-cmd/test-bot.rb @@ -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 diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index 52bee2166..02ff15e39 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -9,6 +9,7 @@ require "utils" require "exceptions" require "set" require "rbconfig" +require "official_taps" ARGV.extend(HomebrewArgvExtension) diff --git a/Library/Homebrew/official_taps.rb b/Library/Homebrew/official_taps.rb index 75ad096c7..aedb0809e 100644 --- a/Library/Homebrew/official_taps.rb +++ b/Library/Homebrew/official_taps.rb @@ -15,4 +15,10 @@ OFFICIAL_TAPS = %w[ tex versions x11 -] +].freeze + +OFFICIAL_CMD_TAPS = { + "caskroom/cask" => ["cask"], + "homebrew/bundle" => ["bundle"], + "homebrew/services" => ["services"], +}.freeze diff --git a/Library/Homebrew/test/test_integration_cmds.rb b/Library/Homebrew/test/test_integration_cmds.rb index cc8f3b458..9b37fa545 100644 --- a/Library/Homebrew/test/test_integration_cmds.rb +++ b/Library/Homebrew/test/test_integration_cmds.rb @@ -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 diff --git a/Library/brew.rb b/Library/brew.rb index 0a1df9f9b..c06aa735e 100644 --- a/Library/brew.rb +++ b/Library/brew.rb @@ -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 |
