brew/Library/Homebrew/test/test_build_environment.rb
Jack Nagel 1b0f0824fe Requirement: env DSL is evaluated in context of self, not ENV
This was meant to support:

  env do |req|
    append_path 'PATH', req.some_method
    ...
  end

i.e., the block was evaluated in the context of ENV. But it turned out
to be not so useful after all, so I'm ripping it out before something
actually depends on it.
2013-04-01 16:17:35 -05:00

72 lines
1.5 KiB
Ruby

require 'testing_env'
require 'build_environment'
class BuildEnvironmentTests < Test::Unit::TestCase
def setup
@env = BuildEnvironment.new
end
def test_shovel_returns_self
assert_same @env, (@env << :foo)
end
def test_std?
@env << :std
assert @env.std?
end
def test_userpaths?
@env << :userpaths
assert @env.userpaths?
end
def test_modify_build_environment
@env << Proc.new { raise StandardError }
assert_raises(StandardError) do
@env.modify_build_environment(self)
end
end
def test_marshal
@env << :userpaths
@env << Proc.new { 1 }
dump = Marshal.dump(@env)
assert Marshal.load(dump).userpaths?
end
def test_env_block
foo = mock("foo")
@env << Proc.new { foo.some_message }
foo.expects(:some_message)
@env.modify_build_environment(self)
end
def test_env_block_with_argument
foo = mock("foo")
@env << Proc.new { |x| x.some_message }
foo.expects(:some_message)
@env.modify_build_environment(foo)
end
end
class BuildEnvironmentDSLTests < Test::Unit::TestCase
def make_instance(&block)
Class.new do
extend BuildEnvironmentDSL
def env; self.class.env end
class_eval(&block)
end.new
end
def test_env_single_argument
obj = make_instance { env :userpaths }
assert obj.env.userpaths?
end
def test_env_multiple_arguments
obj = make_instance { env :userpaths, :std }
assert obj.env.userpaths?
assert obj.env.std?
end
end