diff --git a/tool/lib/core_assertions.rb b/tool/lib/core_assertions.rb
index 3bfc4ef32b..9530187db4 100644
--- a/tool/lib/core_assertions.rb
+++ b/tool/lib/core_assertions.rb
@@ -105,9 +105,7 @@ module Test
require_relative 'memory_status'
raise Test::Unit::PendedError, "unsupported platform" unless defined?(Memory::Status)
- token = "\e[7;1m#{$$.to_s}:#{Time.now.strftime('%s.%L')}:#{rand(0x10000).to_s(16)}:\e[m"
- token_dump = token.dump
- token_re = Regexp.quote(token)
+ token_dump, token_re = new_test_token
envs = args.shift if Array === args and Hash === args.first
args = [
"--disable=gems",
@@ -244,11 +242,11 @@ module Test
ABORT_SIGNALS = Signal.list.values_at(*%w"ILL ABRT BUS SEGV TERM")
- def separated_runner(out = nil)
+ def separated_runner(token, out = nil)
include(*Test::Unit::TestCase.ancestors.select {|c| !c.is_a?(Class) })
out = out ? IO.new(out, 'w') : STDOUT
at_exit {
- out.puts [Marshal.dump($!)].pack('m'), "assertions=#{self._assertions}"
+ out.puts "#{token}", [Marshal.dump($!)].pack('m'), "#{token}", "#{token}assertions=#{self._assertions}"
}
Test::Unit::Runner.class_variable_set(:@@stop_auto_run, true) if defined?(Test::Unit::Runner)
end
@@ -266,11 +264,12 @@ module Test
res_p, res_c = IO.pipe
opt[:ios] = [res_c]
end
+ token_dump, token_re = new_test_token
src = <\n\K.*\n(?=#{token_re}<\/error>$)/m].unpack1("m"))
rescue => marshal_error
ignore_stderr = nil
res = nil
@@ -763,6 +762,11 @@ eom
end
q.output
end
+
+ def new_test_token
+ token = "\e[7;1m#{$$.to_s}:#{Time.now.strftime('%s.%L')}:#{rand(0x10000).to_s(16)}:\e[m"
+ return token.dump, Regexp.quote(token)
+ end
end
end
end