aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--test/ruby/envutil.rb17
2 files changed, 23 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index e77efc90bf..a2ed0724fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Dec 14 04:08:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test/ruby/envutil.rb (EnvUtil::Unit::Assertionsassert_separately):
+ added to execute given test source on separate process,
+ catch its resulted exception and raise it on main process.
+
Fri Dec 14 07:43:44 2012 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/psych/lib/psych/visitors/yaml_tree.rb: quote strings that begin
diff --git a/test/ruby/envutil.rb b/test/ruby/envutil.rb
index 657e991e3f..edcda0ceba 100644
--- a/test/ruby/envutil.rb
+++ b/test/ruby/envutil.rb
@@ -193,6 +193,23 @@ module Test
assert(status.success?, m)
end
+ def assert_separately(args, file, line, src)
+ opt = {}
+ src = <<eom
+ require 'test/unit';include Test::Unit::Assertions;begin;#{src}
+ ensure
+ print [Marshal.dump($!)].pack('m')
+ end
+eom
+ stdout, _stderr, _status = EnvUtil.invoke_ruby(args, src, true, true, opt)
+ res = Marshal.load(stdout.unpack("m")[0])
+ return unless res
+ res.backtrace.each do |l|
+ l.sub!(/\A-:(\d+)/){"#{file}:#{line + $1.to_i}"}
+ end
+ raise res
+ end
+
def assert_warning(pat, message = nil)
stderr = EnvUtil.verbose_warning { yield }
message = ' "' + message + '"' if message