brew/Library/Homebrew/test/testing_env.rb
Jack Nagel 452e79cf68 Allow satisfied? to be specified in a block
Instead of overriding #satisfied?, Requirement subclasses can specify
the condition in a block:

  satisfy do
    some_condition?
  end

The contents of the block are evaluated in the context of the instance,
and so have access to instance variables and instance methods as before.
Additionally, it is wrapped in an ENV.with_build_environment block. This
can be disabled by passing :build_env => false to satisfy:

  satisfy :build_env => false do
    some_condition?
  end
2013-01-21 17:24:12 -06:00

108 lines
2.7 KiB
Ruby

# This software is in the public domain, furnished "as is", without technical
# support, and with no warranty, express or implied, as to its usefulness for
# any purpose.
# Require this file to build a testing environment.
ABS__FILE__=File.expand_path(__FILE__)
$:.push(File.expand_path(__FILE__+'/../..'))
require 'extend/fileutils'
require 'extend/pathname'
require 'extend/string'
require 'exceptions'
require 'utils'
# these are defined in global.rb, but we don't want to break our actual
# homebrew tree, and we do want to test everything :)
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"
HOMEBREW_USER_AGENT="Homebrew"
HOMEBREW_WWW='http://example.com'
HOMEBREW_CURL_ARGS = '-fsLA'
HOMEBREW_VERSION = '0.9-test'
MACOS = true
MACOS_VERSION = 10.6
MACOS_FULL_VERSION = '10.6.8'
%w{Library/Formula Library/ENV}.each do |d|
HOMEBREW_REPOSITORY.join(d).mkpath
end
ORIGINAL_PATHS = ENV['PATH'].split(':').map{ |p| Pathname.new(p).expand_path rescue nil }.compact.freeze
at_exit { HOMEBREW_PREFIX.parent.rmtree }
# Test fixtures and files can be found relative to this path
TEST_FOLDER = Pathname.new(ABS__FILE__).parent.realpath
module Homebrew extend self
include FileUtils
end
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
unless ARGV.include? "--no-compat" or ENV['HOMEBREW_NO_COMPAT']
$:.unshift(File.expand_path("#{ABS__FILE__}/../../compat"))
require 'compatibility'
end
require 'test/unit' # must be after at_exit
require 'extend/ARGV' # needs to be after test/unit to avoid conflict with OptionsParser
require 'extend/ENV'
ARGV.extend(HomebrewArgvExtension)
ENV.extend(HomebrewEnvExtension)
begin
require 'rubygems'
require 'mocha/setup'
rescue LoadError
warn 'The mocha gem is required to run some tests, expect failures'
end
module VersionAssertions
def version v
Version.new(v)
end
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
end
module Test::Unit::Assertions
def assert_empty(obj, msg=nil)
assert_respond_to(obj, :empty?, msg)
assert(obj.empty?, msg)
end if RUBY_VERSION.to_f <= 1.8
end