| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  | require "testing_env" | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 20:32:51 -05:00
										 |  |  | class MachOPathnameTests < Homebrew::TestCase | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |   def test_fat_dylib | 
					
						
							| 
									
										
										
										
											2014-06-10 21:20:02 -05:00
										 |  |  |     pn = dylib_path("fat") | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     assert_predicate pn, :universal? | 
					
						
							|  |  |  |     refute_predicate pn, :i386? | 
					
						
							|  |  |  |     refute_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     assert_predicate pn, :dylib? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :text_executable? | 
					
						
							| 
									
										
										
										
											2014-06-04 16:31:57 -05:00
										 |  |  |     assert_equal :universal, pn.arch | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_i386_dylib | 
					
						
							| 
									
										
										
										
											2014-06-10 21:20:02 -05:00
										 |  |  |     pn = dylib_path("i386") | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate pn, :universal? | 
					
						
							|  |  |  |     assert_predicate pn, :i386? | 
					
						
							|  |  |  |     refute_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     assert_predicate pn, :dylib? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :text_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_bundle? | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_x86_64_dylib | 
					
						
							| 
									
										
										
										
											2014-06-10 21:20:02 -05:00
										 |  |  |     pn = dylib_path("x86_64") | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate pn, :universal? | 
					
						
							|  |  |  |     refute_predicate pn, :i386? | 
					
						
							|  |  |  |     assert_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     assert_predicate pn, :dylib? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :text_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_bundle? | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_mach_o_executable | 
					
						
							| 
									
										
										
										
											2014-06-10 21:49:41 -05:00
										 |  |  |     pn = Pathname.new("#{TEST_DIRECTORY}/mach/a.out") | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     assert_predicate pn, :universal? | 
					
						
							|  |  |  |     refute_predicate pn, :i386? | 
					
						
							|  |  |  |     refute_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     refute_predicate pn, :dylib? | 
					
						
							|  |  |  |     assert_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :text_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_bundle? | 
					
						
							| 
									
										
										
										
											2012-06-16 11:35:02 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_fat_bundle | 
					
						
							| 
									
										
										
										
											2014-06-10 21:20:02 -05:00
										 |  |  |     pn = bundle_path("fat") | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     assert_predicate pn, :universal? | 
					
						
							|  |  |  |     refute_predicate pn, :i386? | 
					
						
							|  |  |  |     refute_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     refute_predicate pn, :dylib? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :text_executable? | 
					
						
							|  |  |  |     assert_predicate pn, :mach_o_bundle? | 
					
						
							| 
									
										
										
										
											2012-06-16 11:35:02 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_i386_bundle | 
					
						
							| 
									
										
										
										
											2014-06-10 21:20:02 -05:00
										 |  |  |     pn = bundle_path("i386") | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate pn, :universal? | 
					
						
							|  |  |  |     assert_predicate pn, :i386? | 
					
						
							|  |  |  |     refute_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     refute_predicate pn, :dylib? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :text_executable? | 
					
						
							|  |  |  |     assert_predicate pn, :mach_o_bundle? | 
					
						
							| 
									
										
										
										
											2012-06-16 11:35:02 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_x86_64_bundle | 
					
						
							| 
									
										
										
										
											2014-06-10 21:20:02 -05:00
										 |  |  |     pn = bundle_path("x86_64") | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate pn, :universal? | 
					
						
							|  |  |  |     refute_predicate pn, :i386? | 
					
						
							|  |  |  |     assert_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     refute_predicate pn, :dylib? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :text_executable? | 
					
						
							|  |  |  |     assert_predicate pn, :mach_o_bundle? | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_non_mach_o | 
					
						
							| 
									
										
										
										
											2014-06-10 21:49:41 -05:00
										 |  |  |     pn = Pathname.new("#{TEST_DIRECTORY}/tarballs/testball-0.1.tbz") | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate pn, :universal? | 
					
						
							|  |  |  |     refute_predicate pn, :i386? | 
					
						
							|  |  |  |     refute_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     refute_predicate pn, :dylib? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :text_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_bundle? | 
					
						
							| 
									
										
										
										
											2014-06-04 16:31:57 -05:00
										 |  |  |     assert_equal :dunno, pn.arch | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2014-06-10 21:20:37 -05:00
										 |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ArchitectureListExtensionTests < MachOPathnameTests | 
					
						
							|  |  |  |   def setup | 
					
						
							|  |  |  |     @archs = [:i386, :x86_64, :ppc7400, :ppc64].extend(ArchitectureListExtension) | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-05-28 20:39:05 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-11 20:53:16 -07:00
										 |  |  |   def test_architecture_list_extension_universal_checks | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     assert_predicate @archs, :universal? | 
					
						
							|  |  |  |     assert_predicate @archs, :intel_universal? | 
					
						
							|  |  |  |     assert_predicate @archs, :ppc_universal? | 
					
						
							|  |  |  |     assert_predicate @archs, :cross_universal? | 
					
						
							|  |  |  |     assert_predicate @archs, :fat? | 
					
						
							| 
									
										
										
										
											2013-08-11 20:53:16 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     non_universal = [:i386].extend ArchitectureListExtension | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate non_universal, :universal? | 
					
						
							| 
									
										
										
										
											2013-08-11 20:53:16 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     intel_only = [:i386, :x86_64].extend ArchitectureListExtension | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     assert_predicate intel_only, :universal? | 
					
						
							|  |  |  |     refute_predicate intel_only, :ppc_universal? | 
					
						
							|  |  |  |     refute_predicate intel_only, :cross_universal? | 
					
						
							| 
									
										
										
										
											2013-08-11 20:53:16 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     ppc_only = [:ppc970, :ppc64].extend ArchitectureListExtension | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     assert_predicate ppc_only, :universal? | 
					
						
							|  |  |  |     refute_predicate ppc_only, :intel_universal? | 
					
						
							|  |  |  |     refute_predicate ppc_only, :cross_universal? | 
					
						
							| 
									
										
										
										
											2013-08-11 20:53:16 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     cross = [:ppc7400, :i386].extend ArchitectureListExtension | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     assert_predicate cross, :universal? | 
					
						
							|  |  |  |     refute_predicate cross, :intel_universal? | 
					
						
							|  |  |  |     refute_predicate cross, :ppc_universal? | 
					
						
							| 
									
										
										
										
											2013-08-11 20:53:16 -07:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_architecture_list_extension_massaging_flags | 
					
						
							|  |  |  |     @archs.remove_ppc! | 
					
						
							|  |  |  |     assert_equal 2, @archs.length | 
					
						
							|  |  |  |     assert_match(/-arch i386/, @archs.as_arch_flags) | 
					
						
							|  |  |  |     assert_match(/-arch x86_64/, @archs.as_arch_flags) | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-05-28 20:39:05 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-11 20:53:16 -07:00
										 |  |  |   def test_architecture_list_arch_flags_methods | 
					
						
							| 
									
										
										
										
											2014-06-10 21:20:02 -05:00
										 |  |  |     pn = dylib_path("fat") | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     assert_predicate pn.archs, :intel_universal? | 
					
						
							| 
									
										
										
										
											2013-08-11 20:53:16 -07:00
										 |  |  |     assert_equal "-arch x86_64 -arch i386", pn.archs.as_arch_flags | 
					
						
							|  |  |  |     assert_equal "x86_64;i386", pn.archs.as_cmake_arch_flags | 
					
						
							| 
									
										
										
										
											2012-05-28 20:39:05 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 20:32:51 -05:00
										 |  |  | class TextExecutableTests < Homebrew::TestCase | 
					
						
							| 
									
										
										
										
											2014-06-10 20:40:51 -05:00
										 |  |  |   attr_reader :pn | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def setup | 
					
						
							|  |  |  |     @pn = HOMEBREW_PREFIX.join("an_executable") | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-30 00:09:29 -05:00
										 |  |  |   def teardown | 
					
						
							| 
									
										
										
										
											2014-06-10 20:40:51 -05:00
										 |  |  |     HOMEBREW_PREFIX.join("an_executable").unlink | 
					
						
							| 
									
										
										
										
											2012-08-30 00:09:29 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |   def test_simple_shebang | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     pn.write "#!/bin/sh" | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate pn, :universal? | 
					
						
							|  |  |  |     refute_predicate pn, :i386? | 
					
						
							|  |  |  |     refute_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     refute_predicate pn, :dylib? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     assert_predicate pn, :text_executable? | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |     assert_equal [], pn.archs | 
					
						
							| 
									
										
										
										
											2014-06-04 16:31:57 -05:00
										 |  |  |     assert_equal :dunno, pn.arch | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_shebang_with_options | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     pn.write "#! /usr/bin/perl -w" | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate pn, :universal? | 
					
						
							|  |  |  |     refute_predicate pn, :i386? | 
					
						
							|  |  |  |     refute_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     refute_predicate pn, :dylib? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     assert_predicate pn, :text_executable? | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |     assert_equal [], pn.archs | 
					
						
							| 
									
										
										
										
											2014-06-04 16:31:57 -05:00
										 |  |  |     assert_equal :dunno, pn.arch | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_malformed_shebang | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     pn.write " #!" | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate pn, :universal? | 
					
						
							|  |  |  |     refute_predicate pn, :i386? | 
					
						
							|  |  |  |     refute_predicate pn, :x86_64? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc7400? | 
					
						
							|  |  |  |     refute_predicate pn, :ppc64? | 
					
						
							|  |  |  |     refute_predicate pn, :dylib? | 
					
						
							|  |  |  |     refute_predicate pn, :mach_o_executable? | 
					
						
							|  |  |  |     refute_predicate pn, :text_executable? | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |     assert_equal [], pn.archs | 
					
						
							| 
									
										
										
										
											2014-06-04 16:31:57 -05:00
										 |  |  |     assert_equal :dunno, pn.arch | 
					
						
							| 
									
										
										
										
											2012-05-25 23:44:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | end |