summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2023-02-08 15:27:28 -0500
committerAaron Patterson <aaron.patterson@gmail.com>2023-02-09 11:24:32 -0800
commitb9e6580135d20cf3fff2e872b3e54c08e96468cb (patch)
tree9618a8a275d1a293d8523eb876a782a181173cf6 /test/ruby
parent0ddf29f4d170e90b895f4fbd313a716d770932b8 (diff)
downloadruby-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.rb6
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)