From a6c3ba7d8602d6e03d2abd318102d83b98460fd0 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Fri, 21 Oct 2016 11:52:32 +0200 Subject: [PATCH 1/3] Use `test/lib/config` for tests. --- Library/Homebrew/cask/test/test_helper.rb | 52 ++++++----------------- 1 file changed, 14 insertions(+), 38 deletions(-) diff --git a/Library/Homebrew/cask/test/test_helper.rb b/Library/Homebrew/cask/test/test_helper.rb index de18a2869c..b86ef59fae 100644 --- a/Library/Homebrew/cask/test/test_helper.rb +++ b/Library/Homebrew/cask/test/test_helper.rb @@ -2,20 +2,16 @@ require "bundler" require "bundler/setup" require "pathname" -if ENV["HOMEBREW_TESTS_COVERAGE"] - require "simplecov" -end - -project_root = Pathname.new(File.expand_path("../..", __FILE__)) -tap_root = Pathname.new(ENV["HOMEBREW_LIBRARY"]).join("Taps", "caskroom", "homebrew-cask") +require "simplecov" if ENV["HOMEBREW_TESTS_COVERAGE"] # 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/lib")) require "global" # add Homebrew-Cask to load path -$LOAD_PATH.push(project_root.join("lib").to_s) +$LOAD_PATH.push(HOMEBREW_LIBRARY_PATH.join("cask", "lib").to_s) require "test/helper/env" require "test/helper/shutup" @@ -23,12 +19,7 @@ include Test::Helper::Env include Test::Helper::Shutup def sudo(*args) - %w[/usr/bin/sudo -E --] + Array(args).flatten -end - -TEST_TMPDIR = Dir.mktmpdir("homebrew_cask_tests") -at_exit do - FileUtils.remove_entry(TEST_TMPDIR) + %w[/usr/bin/sudo -E --] + args.flatten end # must be called after testing_env so at_exit hooks are in proper order @@ -46,30 +37,20 @@ Mocha::Integration::MiniTest.activate # our baby require "hbc" -# override Homebrew locations -Hbc.homebrew_prefix = Pathname.new(TEST_TMPDIR).join("prefix") -Hbc.homebrew_repository = Hbc.homebrew_prefix - -# Override Tap::TAP_DIRECTORY to use our test Tap directory. -class Tap - send(:remove_const, :TAP_DIRECTORY) - TAP_DIRECTORY = Hbc.homebrew_prefix.join("Library", "Taps") +module Hbc + class TestCask < Cask; end end -Hbc.default_tap = Tap.fetch("caskroom", "testcasks") - -# also jack in some test Casks -FileUtils.ln_s project_root.join("test", "support"), Tap::TAP_DIRECTORY.join("caskroom").tap(&:mkpath).join("homebrew-testcasks") +Hbc.cache.mkpath +Hbc.caskroom.mkpath +Hbc.default_tap = Tap.fetch("caskroom", "test").tap do |tap| + # link test casks + FileUtils.mkdir_p tap.path.dirname + FileUtils.ln_s Pathname.new(__FILE__).dirname.join("support"), tap.path +end # pretend that the caskroom/cask Tap is installed -FileUtils.ln_s tap_root, Tap::TAP_DIRECTORY.join("caskroom").tap(&:mkpath).join("homebrew-cask") - -# create cache directory -Hbc.homebrew_cache = Pathname.new(TEST_TMPDIR).join("cache") -Hbc.cache.mkpath - -# our own testy caskroom -Hbc.caskroom = Hbc.homebrew_prefix.join("TestCaskroom") +FileUtils.ln_s HOMEBREW_LIBRARY.join("Taps", "caskroom", "homebrew-cask"), Tap.fetch("caskroom", "cask").path class TestHelper # helpers for test Casks to reference local files easily @@ -138,8 +119,3 @@ require "support/cleanup" require "support/never_sudo_system_command" require "tmpdir" require "tempfile" - -# Common superclass for test Casks for when we need to filter them out -module Hbc - class TestCask < Cask; end -end From 40a197f216f882ef04c6f66bf6cb8dd421703d16 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Fri, 21 Oct 2016 17:01:37 +0200 Subject: [PATCH 2/3] Remove `test_cask`, `fake_fetcher`, and `fake_response_for` methods. --- Library/Homebrew/cask/test/cask/url_checker_test.rb | 12 +++++++----- Library/Homebrew/cask/test/test_helper.rb | 12 ------------ 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/Library/Homebrew/cask/test/cask/url_checker_test.rb b/Library/Homebrew/cask/test/cask/url_checker_test.rb index 2dfed62d3e..6871b42155 100644 --- a/Library/Homebrew/cask/test/cask/url_checker_test.rb +++ b/Library/Homebrew/cask/test/cask/url_checker_test.rb @@ -3,15 +3,17 @@ require "test_helper" describe Hbc::UrlChecker do describe "request processing" do it "adds an error if response is empty" do - cask = TestHelper.test_cask - TestHelper.fake_response_for(cask.url, "") - checker = Hbc::UrlChecker.new(cask, TestHelper.fake_fetcher) + cask = Hbc.load("basic-cask") + Hbc::FakeFetcher.fake_response_for(cask.url, "") + checker = Hbc::UrlChecker.new(cask, Hbc::FakeFetcher) checker.run checker.errors.must_include "timeout while requesting #{cask.url}" end it "properly populates the response code and headers from an http response" do - TestHelper.fake_response_for(TestHelper.test_cask.url, <<-EOS.undent) + cask = Hbc.load("basic-cask") + + Hbc::FakeFetcher.fake_response_for(cask.url, <<-EOS.undent) HTTP/1.1 200 OK Content-Type: application/x-apple-diskimage ETag: "b4208f3e84967be4b078ecaa03fba941" @@ -19,7 +21,7 @@ describe Hbc::UrlChecker do Last-Modified: Sun, 12 Aug 2012 21:17:21 GMT EOS - checker = Hbc::UrlChecker.new(TestHelper.test_cask, TestHelper.fake_fetcher) + checker = Hbc::UrlChecker.new(cask, Hbc::FakeFetcher) checker.run checker.response_status.must_equal "HTTP/1.1 200 OK" checker.headers.must_equal("Content-Type" => "application/x-apple-diskimage", diff --git a/Library/Homebrew/cask/test/test_helper.rb b/Library/Homebrew/cask/test/test_helper.rb index b86ef59fae..67d2c698d9 100644 --- a/Library/Homebrew/cask/test/test_helper.rb +++ b/Library/Homebrew/cask/test/test_helper.rb @@ -62,18 +62,6 @@ class TestHelper "file://" + local_binary_path(name) end - def self.test_cask - @test_cask ||= Hbc.load("basic-cask") - end - - def self.fake_fetcher - Hbc::FakeFetcher - end - - def self.fake_response_for(*args) - Hbc::FakeFetcher.fake_response_for(*args) - end - def self.valid_alias?(candidate) return false unless candidate.symlink? candidate.readlink.exist? From 7016d714ab2c06d0338a814bbdb4b696a2cb5101 Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Fri, 21 Oct 2016 16:54:45 +0200 Subject: [PATCH 3/3] Bring `spec_helper` in line with `test_helper`. --- Library/Homebrew/cask/spec/spec_helper.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/cask/spec/spec_helper.rb b/Library/Homebrew/cask/spec/spec_helper.rb index b71e1ecaeb..1e41e3de43 100644 --- a/Library/Homebrew/cask/spec/spec_helper.rb +++ b/Library/Homebrew/cask/spec/spec_helper.rb @@ -31,11 +31,11 @@ Hbc.appdir = Pathname.new(TEST_TMPDIR).join("Applications").tap(&:mkpath) Hbc.cache.mkpath Hbc.caskroom.mkpath Hbc.default_tap = Tap.fetch("caskroom", "spec").tap do |tap| - tap.path.dirname.mkpath + # link test casks + FileUtils.mkdir_p tap.path.dirname + FileUtils.ln_s Pathname.new(__FILE__).dirname.join("support"), tap.path end -FileUtils.ln_s Pathname.new(__FILE__).dirname.join("support"), Hbc.default_tap.path - RSpec.configure do |config| config.order = :random config.include(Test::Helper::Env)