From e2e5839a9a9d12c7b801593445b3b8c144bd4063 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Sun, 29 Jun 2014 00:55:56 -0500 Subject: [PATCH] Get the Tab class under test --- Library/Homebrew/test/fixtures/receipt.json | 17 ++++ Library/Homebrew/test/test_tab.rb | 87 +++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 Library/Homebrew/test/fixtures/receipt.json create mode 100644 Library/Homebrew/test/test_tab.rb diff --git a/Library/Homebrew/test/fixtures/receipt.json b/Library/Homebrew/test/fixtures/receipt.json new file mode 100644 index 0000000000..955d56b47f --- /dev/null +++ b/Library/Homebrew/test/fixtures/receipt.json @@ -0,0 +1,17 @@ +{ + "used_options": [ + "--with-foo", + "--without-bar" + ], + "unused_options": [ + "--with-baz", + "--without-qux" + ], + "built_as_bottle": false, + "poured_from_bottle": true, + "tapped_from": "Homebrew/homebrew", + "time": 1403827774, + "HEAD": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef", + "stdlib": "libcxx", + "compiler": "clang" +} diff --git a/Library/Homebrew/test/test_tab.rb b/Library/Homebrew/test/test_tab.rb new file mode 100644 index 0000000000..4cc00818a4 --- /dev/null +++ b/Library/Homebrew/test/test_tab.rb @@ -0,0 +1,87 @@ +require "testing_env" +require "tab" + +class TabTests < Homebrew::TestCase + def setup + @used, @unused = Options.new, Options.new + @used << Option.new("with-foo") << Option.new("without-bar") + @unused << Option.new("with-baz") << Option.new("without-qux") + + @tab = Tab.new({ + :used_options => @used, + :unused_options => @unused, + :build_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 + assert_empty tab.options + refute tab.built_as_bottle + refute 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? + refute_predicate @tab, :universal? + @used << "universal" + assert_predicate @tab, :universal? + end + + def test_options + assert_equal (@used + @unused).to_a, @tab.options.to_a + 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.to_a, tab.used_options.to_a + assert_equal @unused.to_a, tab.unused_options.to_a + assert_equal (@used + @unused).to_a, tab.options.to_a + 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 +end