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:
Jean Boussier 2025-05-12 09:49:59 +02:00
parent f638e14838
commit 131ba059ca

View File

@ -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?)