From e91827bf7ce63f5f243c19127b9c1044d6c27a88 Mon Sep 17 00:00:00 2001 From: Wilson Bilkovich Date: Sat, 5 Jun 2010 16:20:56 -0400 Subject: [PATCH] Fix failure when calling Exception.subclasses --- .../active_support/core_ext/object/extending.rb | 2 +- activesupport/test/core_ext/class_test.rb | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/activesupport/lib/active_support/core_ext/object/extending.rb b/activesupport/lib/active_support/core_ext/object/extending.rb index bbf6f85..920fa1e 100644 --- a/activesupport/lib/active_support/core_ext/object/extending.rb +++ b/activesupport/lib/active_support/core_ext/object/extending.rb @@ -15,7 +15,7 @@ class Object superclasses.each do |sup| ObjectSpace.each_object(class << sup; self; end) do |k| - if k != sup && (k.name.blank? || eval("defined?(::#{k}) && ::#{k}.object_id == k.object_id")) + if k != sup && (k.name.blank? || k.name == 'fatal' || eval("defined?(::#{k}) && ::#{k}.object_id == k.object_id")) subclasses << k end end diff --git a/activesupport/test/core_ext/class_test.rb b/activesupport/test/core_ext/class_test.rb index 48d8a78..ff1f343 100644 --- a/activesupport/test/core_ext/class_test.rb +++ b/activesupport/test/core_ext/class_test.rb @@ -33,7 +33,7 @@ class ClassTest < Test::Unit::TestCase Class.remove_class(Y::Z::C) assert_raise(NameError) { Y::Z::C.is_a?(Class) } end - + def test_retrieving_subclasses @parent = eval("class D; end; D") @sub = eval("class E < D; end; E") @@ -43,4 +43,11 @@ class ClassTest < Test::Unit::TestCase assert_equal [], @subofsub.subclasses assert_equal [@sub.to_s, @subofsub.to_s].sort, @parent.subclasses.sort end + + def test_retrieving_exception_subclasses + assert_nothing_raised do + found = Exception.subclasses.include?("StandardError") + assert found, "Exception should have StandardError as a subclass" + end + end end -- 1.7.1