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 "securerandom"
|
||||
|
||||
class TestObjectId < Test::Unit::TestCase
|
||||
def setup
|
||||
@ -159,14 +160,14 @@ class TestObjectIdTooComplexClass < TestObjectId
|
||||
|
||||
@obj = TooComplex.new
|
||||
|
||||
@obj.instance_variable_set("@___#{rand(100_000)}", 1)
|
||||
@obj.instance_variable_set("@___#{SecureRandom.hex}", 1)
|
||||
|
||||
8.times do |i|
|
||||
@obj.instance_variable_set("@TestObjectIdTooComplexClass#{i}", 1)
|
||||
@obj.remove_instance_variable("@TestObjectIdTooComplexClass#{i}")
|
||||
end
|
||||
|
||||
@obj.instance_variable_set("@___#{rand(100_000)}", 1)
|
||||
@obj.instance_variable_set("@test", 1)
|
||||
|
||||
if defined?(RubyVM::Shape)
|
||||
assert_predicate(RubyVM::Shape.of(@obj), :too_complex?)
|
||||
|
Loading…
x
Reference in New Issue
Block a user