Skip to content

Commit

Permalink
* test/ruby/test_process.rb (TestProcess::MANDATORY_ENVS): some
Browse files Browse the repository at this point in the history
  platforms need environments for shared objects.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21393 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed Jan 9, 2009
1 parent 07f0d97 commit a931f96
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
Fri Jan 9 10:40:52 2009 Nobuyoshi Nakada <[email protected]>

* test/ruby/test_process.rb (TestProcess::MANDATORY_ENVS): some
platforms need environments for shared objects.

Thu Jan 8 23:19:38 2009 Tanaka Akira <[email protected]>

* ext/socket/socket.c (bsock_shutdown): accept symbol/string as how.
Expand Down
32 changes: 27 additions & 5 deletions test/ruby/test_process.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
require 'tmpdir'
require 'pathname'
require_relative 'envutil'
require 'rbconfig'

class TestProcess < Test::Unit::TestCase
RUBY = EnvUtil.rubybin
Expand Down Expand Up @@ -198,16 +199,35 @@ def test_execopts_rlimit
}
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) {
system({"F=O"=>"BAR"}, *TRUECOMMAND)
}

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)
}

Expand All @@ -222,10 +242,12 @@ def test_execopts_env
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
Expand Down

0 comments on commit a931f96

Please sign in to comment.