test_object_id.rb: use better randomness
When the test is repeated 20 or more times in the same process it's not that unlikely for `rand(100_000)` to return the same thing twice, causing `TestObjectIdTooComplexClass` to fail. ``` 1) Failure: TestObjectIdTooComplexClass#test_dup_with_id_and_ivar [/tmp/ruby/src/trunk-repeat20-asserts/test/ruby/test_object_id.rb:172]: Expected #<struct RubyVM::Shape id=6783, parent_id=6774, edge_name=:@___26417, next_field_index=2, heap_index=0, type=1, capacity=7> to be too_complex?. ```
This commit is contained in:
parent
f638e14838
commit
131ba059ca
@ -1,4 +1,5 @@
|
|||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
|
require "securerandom"
|
||||||
|
|
||||||
class TestObjectId < Test::Unit::TestCase
|
class TestObjectId < Test::Unit::TestCase
|
||||||
def setup
|
def setup
|
||||||
@ -159,14 +160,14 @@ class TestObjectIdTooComplexClass < TestObjectId
|
|||||||
|
|
||||||
@obj = TooComplex.new
|
@obj = TooComplex.new
|
||||||
|
|
||||||
@obj.instance_variable_set("@___#{rand(100_000)}", 1)
|
@obj.instance_variable_set("@___#{SecureRandom.hex}", 1)
|
||||||
|
|
||||||
8.times do |i|
|
8.times do |i|
|
||||||
@obj.instance_variable_set("@TestObjectIdTooComplexClass#{i}", 1)
|
@obj.instance_variable_set("@TestObjectIdTooComplexClass#{i}", 1)
|
||||||
@obj.remove_instance_variable("@TestObjectIdTooComplexClass#{i}")
|
@obj.remove_instance_variable("@TestObjectIdTooComplexClass#{i}")
|
||||||
end
|
end
|
||||||
|
|
||||||
@obj.instance_variable_set("@___#{rand(100_000)}", 1)
|
@obj.instance_variable_set("@test", 1)
|
||||||
|
|
||||||
if defined?(RubyVM::Shape)
|
if defined?(RubyVM::Shape)
|
||||||
assert_predicate(RubyVM::Shape.of(@obj), :too_complex?)
|
assert_predicate(RubyVM::Shape.of(@obj), :too_complex?)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user