diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-01 02:05:10 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-01 02:05:10 +0000 |
commit | a1a68a5810f8c8fc42f908074b5bbb1fcee62c83 (patch) | |
tree | 89196c72c7d5d7e5339fe994a26bba1a3ce1148a /test | |
parent | d36fedc7313179a57f21c28aadc8514c47e55b2f (diff) |
merges r28428,r28429,r28430 and r28444 from trunk into ruby_1_9_2.
--
* test/ruby/envutil.rb (EnvUtil#invoke_ruby): get rid of possible
deadlock.
--
* test/ruby/envutil.rb (EnvUtil#invoke_ruby): change the
environment of spawned process only.
--
* test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err):
return the exit status.
--
* test/ruby/envutil.rb (EnvUtil#invoke_ruby): no needs to copy the
original ENV, since it's done in spawn automatically.
[ruby-dev:41733]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@28500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/envutil.rb | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/test/ruby/envutil.rb b/test/ruby/envutil.rb index 7e52a8ffd7..0703ee4f0d 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,18 +77,21 @@ module EnvUtil out_p.set_encoding(enc) if out_p err_p.set_encoding(enc) if err_p end + c = "C" + child_env = {} + 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 - in_p.write stdin_data.to_str - in_p.close th_stdout = Thread.new { out_p.read } if capture_stdout th_stderr = Thread.new { err_p.read } if capture_stderr + in_p.write stdin_data.to_str + in_p.close if (!capture_stdout || th_stdout.join(10)) && (!capture_stderr || th_stderr.join(10)) stdout = th_stdout.value if capture_stdout stderr = th_stderr.value 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? @@ -205,6 +198,7 @@ module Test else assert_equal(test_stderr, stderr.lines.map {|l| l.chomp }, message) end + status end end |