diff --git a/lib/utilrb/logger/hierarchy.rb b/lib/utilrb/logger/hierarchy.rb index 9c23973..9ef75d0 100644 --- a/lib/utilrb/logger/hierarchy.rb +++ b/lib/utilrb/logger/hierarchy.rb @@ -130,8 +130,13 @@ def logger break end end + if m.respond_to?(:superclass) m = m.superclass + if m.respond_to?(:logger) + parent_module = m + break + end else m = nil; break end diff --git a/test/test_logger.rb b/test/test_logger.rb index 62b3606..fadfa84 100644 --- a/test/test_logger.rb +++ b/test/test_logger.rb @@ -178,6 +178,10 @@ def test_hierarchy_can_resolve_parent_logger_with_identical_name def test_hierarchy_can_resolve_parent_logger_in_subclasses_where_the_subclass_parent_module_is_not_providing_a_logger assert_equal "root_logger", NotALoggingModule::HierarchyTest.logger end + def test_hierarchy_resolution_starts_at_superclass_if_enclosing_module_does_not_provide_a_logger + flexmock(HierarchyTest::HierarchyTest).should_receive(logger: "specific_class_logger") + assert_equal "specific_class_logger", NotALoggingModule::HierarchyTest.logger + end def test_hierarchy_resolves_the_parent_module_first_even_in_subclasses assert_equal "other_logger", HierarchyTestForSubclass::HierarchyTest.logger end