70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "pathname"
 | |
| require "rspec/its"
 | |
| require "rspec/wait"
 | |
| 
 | |
| if ENV["HOMEBREW_TESTS_COVERAGE"]
 | |
|   require "simplecov"
 | |
| end
 | |
| 
 | |
| # add Homebrew to load path
 | |
| $LOAD_PATH.unshift(File.expand_path("#{ENV["HOMEBREW_REPOSITORY"]}/Library/Homebrew"))
 | |
| $LOAD_PATH.unshift(File.expand_path("#{ENV["HOMEBREW_REPOSITORY"]}/Library/Homebrew/test/support/lib"))
 | |
| 
 | |
| require "global"
 | |
| 
 | |
| # add Homebrew-Cask to load path
 | |
| $LOAD_PATH.push(HOMEBREW_LIBRARY_PATH.join("cask", "lib").to_s)
 | |
| 
 | |
| require "test/support/helper/shutup"
 | |
| 
 | |
| Pathname.glob(HOMEBREW_LIBRARY_PATH.join("cask", "spec", "support", "**", "*.rb")).each(&method(:require))
 | |
| 
 | |
| require "hbc"
 | |
| 
 | |
| # create and override default directories
 | |
| Hbc.appdir = Pathname.new(TEST_TMPDIR).join("Applications").tap(&:mkpath)
 | |
| Hbc.cache.mkpath
 | |
| Hbc.caskroom = Hbc.default_caskroom.tap(&:mkpath)
 | |
| Hbc.default_tap = Tap.fetch("caskroom", "spec").tap do |tap|
 | |
|   # link test casks
 | |
|   FileUtils.mkdir_p tap.path.dirname
 | |
|   FileUtils.ln_s TEST_FIXTURE_DIR.join("cask"), tap.path
 | |
| end
 | |
| 
 | |
| # 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
 | |
| 
 | |
| HOMEBREW_CASK_DIRS = [
 | |
|   :appdir,
 | |
|   :caskroom,
 | |
|   :prefpanedir,
 | |
|   :qlplugindir,
 | |
|   :servicedir,
 | |
|   :binarydir,
 | |
| ].freeze
 | |
| 
 | |
| RSpec.configure do |config|
 | |
|   config.order = :random
 | |
|   config.include(Test::Helper::Shutup)
 | |
|   config.around(:each) do |example|
 | |
|     begin
 | |
|       @__dirs = HOMEBREW_CASK_DIRS.map { |dir|
 | |
|         Pathname.new(TEST_TMPDIR).join(dir.to_s).tap { |path|
 | |
|           path.mkpath
 | |
|           Hbc.public_send("#{dir}=", path)
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       @__argv = ARGV.dup
 | |
|       @__env = ENV.to_hash # dup doesn't work on ENV
 | |
| 
 | |
|       example.run
 | |
|     ensure
 | |
|       ARGV.replace(@__argv)
 | |
|       ENV.replace(@__env)
 | |
| 
 | |
|       FileUtils.rm_rf @__dirs.map(&:children)
 | |
|     end
 | |
|   end
 | |
| end
 | 
