* test/ruby/envutil.rb (EnvUtil#invoke_ruby): change the
environment of spawned process only. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9f16d373f3
commit
fdf5a3dd8d
@ -1,4 +1,7 @@
|
||||
Fri Jun 25 09:56:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
Fri Jun 25 09:58:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* test/ruby/envutil.rb (EnvUtil#invoke_ruby): change the
|
||||
environment of spawned process only.
|
||||
|
||||
* test/ruby/envutil.rb (EnvUtil#invoke_ruby): get rid of possible
|
||||
deadlock.
|
||||
|
@ -69,9 +69,6 @@ module EnvUtil
|
||||
in_c, in_p = IO.pipe
|
||||
out_p, out_c = IO.pipe if capture_stdout
|
||||
err_p, err_c = IO.pipe if capture_stderr
|
||||
c = "C"
|
||||
env = {}
|
||||
LANG_ENVS.each {|lc| env[lc], ENV[lc] = ENV[lc], c}
|
||||
opt = opt.dup
|
||||
opt[:in] = in_c
|
||||
opt[:out] = out_c if capture_stdout
|
||||
@ -80,11 +77,14 @@ module EnvUtil
|
||||
out_p.set_encoding(enc) if out_p
|
||||
err_p.set_encoding(enc) if err_p
|
||||
end
|
||||
c = "C"
|
||||
child_env = ENV.dup
|
||||
LANG_ENVS.each {|lc| child_env[lc] = c}
|
||||
case args.first
|
||||
when Hash
|
||||
child_env = [args.shift]
|
||||
child_env.update(args.shift)
|
||||
end
|
||||
pid = spawn(*child_env, EnvUtil.rubybin, *args, opt)
|
||||
pid = spawn(child_env, EnvUtil.rubybin, *args, opt)
|
||||
in_c.close
|
||||
out_c.close if capture_stdout
|
||||
err_c.close if capture_stderr
|
||||
@ -103,13 +103,6 @@ module EnvUtil
|
||||
Process.wait pid
|
||||
status = $?
|
||||
ensure
|
||||
env.each_pair {|lc, v|
|
||||
if v
|
||||
ENV[lc] = v
|
||||
else
|
||||
ENV.delete(lc)
|
||||
end
|
||||
} if env
|
||||
in_c.close if in_c && !in_c.closed?
|
||||
in_p.close if in_p && !in_p.closed?
|
||||
out_c.close if out_c && !out_c.closed?
|
||||
|
Loading…
x
Reference in New Issue
Block a user