diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-01-09 01:40:16 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-01-09 01:40:16 +0000 |
commit | a931f961118ccb8f0d457a1ad88c788431aa5c76 (patch) | |
tree | d633bb0bd10b2914ebd870c4968e6a6283edf1db | |
parent | 07f0d97d878ed9d3855504b440101fa1ae83e444 (diff) | |
download | ruby-a931f961118ccb8f0d457a1ad88c788431aa5c76.tar.gz |
* test/ruby/test_process.rb (TestProcess::MANDATORY_ENVS): some
platforms need environments for shared objects.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21393 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | test/ruby/test_process.rb | 32 |
2 files changed, 32 insertions, 5 deletions
@@ -1,3 +1,8 @@ +Fri Jan 9 10:40:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * test/ruby/test_process.rb (TestProcess::MANDATORY_ENVS): some + platforms need environments for shared objects. + Thu Jan 8 23:19:38 2009 Tanaka Akira <akr@fsij.org> * ext/socket/socket.c (bsock_shutdown): accept symbol/string as how. diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb index cc98309293..1bf3bec63b 100644 --- a/test/ruby/test_process.rb +++ b/test/ruby/test_process.rb @@ -2,6 +2,7 @@ require 'test/unit' require 'tmpdir' require 'pathname' require_relative 'envutil' +require 'rbconfig' class TestProcess < Test::Unit::TestCase RUBY = EnvUtil.rubybin @@ -198,7 +199,16 @@ class TestProcess < Test::Unit::TestCase } end - ENVCOMMAND = [RUBY, '-e', 'ENV.each {|k,v| puts "#{k}=#{v}" }'] + MANDATORY_ENVS = [] + if /linux/ =~ RbConfig::CONFIG['target_os'] + MANDATORY_ENVS << 'LD_PRELOAD' + end + if e = RbConfig::CONFIG['LIBPATHENV'] + MANDATORY_ENVS << e + end + PREENVARG = ['-e', "%w[#{MANDATORY_ENVS.join(' ')}].each{|e|ENV.delete(e)}"] + ENVARG = ['-e', 'ENV.each {|k,v| puts "#{k}=#{v}" }'] + ENVCOMMAND = [RUBY].concat(PREENVARG).concat(ENVARG) def test_execopts_env assert_raise(ArgumentError) { @@ -206,8 +216,18 @@ class TestProcess < Test::Unit::TestCase } h = {} - ENV.each {|k,v| h[k] = nil unless k.upcase == "PATH" } - IO.popen([h, RUBY, '-e', 'puts ENV.keys.map{|e|e.upcase}']) {|io| + cmd = [h, RUBY] + ENV.each do |k,v| + case k + when /\APATH\z/i + when *MANDATORY_ENVS + cmd << '-e' << "ENV.delete('#{k}')" + else + h[k] = nil + end + end + cmd << '-e' << 'puts ENV.keys.map{|e|e.upcase}' + IO.popen(cmd) {|io| assert_equal("PATH\n", io.read) } @@ -222,10 +242,12 @@ class TestProcess < Test::Unit::TestCase end def test_execopts_unsetenv_others - IO.popen([*ENVCOMMAND, :unsetenv_others=>true]) {|io| + h = {} + MANDATORY_ENVS.each {|k| e = ENV[k] and h[k] = e} + IO.popen([h, *ENVCOMMAND, :unsetenv_others=>true]) {|io| assert_equal("", io.read) } - IO.popen([{"A"=>"B"}, *ENVCOMMAND, :unsetenv_others=>true]) {|io| + IO.popen([h.merge("A"=>"B"), *ENVCOMMAND, :unsetenv_others=>true]) {|io| assert_equal("A=B\n", io.read) } end |