summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJean Boussier <[email protected]>2025-05-12 09:49:59 +0200
committerJean Boussier <[email protected]>2025-05-12 09:49:59 +0200
commit131ba059cad0cff223842a739b2bc87425613b49 (patch)
tree6d310a1304820873a51d3553c1f0ded524cb320f /test
parentf638e1483835aa0497754723798a83d3bd26eace (diff)
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?. ```
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_object_id.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/test/ruby/test_object_id.rb b/test/ruby/test_object_id.rb
index 2277bba634..97ed70d839 100644
--- a/test/ruby/test_object_id.rb
+++ b/test/ruby/test_object_id.rb
@@ -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?)