aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/test_compiler_selector.rb
diff options
context:
space:
mode:
authorJack Nagel2013-04-01 12:56:56 -0500
committerJack Nagel2013-04-02 13:19:04 -0500
commit2f49fd07b14875e7fad02ee8b8ac93af87ff7f72 (patch)
tree02034d92d10a7d9933c8e557a184372926a1b2f2 /Library/Homebrew/test/test_compiler_selector.rb
parentc679e557ba735b932eee7c37facf6ec147c265d0 (diff)
downloadbrew-2f49fd07b14875e7fad02ee8b8ac93af87ff7f72.tar.bz2
Isolate compiler selector tests
Diffstat (limited to 'Library/Homebrew/test/test_compiler_selector.rb')
-rw-r--r--Library/Homebrew/test/test_compiler_selector.rb89
1 files changed, 89 insertions, 0 deletions
diff --git a/Library/Homebrew/test/test_compiler_selector.rb b/Library/Homebrew/test/test_compiler_selector.rb
new file mode 100644
index 000000000..6e3a36366
--- /dev/null
+++ b/Library/Homebrew/test/test_compiler_selector.rb
@@ -0,0 +1,89 @@
+require 'testing_env'
+require 'compilers'
+
+class CompilerSelectorTests < Test::Unit::TestCase
+ class Double
+ def initialize
+ @failures = []
+ end
+
+ def <<(cc)
+ @failures << cc
+ end
+
+ def fails_with?(cc)
+ return false if cc.nil?
+ @failures.include?(cc.name)
+ end
+ end
+
+ def setup
+ MacOS.stubs(:gcc_build_version).returns(5666)
+ MacOS.stubs(:llvm_build_version).returns(2336)
+ MacOS.stubs(:clang_build_version).returns(425)
+ @f = Double.new
+ @cc = :clang
+ end
+
+ def actual_cc
+ CompilerSelector.new(@f, @cc).compiler
+ end
+
+ def test_all_compiler_failures
+ @f << :clang << :llvm << :gcc
+ assert_equal @cc, actual_cc
+ end
+
+ def test_no_compiler_failures
+ assert_equal @cc, actual_cc
+ end
+
+ def test_fails_with_clang
+ @f << :clang
+ assert_equal :llvm, actual_cc
+ end
+
+ def test_fails_with_llvm
+ @f << :llvm
+ assert_equal :clang, actual_cc
+ end
+
+ def test_fails_with_gcc
+ @f << :gcc
+ assert_equal :clang, actual_cc
+ end
+
+ def test_mixed_failures_1
+ @f << :clang << :llvm
+ assert_equal :gcc, actual_cc
+ end
+
+ def test_mixed_failures_2
+ @f << :gcc << :clang
+ assert_equal :llvm, actual_cc
+ end
+
+ def test_mixed_failures_3
+ @f << :llvm << :gcc
+ assert_equal :clang, actual_cc
+ end
+
+ def test_older_clang_precedence
+ MacOS.stubs(:clang_build_version).returns(211)
+ @f << :gcc
+ assert_equal :llvm, actual_cc
+ end
+
+ def test_missing_gcc
+ MacOS.stubs(:gcc_build_version).returns(nil)
+ @f << :clang << :llvm
+ assert_equal @cc, actual_cc
+ end
+
+ def test_missing_llvm_and_gcc
+ MacOS.stubs(:gcc_build_version).returns(nil)
+ MacOS.stubs(:llvm_build_version).returns(nil)
+ @f << :clang
+ assert_equal @cc, actual_cc
+ end
+end