2013-04-29 05:50:12 +08:00
|
|
|
require 'bundler'
|
2012-10-14 03:39:00 +08:00
|
|
|
require 'bundler/setup'
|
2015-03-18 07:56:58 +08:00
|
|
|
require 'coveralls'
|
|
|
|
|
|
|
|
Coveralls.wear_merged!
|
2013-04-05 16:08:51 +08:00
|
|
|
|
2014-12-20 23:25:18 +08:00
|
|
|
# just in case
|
|
|
|
if RUBY_VERSION.to_i < 2
|
|
|
|
raise 'brew-cask: Ruby 2.0 or greater is required.'
|
|
|
|
end
|
|
|
|
|
2014-02-23 07:24:56 +08:00
|
|
|
# force some environment variables
|
|
|
|
ENV['HOMEBREW_NO_EMOJI']='1'
|
|
|
|
|
2014-10-08 22:39:51 +08:00
|
|
|
# add homebrew-cask lib to load path
|
2012-10-14 03:39:00 +08:00
|
|
|
brew_cask_path = Pathname.new(File.expand_path(__FILE__+'/../../'))
|
2014-04-26 01:01:32 +08:00
|
|
|
casks_path = brew_cask_path.join('Casks')
|
2012-10-14 03:39:00 +08:00
|
|
|
lib_path = brew_cask_path.join('lib')
|
|
|
|
$:.push(lib_path)
|
|
|
|
|
|
|
|
# require homebrew testing env
|
2014-12-31 20:57:18 +08:00
|
|
|
# todo: removeme, this is transitional
|
|
|
|
require 'vendor/homebrew-fork/testing_env'
|
2012-10-14 03:39:00 +08:00
|
|
|
|
2014-06-19 22:06:55 +08:00
|
|
|
# todo temporary, copied from old Homebrew, this method is now moved inside a class
|
|
|
|
def shutup
|
2014-12-14 20:07:02 +08:00
|
|
|
if ENV.has_key?('VERBOSE_TESTS')
|
2014-06-19 22:06:55 +08:00
|
|
|
yield
|
|
|
|
else
|
|
|
|
begin
|
|
|
|
tmperr = $stderr.clone
|
|
|
|
tmpout = $stdout.clone
|
|
|
|
$stderr.reopen '/dev/null', 'w'
|
|
|
|
$stdout.reopen '/dev/null', 'w'
|
|
|
|
yield
|
|
|
|
ensure
|
|
|
|
$stderr.reopen tmperr
|
|
|
|
$stdout.reopen tmpout
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-10-08 22:39:51 +08:00
|
|
|
# making homebrew's cache dir allows us to actually download Casks in tests
|
2012-10-14 05:17:27 +08:00
|
|
|
HOMEBREW_CACHE.mkpath
|
2014-02-05 22:42:36 +08:00
|
|
|
HOMEBREW_CACHE.join('Casks').mkpath
|
2012-10-14 05:17:27 +08:00
|
|
|
|
2012-10-14 03:39:00 +08:00
|
|
|
# must be called after testing_env so at_exit hooks are in proper order
|
|
|
|
require 'minitest/autorun'
|
2014-06-19 22:04:04 +08:00
|
|
|
# todo, re-enable minitest-colorize, broken under current test environment for unknown reasons
|
|
|
|
# require 'minitest-colorize'
|
2012-10-14 03:39:00 +08:00
|
|
|
|
2013-07-06 18:35:14 +08:00
|
|
|
# Force mocha to patch MiniTest since we have both loaded thanks to homebrew's testing_env
|
|
|
|
require 'mocha/api'
|
|
|
|
require 'mocha/integration/mini_test'
|
|
|
|
Mocha::Integration::MiniTest.activate
|
|
|
|
|
2012-10-14 03:39:00 +08:00
|
|
|
# our baby
|
2015-01-01 22:08:06 +08:00
|
|
|
require 'hbc'
|
2012-10-14 03:39:00 +08:00
|
|
|
|
2015-01-07 22:09:53 +08:00
|
|
|
# override Homebrew locations
|
|
|
|
Hbc.homebrew_prefix = Pathname.new(TEST_TMPDIR).join('prefix')
|
|
|
|
Hbc.homebrew_repository = Hbc.homebrew_prefix
|
|
|
|
Hbc.homebrew_tapspath = nil
|
|
|
|
|
2014-10-08 22:39:51 +08:00
|
|
|
# Look for Casks in testcasks by default. It is elsewhere required that
|
2014-05-06 21:37:17 +08:00
|
|
|
# the string "test" appear in the directory name.
|
2015-01-01 22:08:06 +08:00
|
|
|
Hbc.default_tap = 'caskroom/homebrew-testcasks'
|
2013-04-05 05:55:07 +08:00
|
|
|
|
2013-04-07 06:14:04 +08:00
|
|
|
# our own testy caskroom
|
2015-01-07 22:09:53 +08:00
|
|
|
Hbc.caskroom = Hbc.homebrew_prefix.join('TestCaskroom')
|
2013-04-07 06:14:04 +08:00
|
|
|
|
2012-11-22 05:51:03 +08:00
|
|
|
class TestHelper
|
2014-10-08 22:39:51 +08:00
|
|
|
# helpers for test Casks to reference local files easily
|
2014-09-15 23:01:44 +08:00
|
|
|
def self.local_binary_path(name)
|
|
|
|
File.expand_path(File.join(File.dirname(__FILE__), 'support', 'binaries', name))
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.local_binary_url(name)
|
|
|
|
'file://' + local_binary_path(name)
|
2012-11-22 05:51:03 +08:00
|
|
|
end
|
2012-11-25 10:13:57 +08:00
|
|
|
|
|
|
|
def self.test_cask
|
2015-01-01 22:08:06 +08:00
|
|
|
Hbc.load('basic-cask')
|
2012-11-25 10:13:57 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
def self.fake_fetcher
|
2015-01-01 22:08:06 +08:00
|
|
|
Hbc::FakeFetcher
|
2012-11-25 10:13:57 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
def self.fake_response_for(*args)
|
2015-01-01 22:08:06 +08:00
|
|
|
Hbc::FakeFetcher.fake_response_for(*args)
|
2012-11-25 10:13:57 +08:00
|
|
|
end
|
2013-04-08 01:46:35 +08:00
|
|
|
|
|
|
|
def self.must_output(test, lambda, expected)
|
|
|
|
out, err = test.capture_subprocess_io do
|
|
|
|
lambda.call
|
|
|
|
end
|
|
|
|
|
2013-04-29 00:08:54 +08:00
|
|
|
if expected.is_a? Regexp
|
|
|
|
(out+err).chomp.must_match expected
|
|
|
|
else
|
|
|
|
(out+err).chomp.must_equal expected.gsub(/^ */, '')
|
|
|
|
end
|
2013-04-08 01:46:35 +08:00
|
|
|
end
|
2013-04-05 12:49:43 +08:00
|
|
|
|
|
|
|
def self.valid_alias?(candidate)
|
|
|
|
return false unless candidate.symlink?
|
|
|
|
candidate.readlink.exist?
|
|
|
|
end
|
2013-09-23 22:32:46 +08:00
|
|
|
|
|
|
|
def self.install_without_artifacts(cask)
|
2015-01-01 22:08:06 +08:00
|
|
|
Hbc::Installer.new(cask).tap do |i|
|
2014-09-25 21:05:21 +08:00
|
|
|
shutup do
|
|
|
|
i.download
|
|
|
|
i.extract_primary_container
|
|
|
|
end
|
2013-09-23 22:32:46 +08:00
|
|
|
end
|
|
|
|
end
|
2012-11-25 10:13:57 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
require 'support/fake_fetcher'
|
2013-11-30 00:58:46 +08:00
|
|
|
require 'support/fake_dirs'
|
2013-04-29 02:56:26 +08:00
|
|
|
require 'support/fake_system_command'
|
2013-05-12 12:30:28 +08:00
|
|
|
require 'support/cleanup'
|
2013-10-25 03:52:55 +08:00
|
|
|
require 'support/never_sudo_system_command'
|
2013-06-13 03:09:16 +08:00
|
|
|
require 'tmpdir'
|
2013-10-25 03:52:55 +08:00
|
|
|
require 'tempfile'
|
2012-11-25 10:13:57 +08:00
|
|
|
|
2014-10-08 22:39:51 +08:00
|
|
|
# pretend like we installed the homebrew-cask tap
|
2012-11-22 05:51:03 +08:00
|
|
|
project_root = Pathname.new(File.expand_path("#{File.dirname(__FILE__)}/../"))
|
2015-01-07 22:09:53 +08:00
|
|
|
taps_dest = Hbc.homebrew_prefix.join(*%w{Library Taps caskroom})
|
2012-11-22 05:51:03 +08:00
|
|
|
|
2014-02-02 01:20:28 +08:00
|
|
|
# create directories
|
2014-04-26 01:01:32 +08:00
|
|
|
FileUtils.mkdir_p taps_dest
|
2015-01-07 22:09:53 +08:00
|
|
|
FileUtils.mkdir_p Hbc.homebrew_prefix.join('bin')
|
2012-11-22 05:51:03 +08:00
|
|
|
|
2014-12-27 00:06:11 +08:00
|
|
|
FileUtils.ln_s project_root, taps_dest.join('homebrew-cask')
|
2012-11-22 05:51:03 +08:00
|
|
|
|
2014-10-08 22:39:51 +08:00
|
|
|
# Common superclass for test Casks for when we need to filter them out
|
2015-02-08 05:56:06 +08:00
|
|
|
module Hbc
|
|
|
|
class TestCask < Cask; end
|
|
|
|
end
|
2013-04-08 03:28:42 +08:00
|
|
|
|
2014-02-02 01:20:28 +08:00
|
|
|
# jack in some optional utilities
|
2015-01-07 22:09:53 +08:00
|
|
|
FileUtils.ln_s '/usr/local/bin/cabextract', Hbc.homebrew_prefix.join('bin/cabextract')
|
|
|
|
FileUtils.ln_s '/usr/local/bin/unar', Hbc.homebrew_prefix.join('bin/unar')
|
|
|
|
FileUtils.ln_s '/usr/local/bin/lsar', Hbc.homebrew_prefix.join('bin/lsar')
|
2014-02-02 01:20:28 +08:00
|
|
|
|
2014-10-08 22:39:51 +08:00
|
|
|
# also jack in some test Casks
|
2014-12-27 00:06:11 +08:00
|
|
|
FileUtils.ln_s project_root.join('test', 'support'), taps_dest.join('homebrew-testcasks')
|