| 
									
										
										
										
											2013-04-02 10:37:59 -05:00
										 |  |  | require 'testing_env' | 
					
						
							|  |  |  | require 'test/testball' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 20:32:51 -05:00
										 |  |  | class FailsWithTests < Homebrew::TestCase | 
					
						
							| 
									
										
										
										
											2013-04-02 10:37:59 -05:00
										 |  |  |   def assert_fails_with(cc) | 
					
						
							|  |  |  |     assert @f.new.fails_with?(cc) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def assert_does_not_fail_with(cc) | 
					
						
							|  |  |  |     assert !@f.new.fails_with?(cc) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def fails_with(*args, &block) | 
					
						
							| 
									
										
										
										
											2014-06-12 21:47:36 -05:00
										 |  |  |     @f.fails_with(*args, &block) | 
					
						
							| 
									
										
										
										
											2013-04-02 10:37:59 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-12 23:12:15 -05:00
										 |  |  |   def build_cc(name, version) | 
					
						
							|  |  |  |     Compiler.new(name, version) | 
					
						
							| 
									
										
										
										
											2013-04-02 10:37:59 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def setup | 
					
						
							|  |  |  |     @f = Class.new(TestBall) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_fails_with_symbol | 
					
						
							|  |  |  |     fails_with :clang | 
					
						
							|  |  |  |     cc = build_cc(:clang, 425) | 
					
						
							|  |  |  |     assert_fails_with cc | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_fails_with_build | 
					
						
							|  |  |  |     fails_with(:clang) { build 211 } | 
					
						
							|  |  |  |     cc = build_cc(:clang, 318) | 
					
						
							|  |  |  |     assert_does_not_fail_with cc | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_fails_with_block_without_build | 
					
						
							|  |  |  |     fails_with(:clang) { } | 
					
						
							|  |  |  |     cc = build_cc(:clang, 425) | 
					
						
							|  |  |  |     assert_fails_with cc | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-28 01:38:09 -05:00
										 |  |  |   def test_non_apple_gcc_version | 
					
						
							| 
									
										
										
										
											2013-09-28 12:21:16 -07:00
										 |  |  |     fails_with(:gcc => '4.8') | 
					
						
							| 
									
										
										
										
											2013-12-12 14:53:53 -06:00
										 |  |  |     assert_fails_with build_cc("gcc-4.8", "4.8") | 
					
						
							|  |  |  |     assert_fails_with build_cc("gcc-4.8", "4.8.1") | 
					
						
							| 
									
										
										
										
											2013-06-28 01:38:09 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-02 10:37:59 -05:00
										 |  |  |   def test_multiple_failures | 
					
						
							|  |  |  |     fails_with(:llvm) | 
					
						
							|  |  |  |     fails_with(:clang) | 
					
						
							|  |  |  |     gcc = build_cc(:gcc, 5666) | 
					
						
							|  |  |  |     llvm = build_cc(:llvm, 2336) | 
					
						
							|  |  |  |     clang = build_cc(:clang, 425) | 
					
						
							|  |  |  |     assert_fails_with llvm | 
					
						
							|  |  |  |     assert_fails_with clang | 
					
						
							|  |  |  |     assert_does_not_fail_with gcc | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2013-12-12 14:53:53 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def test_fails_with_version | 
					
						
							|  |  |  |     fails_with(:gcc => '4.8') { version '4.8.1' } | 
					
						
							|  |  |  |     assert_fails_with build_cc("gcc-4.8", "4.8") | 
					
						
							|  |  |  |     assert_fails_with build_cc("gcc-4.8", "4.8.1") | 
					
						
							|  |  |  |     assert_does_not_fail_with build_cc("gcc-4.8", "4.8.2") | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2013-04-02 10:37:59 -05:00
										 |  |  | end |