mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00

These definitions are scattered throughout the codebase which makes it hard to refactor them later (my goal is to move them outside of HOMEBREW_LIBRARY). Unify their definitions for clearer code and easier movement later.
55 lines
941 B
Ruby
55 lines
941 B
Ruby
require "testing_env"
|
|
require "formula_pin"
|
|
|
|
class FormulaPinTests < Homebrew::TestCase
|
|
class FormulaDouble
|
|
def name
|
|
"double"
|
|
end
|
|
|
|
def rack
|
|
HOMEBREW_CELLAR/name
|
|
end
|
|
|
|
def installed_prefixes
|
|
rack.directory? ? rack.subdirs : []
|
|
end
|
|
|
|
def installed_kegs
|
|
installed_prefixes.map { |d| Keg.new d }
|
|
end
|
|
end
|
|
|
|
def setup
|
|
@f = FormulaDouble.new
|
|
@pin = FormulaPin.new(@f)
|
|
@f.rack.mkpath
|
|
end
|
|
|
|
def test_not_pinnable
|
|
refute_predicate @pin, :pinnable?
|
|
end
|
|
|
|
def test_pinnable_if_kegs_exist
|
|
(@f.rack/"0.1").mkpath
|
|
assert_predicate @pin, :pinnable?
|
|
end
|
|
|
|
def test_unpin
|
|
(@f.rack/"0.1").mkpath
|
|
@pin.pin
|
|
|
|
assert_predicate @pin, :pinned?
|
|
assert_equal 1, HOMEBREW_PINNED_KEGS.children.length
|
|
|
|
@pin.unpin
|
|
|
|
refute_predicate @pin, :pinned?
|
|
refute_predicate HOMEBREW_PINNED_KEGS, :directory?
|
|
end
|
|
|
|
def teardown
|
|
@f.rack.rmtree
|
|
end
|
|
end
|