| 
									
										
										
										
											2010-02-14 21:23:38 -08:00
										 |  |  | # Require this file to build a testing environment. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-01 15:53:42 -05:00
										 |  |  | ABS__FILE__ = File.expand_path(__FILE__) | 
					
						
							| 
									
										
										
										
											2010-02-14 21:23:38 -08:00
										 |  |  | $:.push(File.expand_path(__FILE__+'/../..')) | 
					
						
							| 
									
										
										
										
											2013-04-01 15:53:42 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-04 11:05:02 -05:00
										 |  |  | require 'extend/module' | 
					
						
							| 
									
										
										
										
											2012-09-27 16:22:01 -05:00
										 |  |  | require 'extend/fileutils' | 
					
						
							| 
									
										
										
										
											2010-02-14 21:23:38 -08:00
										 |  |  | require 'extend/pathname' | 
					
						
							| 
									
										
										
										
											2012-08-12 01:02:37 -05:00
										 |  |  | require 'extend/string' | 
					
						
							| 
									
										
										
										
											2013-06-04 11:05:02 -05:00
										 |  |  | require 'extend/symbol' | 
					
						
							| 
									
										
										
										
											2013-06-07 22:27:29 -05:00
										 |  |  | require 'extend/enumerable' | 
					
						
							| 
									
										
										
										
											2010-09-11 20:22:54 +01:00
										 |  |  | require 'exceptions' | 
					
						
							| 
									
										
										
										
											2012-03-18 13:58:13 -05:00
										 |  |  | require 'utils' | 
					
						
							| 
									
										
										
										
											2013-04-07 18:40:17 -05:00
										 |  |  | require 'rbconfig' | 
					
						
							| 
									
										
										
										
											2010-02-14 21:23:38 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-01 15:53:42 -05:00
										 |  |  | # Constants normally defined in global.rb | 
					
						
							|  |  |  | HOMEBREW_PREFIX        = Pathname.new('/private/tmp/testbrew/prefix') | 
					
						
							|  |  |  | HOMEBREW_REPOSITORY    = HOMEBREW_PREFIX | 
					
						
							|  |  |  | HOMEBREW_LIBRARY       = HOMEBREW_REPOSITORY+'Library' | 
					
						
							|  |  |  | HOMEBREW_CACHE         = HOMEBREW_PREFIX.parent+'cache' | 
					
						
							|  |  |  | HOMEBREW_CACHE_FORMULA = HOMEBREW_PREFIX.parent+'formula_cache' | 
					
						
							|  |  |  | HOMEBREW_CELLAR        = HOMEBREW_PREFIX.parent+'cellar' | 
					
						
							|  |  |  | HOMEBREW_LOGS          = HOMEBREW_PREFIX.parent+'logs' | 
					
						
							| 
									
										
										
										
											2013-12-14 09:47:32 -06:00
										 |  |  | HOMEBREW_TEMP          = Pathname.new(ENV.fetch('HOMEBREW_TEMP', '/tmp')) | 
					
						
							| 
									
										
										
										
											2013-04-01 15:53:42 -05:00
										 |  |  | HOMEBREW_USER_AGENT    = 'Homebrew' | 
					
						
							|  |  |  | HOMEBREW_WWW           = 'http://example.com' | 
					
						
							|  |  |  | HOMEBREW_CURL_ARGS     = '-fsLA' | 
					
						
							|  |  |  | HOMEBREW_VERSION       = '0.9-test' | 
					
						
							| 
									
										
										
										
											2012-09-29 12:14:57 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-28 16:43:22 -05:00
										 |  |  | RUBY_BIN = Pathname.new(RbConfig::CONFIG['bindir']) | 
					
						
							| 
									
										
										
										
											2013-04-07 18:40:17 -05:00
										 |  |  | RUBY_PATH = RUBY_BIN + RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT'] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-14 19:16:56 -05:00
										 |  |  | MACOS_FULL_VERSION = `/usr/bin/sw_vers -productVersion`.chomp | 
					
						
							| 
									
										
										
										
											2013-10-25 17:29:36 -05:00
										 |  |  | MACOS_VERSION = ENV.fetch('MACOS_VERSION') { MACOS_FULL_VERSION[/10\.\d+/] } | 
					
						
							| 
									
										
										
										
											2010-02-14 21:23:38 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-15 21:50:13 +02:00
										 |  |  | ORIGINAL_PATHS = ENV['PATH'].split(File::PATH_SEPARATOR).map{ |p| Pathname.new(p).expand_path rescue nil }.compact.freeze | 
					
						
							| 
									
										
										
										
											2013-04-01 15:53:42 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | module Homebrew extend self | 
					
						
							|  |  |  |   include FileUtils | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Test environment setup | 
					
						
							| 
									
										
										
										
											2013-01-19 20:45:58 -06:00
										 |  |  | %w{Library/Formula Library/ENV}.each do |d| | 
					
						
							|  |  |  |   HOMEBREW_REPOSITORY.join(d).mkpath | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-30 00:09:29 -05:00
										 |  |  | at_exit { HOMEBREW_PREFIX.parent.rmtree } | 
					
						
							| 
									
										
										
										
											2010-02-14 21:23:38 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Test fixtures and files can be found relative to this path | 
					
						
							|  |  |  | TEST_FOLDER = Pathname.new(ABS__FILE__).parent.realpath | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-17 19:11:36 -05:00
										 |  |  | def shutup | 
					
						
							|  |  |  |   if ARGV.verbose? | 
					
						
							|  |  |  |     yield | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     begin | 
					
						
							|  |  |  |       tmperr = $stderr.clone | 
					
						
							|  |  |  |       tmpout = $stdout.clone | 
					
						
							|  |  |  |       $stderr.reopen '/dev/null', 'w' | 
					
						
							|  |  |  |       $stdout.reopen '/dev/null', 'w' | 
					
						
							|  |  |  |       yield | 
					
						
							|  |  |  |     ensure | 
					
						
							|  |  |  |       $stderr.reopen tmperr | 
					
						
							|  |  |  |       $stdout.reopen tmpout | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-09 23:53:26 -05:00
										 |  |  | require 'compat' unless ARGV.include? "--no-compat" or ENV['HOMEBREW_NO_COMPAT'] | 
					
						
							| 
									
										
										
										
											2012-04-05 21:09:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-14 21:23:38 -08:00
										 |  |  | require 'test/unit' # must be after at_exit | 
					
						
							| 
									
										
										
										
											2012-06-19 22:50:15 -05:00
										 |  |  | require 'extend/ARGV' # needs to be after test/unit to avoid conflict with OptionsParser | 
					
						
							|  |  |  | require 'extend/ENV' | 
					
						
							| 
									
										
										
										
											2013-01-19 20:45:56 -06:00
										 |  |  | ARGV.extend(HomebrewArgvExtension) | 
					
						
							| 
									
										
										
										
											2013-08-19 12:32:59 -05:00
										 |  |  | ENV.extend(Stdenv) | 
					
						
							| 
									
										
										
										
											2012-07-10 16:01:02 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-19 20:45:56 -06:00
										 |  |  | begin | 
					
						
							|  |  |  |   require 'rubygems' | 
					
						
							|  |  |  |   require 'mocha/setup' | 
					
						
							|  |  |  | rescue LoadError | 
					
						
							|  |  |  |   warn 'The mocha gem is required to run some tests, expect failures' | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-10 16:01:02 -05:00
										 |  |  | module VersionAssertions | 
					
						
							| 
									
										
										
										
											2012-08-18 16:03:43 -05:00
										 |  |  |   def version v | 
					
						
							|  |  |  |     Version.new(v) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-10 16:01:02 -05:00
										 |  |  |   def assert_version_equal expected, actual | 
					
						
							|  |  |  |     assert_equal Version.new(expected), actual | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def assert_version_detected expected, url | 
					
						
							|  |  |  |     assert_equal expected, Version.parse(url).to_s | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def assert_version_nil url | 
					
						
							|  |  |  |     assert_nil Version.parse(url) | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2014-01-11 19:59:26 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def assert_version_tokens tokens, version | 
					
						
							|  |  |  |     assert_equal tokens, version.send(:tokens).map(&:to_s) | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-07-10 16:01:02 -05:00
										 |  |  | end | 
					
						
							| 
									
										
										
										
											2012-10-25 22:09:23 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | module Test::Unit::Assertions | 
					
						
							|  |  |  |   def assert_empty(obj, msg=nil) | 
					
						
							|  |  |  |     assert_respond_to(obj, :empty?, msg) | 
					
						
							|  |  |  |     assert(obj.empty?, msg) | 
					
						
							| 
									
										
										
										
											2013-06-11 17:03:16 -05:00
										 |  |  |   end unless method_defined?(:assert_empty) | 
					
						
							| 
									
										
										
										
											2012-10-25 22:09:23 -05:00
										 |  |  | end | 
					
						
							| 
									
										
										
										
											2013-05-25 17:19:18 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | class Test::Unit::TestCase | 
					
						
							| 
									
										
										
										
											2013-12-09 15:57:50 -06:00
										 |  |  |   TEST_SHA1   = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef".freeze | 
					
						
							|  |  |  |   TEST_SHA256 = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef".freeze | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-25 17:19:18 -05:00
										 |  |  |   def formula(*args, &block) | 
					
						
							|  |  |  |     @_f = Class.new(Formula, &block).new(*args) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |