diff options
| author | Jack Nagel | 2012-04-14 13:17:22 -0500 |
|---|---|---|
| committer | Jack Nagel | 2012-04-14 15:27:45 -0500 |
| commit | 1d0be89fa5bbe9aa07fcacad0c369437553129fc (patch) | |
| tree | edc0ce790da6569a05f544fcbb8ab80d692c59c3 /Library/Homebrew/test/test_compilers.rb | |
| parent | d4f757718505b080ef3bd60fbf9ab7a751453e9a (diff) | |
| download | brew-1d0be89fa5bbe9aa07fcacad0c369437553129fc.tar.bz2 | |
tests: reorganize compiler selection tests
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Diffstat (limited to 'Library/Homebrew/test/test_compilers.rb')
| -rw-r--r-- | Library/Homebrew/test/test_compilers.rb | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/Library/Homebrew/test/test_compilers.rb b/Library/Homebrew/test/test_compilers.rb new file mode 100644 index 000000000..7ad6f2df7 --- /dev/null +++ b/Library/Homebrew/test/test_compilers.rb @@ -0,0 +1,143 @@ +require 'testing_env' + +require 'extend/ARGV' # needs to be after test/unit to avoid conflict with OptionsParser +ARGV.extend(HomebrewArgvExtension) + +require 'extend/ENV' +ENV.extend(HomebrewEnvExtension) + +require 'test/testball' + +module CompilerTestsEnvExtension + def unset_use_cc + vars = %w{HOMEBREW_USE_CLANG HOMEBREW_USE_LLVM HOMEBREW_USE_GCC} + vars.each { |v| ENV.delete(v) } + end +end +ENV.extend(CompilerTestsEnvExtension) + +class CompilerTests < Test::Unit::TestCase + def test_llvm_failure + ENV.unset_use_cc + f = TestLLVMFailure.new + cs = CompilerSelector.new(f) + + assert !(f.fails_with? :clang) + assert f.fails_with? :llvm + assert !(f.fails_with? :gcc) + + cs.select_compiler + + assert_equal case MacOS.clang_build_version + when 0..210 then :gcc + else :clang + end, ENV.compiler + + ENV.send MacOS.default_compiler + end + + def test_all_compiler_failures + ENV.unset_use_cc + f = TestAllCompilerFailures.new + cs = CompilerSelector.new(f) + + assert f.fails_with? :clang + assert f.fails_with? :llvm + assert f.fails_with? :gcc + + cs.select_compiler + + assert_equal MacOS.default_compiler, ENV.compiler + + ENV.send MacOS.default_compiler + end + + def test_no_compiler_failures + ENV.unset_use_cc + f = TestNoCompilerFailures.new + cs = CompilerSelector.new(f) + + assert !(f.fails_with? :clang) + assert !(f.fails_with? :llvm) + assert case MacOS.gcc_42_build_version + when 0 then f.fails_with? :gcc + else !(f.fails_with? :gcc) + end + + cs.select_compiler + + assert_equal MacOS.default_compiler, ENV.compiler + + ENV.send MacOS.default_compiler + end + + def test_mixed_compiler_failures + ENV.unset_use_cc + f = TestMixedCompilerFailures.new + cs = CompilerSelector.new(f) + + assert f.fails_with? :clang + assert !(f.fails_with? :llvm) + assert f.fails_with? :gcc + + cs.select_compiler + + assert_equal :llvm, ENV.compiler + + ENV.send MacOS.default_compiler + end + + def test_more_mixed_compiler_failures + ENV.unset_use_cc + f = TestMoreMixedCompilerFailures.new + cs = CompilerSelector.new(f) + + assert !(f.fails_with? :clang) + assert f.fails_with? :llvm + assert f.fails_with? :gcc + + cs.select_compiler + + assert_equal :clang, ENV.compiler + + ENV.send MacOS.default_compiler + end + + def test_even_more_mixed_compiler_failures + ENV.unset_use_cc + f = TestEvenMoreMixedCompilerFailures.new + cs = CompilerSelector.new(f) + + assert f.fails_with? :clang + assert f.fails_with? :llvm + assert case MacOS.gcc_42_build_version + when 0 then f.fails_with? :gcc + else !(f.fails_with? :gcc) + end + + cs.select_compiler + + assert_equal case MacOS.clang_build_version + when 0..210 then :gcc + else :clang + end, ENV.compiler + + ENV.send MacOS.default_compiler + end + + def test_block_with_no_build_compiler_failures + ENV.unset_use_cc + f = TestBlockWithoutBuildCompilerFailure.new + cs = CompilerSelector.new(f) + + assert f.fails_with? :clang + assert !(f.fails_with? :llvm) + assert !(f.fails_with? :gcc) + + cs.select_compiler + + assert_equal MacOS.default_compiler, ENV.compiler + + ENV.send MacOS.default_compiler + end +end |
