diff options
| author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-04-23 15:22:13 +0000 |
|---|---|---|
| committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-04-23 15:22:13 +0000 |
| commit | ebadc3faaf095ba6359c50cc33b657c2f6fed983 (patch) | |
| tree | de1333bc139328e336cb974ab6f33644a72b97ea /test/ruby/envutil.rb | |
| parent | 5b4ca970262a96864a657ceb7bce9fd136949764 (diff) | |
| download | ruby-ebadc3faaf095ba6359c50cc33b657c2f6fed983.tar.gz ruby-ebadc3faaf095ba6359c50cc33b657c2f6fed983.tar.xz ruby-ebadc3faaf095ba6359c50cc33b657c2f6fed983.zip | |
* test/ruby/test_settracefunc.rb: add a test for set_trace_func.
* test/ruby/envutil.rb: move "rubyexec" method from test_rubyoptions.rb.
* test/ruby/test_rubyoptions.rb: use rubyexec in envutil.rb.
* test/ruby/test_thread.rb: add tests to achieve over 90% test coverage
of thread.c.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@16175 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/envutil.rb')
| -rw-r--r-- | test/ruby/envutil.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/ruby/envutil.rb b/test/ruby/envutil.rb index bbcab83d0..37efdde84 100644 --- a/test/ruby/envutil.rb +++ b/test/ruby/envutil.rb @@ -1,3 +1,6 @@ +require "open3" +require "timeout" + module EnvUtil def rubybin unless ENV["RUBYOPT"] @@ -28,4 +31,42 @@ module EnvUtil end end module_function :rubybin + + LANG_ENVS = %w"LANG LC_ALL LC_CTYPE" + def rubyexec(*args) + if /(mswin|bccwin|mingw|emx)/ =~ RUBY_PLATFORM + flunk("cannot test in win32") + return + end + + ruby = EnvUtil.rubybin + c = "C" + env = {} + LANG_ENVS.each {|lc| env[lc], ENV[lc] = ENV[lc], c} + stdin, stdout, stderr = Open3.popen3(*([ruby] + args)) + env.each_pair {|lc, v| + if v + ENV[lc] = v + else + ENV.delete(lc) + end + } + env = nil + Timeout.timeout(10) do + yield(stdin, stdout, stderr) + end + + ensure + env.each_pair {|lc, v| + if v + ENV[lc] = v + else + ENV.delete(lc) + end + } if env + stdin .close unless !stdin || stdin .closed? + stdout.close unless !stdout || stdout.closed? + stderr.close unless !stderr || stderr.closed? + end + module_function :rubyexec end |
