2016-08-18 22:11:42 +03:00
|
|
|
require "pathname"
|
|
|
|
require "rspec/its"
|
|
|
|
require "rspec/wait"
|
|
|
|
|
2016-08-21 07:51:25 +02:00
|
|
|
if ENV["HOMEBREW_TESTS_COVERAGE"]
|
|
|
|
require "simplecov"
|
2016-08-18 22:11:42 +03:00
|
|
|
end
|
|
|
|
|
|
|
|
# add Homebrew to load path
|
2016-09-20 15:11:33 +02:00
|
|
|
$LOAD_PATH.unshift(File.expand_path("#{ENV["HOMEBREW_REPOSITORY"]}/Library/Homebrew"))
|
2016-10-24 22:53:25 +02:00
|
|
|
$LOAD_PATH.unshift(File.expand_path("#{ENV["HOMEBREW_REPOSITORY"]}/Library/Homebrew/test/support/lib"))
|
2016-08-18 22:11:42 +03:00
|
|
|
|
|
|
|
require "global"
|
|
|
|
|
|
|
|
# add Homebrew-Cask to load path
|
2016-10-19 23:01:52 +02:00
|
|
|
$LOAD_PATH.push(HOMEBREW_LIBRARY_PATH.join("cask", "lib").to_s)
|
2016-08-18 22:11:42 +03:00
|
|
|
|
2016-10-24 22:53:25 +02:00
|
|
|
require "test/support/helper/shutup"
|
2016-08-21 04:48:35 +02:00
|
|
|
|
2017-02-09 03:49:12 +01:00
|
|
|
Pathname.glob(HOMEBREW_LIBRARY_PATH.join("cask", "spec", "support", "**", "*.rb")).each(&method(:require))
|
2016-08-18 22:11:42 +03:00
|
|
|
|
|
|
|
require "hbc"
|
|
|
|
|
2016-10-19 23:01:52 +02:00
|
|
|
# create and override default directories
|
|
|
|
Hbc.appdir = Pathname.new(TEST_TMPDIR).join("Applications").tap(&:mkpath)
|
2016-08-18 22:11:42 +03:00
|
|
|
Hbc.cache.mkpath
|
2016-11-10 14:48:14 +01:00
|
|
|
Hbc.caskroom = Hbc.default_caskroom.tap(&:mkpath)
|
2016-10-19 23:01:52 +02:00
|
|
|
Hbc.default_tap = Tap.fetch("caskroom", "spec").tap do |tap|
|
2016-10-21 16:54:45 +02:00
|
|
|
# link test casks
|
|
|
|
FileUtils.mkdir_p tap.path.dirname
|
2016-12-06 16:36:34 +01:00
|
|
|
FileUtils.ln_s TEST_FIXTURE_DIR.join("cask"), tap.path
|
2016-10-19 23:01:52 +02:00
|
|
|
end
|
2016-08-18 22:11:42 +03:00
|
|
|
|
2017-02-08 12:29:33 +01:00
|
|
|
# pretend that the caskroom/cask Tap is installed
|
|
|
|
FileUtils.ln_s Pathname.new(ENV["HOMEBREW_LIBRARY"]).join("Taps", "caskroom", "homebrew-cask"), Tap.fetch("caskroom", "cask").path
|
|
|
|
|
2017-02-09 04:37:24 +01:00
|
|
|
HOMEBREW_CASK_DIRS = [
|
|
|
|
:appdir,
|
|
|
|
:caskroom,
|
|
|
|
:prefpanedir,
|
|
|
|
:qlplugindir,
|
|
|
|
:servicedir,
|
|
|
|
:binarydir,
|
|
|
|
].freeze
|
|
|
|
|
2016-08-18 22:11:42 +03:00
|
|
|
RSpec.configure do |config|
|
|
|
|
config.order = :random
|
2016-08-21 04:48:35 +02:00
|
|
|
config.include(Test::Helper::Shutup)
|
2017-02-08 13:25:10 +01:00
|
|
|
config.around(:each) do |example|
|
|
|
|
begin
|
2017-02-09 04:37:24 +01:00
|
|
|
@__dirs = HOMEBREW_CASK_DIRS.map { |dir|
|
|
|
|
Pathname.new(TEST_TMPDIR).join(dir.to_s).tap { |path|
|
|
|
|
path.mkpath
|
|
|
|
Hbc.public_send("#{dir}=", path)
|
|
|
|
}
|
|
|
|
}
|
2017-02-08 13:25:10 +01:00
|
|
|
|
|
|
|
@__argv = ARGV.dup
|
|
|
|
@__env = ENV.to_hash # dup doesn't work on ENV
|
|
|
|
|
|
|
|
example.run
|
|
|
|
ensure
|
|
|
|
ARGV.replace(@__argv)
|
|
|
|
ENV.replace(@__env)
|
|
|
|
|
2017-02-09 04:37:24 +01:00
|
|
|
FileUtils.rm_rf @__dirs.map(&:children)
|
2017-02-08 13:25:10 +01:00
|
|
|
end
|
2017-02-08 08:29:41 +01:00
|
|
|
end
|
2016-08-18 22:11:42 +03:00
|
|
|
end
|