Fix Dependencies.autoloaded? to ignore anonymous modules. Closes #6561.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5811 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Nicholas Seckar
2006-12-31 18:53:58 +00:00
parent 54e56ddb60
commit 91b71ed30c
3 changed files with 6 additions and 1 deletions

View File

@@ -1,5 +1,7 @@
*SVN*
* Fix Dependencies.autoloaded? to ignore anonymous modules. Closes #6561. [Nicholas Seckar]
* Update load once paths to prevent nested once constants from being detected and claimed by an external non-once load. [Nicholas Seckar]
* Deprecation: silence warnings when reporting test errors. [Jeremy Kemper]

View File

@@ -278,6 +278,7 @@ module Dependencies #:nodoc:
# Determine if the given constant has been automatically loaded.
def autoloaded?(desc)
return false if desc.is_a?(Module) && desc.name.empty? # Empty name => anonymous module.
name = to_constant_name desc
return false unless qualified_const_defined? name
return autoloaded_constants.include?(name)

View File

@@ -305,6 +305,8 @@ class DependenciesTest < Test::Unit::TestCase
assert Dependencies.autoloaded?("::ModuleFolder")
assert Dependencies.autoloaded?(:ModuleFolder)
assert ! Dependencies.autoloaded?(Module.new)
Object.send :remove_const, :ModuleFolder
end
end
@@ -705,7 +707,7 @@ class DependenciesTest < Test::Unit::TestCase
def test_load_once_constants_should_not_be_unloaded
with_loading 'autoloading_fixtures' do
Dependencies.load_once_paths = Dependencies.load_paths
::A
::A.to_s
assert defined?(A)
Dependencies.clear
assert defined?(A)