aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/support
diff options
context:
space:
mode:
authorMarkus Reiter2016-11-13 21:31:53 +0100
committerMarkus Reiter2016-11-16 23:52:38 +0100
commit9d82acbf30e9a5d0eb06be9726803d362e2fa91e (patch)
tree0e45d668526b3ee5130237f669f7d5dbd53d9c1d /Library/Homebrew/test/support
parent7b9fd538fabf450203c0120f996403e24bd02071 (diff)
downloadbrew-9d82acbf30e9a5d0eb06be9726803d362e2fa91e.tar.bz2
Separate `Homebrew::TestCase` from `testing_env`.
Diffstat (limited to 'Library/Homebrew/test/support')
-rw-r--r--Library/Homebrew/test/support/helper/fs_leak_logger.rb27
-rw-r--r--Library/Homebrew/test/support/helper/test_case.rb64
-rw-r--r--Library/Homebrew/test/support/helper/version_assertions.rb23
3 files changed, 114 insertions, 0 deletions
diff --git a/Library/Homebrew/test/support/helper/fs_leak_logger.rb b/Library/Homebrew/test/support/helper/fs_leak_logger.rb
new file mode 100644
index 000000000..f6a02dbc0
--- /dev/null
+++ b/Library/Homebrew/test/support/helper/fs_leak_logger.rb
@@ -0,0 +1,27 @@
+module Test
+ module Helper
+ module FSLeakLogger
+ def self.included(klass)
+ require "find"
+ logdir = HOMEBREW_LIBRARY_PATH.join("tmp")
+ logdir.mkdir unless logdir.directory?
+ @@log = File.open(logdir.join("fs_leak.log"), "w")
+ klass.make_my_diffs_pretty!
+ end
+
+ def before_setup
+ @__files_before_test = []
+ Find.find(TEST_TMPDIR) { |f| @__files_before_test << f.sub(TEST_TMPDIR, "") }
+ super
+ end
+
+ def after_teardown
+ super
+ files_after_test = []
+ Find.find(TEST_TMPDIR) { |f| files_after_test << f.sub(TEST_TMPDIR, "") }
+ return if @__files_before_test == files_after_test
+ @@log.puts location, diff(@__files_before_test, files_after_test)
+ end
+ end
+ end
+end
diff --git a/Library/Homebrew/test/support/helper/test_case.rb b/Library/Homebrew/test/support/helper/test_case.rb
new file mode 100644
index 000000000..60c91e7bb
--- /dev/null
+++ b/Library/Homebrew/test/support/helper/test_case.rb
@@ -0,0 +1,64 @@
+module Homebrew
+ class TestCase < ::Minitest::Test
+ require "test/support/helper/env"
+ require "test/support/helper/fs_leak_logger"
+ require "test/support/helper/shutup"
+ require "test/support/helper/version_assertions"
+ include Test::Helper::Env
+ include Test::Helper::FSLeakLogger
+ include Test::Helper::Shutup
+ include Test::Helper::VersionAssertions
+
+ TEST_SHA1 = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef".freeze
+ TEST_SHA256 = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef".freeze
+
+ def formula(name = "formula_name", path = Formulary.core_path(name), spec = :stable, alias_path: nil, &block)
+ @_f = Class.new(Formula, &block).new(name, path, spec, alias_path: alias_path)
+ end
+
+ def mktmpdir(prefix_suffix = nil, &block)
+ Dir.mktmpdir(prefix_suffix, HOMEBREW_TEMP, &block)
+ end
+
+ def needs_compat
+ skip "Requires compat/ code" if ENV["HOMEBREW_NO_COMPAT"]
+ end
+
+ def needs_python
+ skip "Requires Python" unless which("python")
+ end
+
+ def assert_nothing_raised
+ yield
+ end
+
+ def assert_eql(exp, act, msg = nil)
+ msg = message(msg, "") { diff exp, act }
+ assert exp.eql?(act), msg
+ end
+
+ def refute_eql(exp, act, msg = nil)
+ msg = message(msg) do
+ "Expected #{mu_pp(act)} to not be eql to #{mu_pp(exp)}"
+ end
+ refute exp.eql?(act), msg
+ end
+
+ def dylib_path(name)
+ Pathname.new("#{TEST_FIXTURE_DIR}/mach/#{name}.dylib")
+ end
+
+ def bundle_path(name)
+ Pathname.new("#{TEST_FIXTURE_DIR}/mach/#{name}.bundle")
+ end
+
+ # Use a stubbed {Formulary::FormulaLoader} to make a given formula be found
+ # when loading from {Formulary} with `ref`.
+ def stub_formula_loader(formula, ref = formula.full_name)
+ loader = mock
+ loader.stubs(:get_formula).returns(formula)
+ Formulary.stubs(:loader_for).with(ref, from: :keg).returns(loader)
+ Formulary.stubs(:loader_for).with(ref, from: nil).returns(loader)
+ end
+ end
+end
diff --git a/Library/Homebrew/test/support/helper/version_assertions.rb b/Library/Homebrew/test/support/helper/version_assertions.rb
new file mode 100644
index 000000000..dc240d643
--- /dev/null
+++ b/Library/Homebrew/test/support/helper/version_assertions.rb
@@ -0,0 +1,23 @@
+require "rubygems"
+
+module Test
+ module Helper
+ module VersionAssertions
+ def version(v)
+ Version.create(v)
+ end
+
+ def assert_version_equal(expected, actual)
+ assert_equal Version.create(expected), actual
+ end
+
+ def assert_version_detected(expected, url, specs = {})
+ assert_equal expected, Version.detect(url, specs).to_s
+ end
+
+ def assert_version_nil(url)
+ assert Version.parse(url).null?
+ end
+ end
+ end
+end