summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-08 07:08:32 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-08 07:08:32 +0000
commit49c5a3da6f7d17cb7864eebc564533754725c31d (patch)
tree3a93ee4ae997ae319a76c518ac9ef66a50b3c278 /test
parent70fc27b7facb8c73580428450989b66425c08177 (diff)
envutil.rb: check termsig
* test/ruby/envutil.rb (assert_separately): check also terminating signal not only if core dumped. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/envutil.rb7
1 files changed, 5 insertions, 2 deletions
diff --git a/test/ruby/envutil.rb b/test/ruby/envutil.rb
index b640dcd124..02215120dd 100644
--- a/test/ruby/envutil.rb
+++ b/test/ruby/envutil.rb
@@ -249,6 +249,8 @@ module Test
assert(status.success?, m)
end
+ ABORT_SIGNALS = Signal.list.values_at(*%w"ILL ABRT BUS SEGV")
+
def assert_separately(args, file = nil, line = nil, src, **opt)
unless file and line
loc, = caller_locations(1,1)
@@ -261,8 +263,9 @@ module Test
puts [Marshal.dump($!)].pack('m'), "assertions=\#{self._assertions}"
end
eom
- stdout, _stderr, status = EnvUtil.invoke_ruby(args, src, true, true, opt)
- assert(!status.coredump?, FailDesc[status])
+ stdout, stderr, status = EnvUtil.invoke_ruby(args, src, true, true, opt)
+ abort = status.coredump? || (status.signaled? && ABORT_SIGNALS.include?(status.termsig))
+ assert(!abort, FailDesc[status, stderr])
self._assertions += stdout[/^assertions=(\d+)/, 1].to_i
res = Marshal.load(stdout.unpack("m")[0])
return unless res