aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-07-07 14:48:16 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-07-07 14:48:16 +0000
commit703ac4c5ac68f68b48debd1bfc352cd687b2df30 (patch)
tree8606fe9c0f52beabf8b17decd79c39dcae9e0ad7 /activesupport/test
parentb640a647603f869eca5cbecce3dbc94cb47447ad (diff)
downloadrails-703ac4c5ac68f68b48debd1bfc352cd687b2df30.tar.gz
rails-703ac4c5ac68f68b48debd1bfc352cd687b2df30.tar.bz2
rails-703ac4c5ac68f68b48debd1bfc352cd687b2df30.zip
Added more efficient implementation of the development mode reset of classes #1638 [Chris McGrath]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1761 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport/test')
-rw-r--r--activesupport/test/core_ext/object_and_class_ext_test.rb30
1 files changed, 29 insertions, 1 deletions
diff --git a/activesupport/test/core_ext/object_and_class_ext_test.rb b/activesupport/test/core_ext/object_and_class_ext_test.rb
index cf75159575..29b2f2fc8b 100644
--- a/activesupport/test/core_ext/object_and_class_ext_test.rb
+++ b/activesupport/test/core_ext/object_and_class_ext_test.rb
@@ -12,6 +12,20 @@ class RemoveSubsBaseClass
end
end
class RemoveSubsSubClass < RemoveSubsBaseClass; end
+class RemoveSubsTestClass2; end
+class RemoveSubsBaseClass2
+ def self.add_ivar
+ @ivar = RemoveSubsTestClass2.new
+ end
+end
+class RemoveSubsSubClass2 < RemoveSubsBaseClass2; end
+class RemoveSubsTestClass3; end
+class RemoveSubsBaseClass3
+ def self.add_ivar
+ @ivar = RemoveSubsTestClass3.new
+ end
+end
+class RemoveSubsSubClass3 < RemoveSubsBaseClass3; end
class ClassExtTest < Test::Unit::TestCase
def test_methods
@@ -48,4 +62,18 @@ class ObjectTests < Test::Unit::TestCase
flunk("ObjectSpace still contains RemoveSubsTestClass") if o.class == RemoveSubsTestClass
end
end
-end \ No newline at end of file
+
+ def test_remove_subclasses_of_multiple_classes_unsets_ivars
+ r2 = RemoveSubsSubClass2.new
+ RemoveSubsSubClass2.add_ivar
+ r3 = RemoveSubsSubClass3.new
+ RemoveSubsSubClass3.add_ivar
+
+ Object.remove_subclasses_of(RemoveSubsBaseClass2, RemoveSubsBaseClass3)
+
+ GC.start
+ ObjectSpace.each_object do |o|
+ flunk("ObjectSpace still contains RemoveSubsTestClass") if o.class == RemoveSubsTestClass
+ end
+ end
+end