mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
150 lines
3.9 KiB
Ruby
150 lines
3.9 KiB
Ruby
require "testing_env"
|
|
require "tab"
|
|
require "formula"
|
|
|
|
class TabTests < Homebrew::TestCase
|
|
def setup
|
|
@used = Options.create(%w(--with-foo --without-bar))
|
|
@unused = Options.create(%w(--with-baz --without-qux))
|
|
|
|
@tab = Tab.new({
|
|
:used_options => @used.as_flags,
|
|
:unused_options => @unused.as_flags,
|
|
:built_as_bottle => false,
|
|
:poured_from_bottle => true,
|
|
:tapped_from => "Homebrew/homebrew",
|
|
:time => nil,
|
|
:HEAD => TEST_SHA1,
|
|
:compiler => "clang",
|
|
:stdlib => "libcxx",
|
|
})
|
|
end
|
|
|
|
def test_defaults
|
|
tab = Tab.dummy_tab
|
|
assert_empty tab.unused_options
|
|
assert_empty tab.used_options
|
|
refute_predicate tab, :built_as_bottle
|
|
refute_predicate tab, :poured_from_bottle
|
|
assert_empty tab.tapped_from
|
|
assert_nil tab.time
|
|
assert_nil tab.HEAD
|
|
assert_equal MacOS.default_compiler, tab.cxxstdlib.compiler
|
|
assert_nil tab.cxxstdlib.type
|
|
end
|
|
|
|
def test_include?
|
|
assert_includes @tab, "with-foo"
|
|
assert_includes @tab, "without-bar"
|
|
end
|
|
|
|
def test_with?
|
|
assert @tab.with?("foo")
|
|
assert @tab.with?("qux")
|
|
refute @tab.with?("bar")
|
|
refute @tab.with?("baz")
|
|
end
|
|
|
|
def test_universal?
|
|
tab = Tab.new(:used_options => %w[--universal])
|
|
assert_predicate tab, :universal?
|
|
end
|
|
|
|
def test_cxxstdlib
|
|
assert_equal :clang, @tab.cxxstdlib.compiler
|
|
assert_equal :libcxx, @tab.cxxstdlib.type
|
|
end
|
|
|
|
def test_other_attributes
|
|
assert_equal TEST_SHA1, @tab.HEAD
|
|
assert_equal "Homebrew/homebrew", @tab.tapped_from
|
|
assert_nil @tab.time
|
|
refute_predicate @tab, :built_as_bottle
|
|
assert_predicate @tab, :poured_from_bottle
|
|
end
|
|
|
|
def test_from_file
|
|
path = Pathname.new(TEST_DIRECTORY).join("fixtures", "receipt.json")
|
|
tab = Tab.from_file(path)
|
|
|
|
assert_equal @used.sort, tab.used_options.sort
|
|
assert_equal @unused.sort, tab.unused_options.sort
|
|
refute_predicate tab, :built_as_bottle
|
|
assert_predicate tab, :poured_from_bottle
|
|
assert_equal "Homebrew/homebrew", tab.tapped_from
|
|
refute_nil tab.time
|
|
assert_equal TEST_SHA1, tab.HEAD
|
|
assert_equal :clang, tab.cxxstdlib.compiler
|
|
assert_equal :libcxx, tab.cxxstdlib.type
|
|
end
|
|
|
|
def test_to_json
|
|
tab = Tab.new(Utils::JSON.load(@tab.to_json))
|
|
assert_equal @tab.used_options.sort, tab.used_options.sort
|
|
assert_equal @tab.unused_options.sort, tab.unused_options.sort
|
|
assert_equal @tab.built_as_bottle, tab.built_as_bottle
|
|
assert_equal @tab.poured_from_bottle, tab.poured_from_bottle
|
|
assert_equal @tab.tapped_from, tab.tapped_from
|
|
assert_equal @tab.time, tab.time
|
|
assert_equal @tab.HEAD, tab.HEAD
|
|
assert_equal @tab.compiler, tab.compiler
|
|
assert_equal @tab.stdlib, tab.stdlib
|
|
end
|
|
end
|
|
|
|
class TabLoadingTests < Homebrew::TestCase
|
|
def setup
|
|
@f = formula { url "foo-1.0" }
|
|
@f.prefix.mkpath
|
|
@path = @f.prefix.join(Tab::FILENAME)
|
|
@path.write Pathname.new(TEST_DIRECTORY).join("fixtures", "receipt.json").read
|
|
end
|
|
|
|
def teardown
|
|
@f.rack.rmtree
|
|
end
|
|
|
|
def test_for_keg
|
|
tab = Tab.for_keg(@f.prefix)
|
|
assert_equal @path, tab.tabfile
|
|
end
|
|
|
|
def test_for_keg_nonexistent_path
|
|
@path.unlink
|
|
tab = Tab.for_keg(@f.prefix)
|
|
assert_nil tab.tabfile
|
|
end
|
|
|
|
def test_for_formula
|
|
tab = Tab.for_formula(@f)
|
|
assert_equal @path, tab.tabfile
|
|
end
|
|
|
|
def test_for_formula_nonexistent_path
|
|
@path.unlink
|
|
tab = Tab.for_formula(@f)
|
|
assert_nil tab.tabfile
|
|
end
|
|
|
|
def test_for_formula_multiple_kegs
|
|
f2 = formula { url "foo-2.0" }
|
|
f2.prefix.mkpath
|
|
|
|
assert_equal @f.rack, f2.rack
|
|
assert_equal 2, @f.rack.subdirs.length
|
|
|
|
tab = Tab.for_formula(@f)
|
|
assert_equal @path, tab.tabfile
|
|
end
|
|
|
|
def test_for_formula_outdated_keg
|
|
f2 = formula { url "foo-2.0" }
|
|
|
|
assert_equal @f.rack, f2.rack
|
|
assert_equal 1, @f.rack.subdirs.length
|
|
|
|
tab = Tab.for_formula(f2)
|
|
assert_equal @path, tab.tabfile
|
|
end
|
|
end
|