diff --git a/Library/Homebrew/build_environment.rb b/Library/Homebrew/build_environment.rb index 60e0999773..c10c9fb1c4 100644 --- a/Library/Homebrew/build_environment.rb +++ b/Library/Homebrew/build_environment.rb @@ -3,10 +3,14 @@ require 'set' class BuildEnvironment def initialize(*settings) @settings = Set.new(settings) + @procs = Set.new end def <<(o) - @settings << o + case o + when Proc then @procs << o + else @settings << o + end self end @@ -19,12 +23,11 @@ class BuildEnvironment end def modify_build_environment(context=nil) - p = @settings.find { |s| Proc === s } - ENV.instance_exec(context, &p) unless p.nil? + @procs.each { |p| ENV.instance_exec(context, &p) } end def _dump(*) - @settings.dup.reject { |s| Proc === s }.join(":") + @settings.to_a.join(":") end def self._load(s) diff --git a/Library/Homebrew/test/test_build_environment.rb b/Library/Homebrew/test/test_build_environment.rb index 6710662b56..31d3cb1cb8 100644 --- a/Library/Homebrew/test/test_build_environment.rb +++ b/Library/Homebrew/test/test_build_environment.rb @@ -21,8 +21,10 @@ class BuildEnvironmentTests < Test::Unit::TestCase end def test_modify_build_environment - @env << Proc.new { 1 } - assert_equal 1, @env.modify_build_environment + @env << Proc.new { raise StandardError } + assert_raises(StandardError) do + @env.modify_build_environment + end end def test_marshal