diff options
author | eileencodes <eileencodes@gmail.com> | 2023-02-08 15:27:28 -0500 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2023-02-09 11:24:32 -0800 |
commit | b9e6580135d20cf3fff2e872b3e54c08e96468cb (patch) | |
tree | 9618a8a275d1a293d8523eb876a782a181173cf6 /test/ruby | |
parent | 0ddf29f4d170e90b895f4fbd313a716d770932b8 (diff) | |
download | ruby-b9e6580135d20cf3fff2e872b3e54c08e96468cb.tar.gz |
Copy cvar table on clone
When a class with a class variable is cloned we need to also copy the
cvar cache table from the original table to the clone. I found this bug
while working on fixing [Bug #19379]. While this does not fix that bug
directly it is still a required change to fix another bug revealed by
the fix in https://github.com/ruby/ruby/pull/7265
This needs to be backported to 3.2.x and 3.1.x.
Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
Diffstat (limited to 'test/ruby')
-rw-r--r-- | test/ruby/test_variable.rb | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/test/ruby/test_variable.rb b/test/ruby/test_variable.rb index 195f5c94fb..b7892f0cdc 100644 --- a/test/ruby/test_variable.rb +++ b/test/ruby/test_variable.rb @@ -33,6 +33,12 @@ class TestVariable < Test::Unit::TestCase end end + Athena = Gods.clone + + def test_cloned_classes_copy_cvar_cache + assert_equal "Cronus", Athena.new.ruler0 + end + def test_setting_class_variable_on_module_through_inheritance mod = Module.new mod.class_variable_set(:@@foo, 1) |