summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2019-07-31 15:10:16 +0900
committerKoichi Sasada <ko1@atdot.net>2019-07-31 15:14:51 +0900
commit5f95edb7af68ce03732da4d49eee8d6ee87ef544 (patch)
tree096dd9476831f60db1ef98172e30ef3dd712536e /test
parentcac44def0b0f0fdcd1aa8cf610e16a5506d2726b (diff)
check SystemStackError
This recursive iteration test can cause SystemStackError so check it correctly.
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_hash.rb16
1 files changed, 10 insertions, 6 deletions
diff --git a/test/ruby/test_hash.rb b/test/ruby/test_hash.rb
index d973b1f763..0549886317 100644
--- a/test/ruby/test_hash.rb
+++ b/test/ruby/test_hash.rb
@@ -1729,20 +1729,24 @@ class TestHash < Test::Unit::TestCase
end
def test_huge_iter_level
- h = @cls[a: 1]
- assert_raise(RuntimeError){
- hrec(h, 1000){ h[:c] = 3 }
- }
+ nrec = 200
h = @cls[a: 1]
- hrec(h, 1000){}
+ hrec(h, nrec){}
h[:c] = 3
assert_equal(3, h[:c])
h = @cls[a: 1]
h.freeze # set hidden attribute for a frozen object
- hrec(h, 1000){}
+ hrec(h, nrec){}
assert_equal(1, h.size)
+
+ h = @cls[a: 1]
+ assert_raise(RuntimeError){
+ hrec(h, nrec){ h[:c] = 3 }
+ }
+ rescue SystemStackError => e
+ # ignore
end
class TestSubHash < TestHash