summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-06-25 00:58:57 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-06-25 00:58:57 +0000
commitfdf5a3dd8da72ae1ab63bd6712597a42e5a36b22 (patch)
treea32a1f01d9801466c4e7fdc2b6c89477ececa32a
parent9f16d373f3fcd1113f82f1f2b48c990c78113094 (diff)
* 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
-rw-r--r--ChangeLog5
-rw-r--r--test/ruby/envutil.rb17
2 files changed, 9 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index f33df11774..94246dc811 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/test/ruby/envutil.rb b/test/ruby/envutil.rb
index 5a81daab33..9a55787c1f 100644
--- a/test/ruby/envutil.rb
+++ b/test/ruby/envutil.rb
@@ -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?