diff options
author | José Valim <jose.valim@gmail.com> | 2012-08-01 18:23:11 +0200 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2012-08-21 14:46:12 -0300 |
commit | a1687e48cba2f0447f02248939cde05502562e87 (patch) | |
tree | 8128aeed24a85510ed71093f7b1a09ba04d7d800 /activesupport/test/autoload_test.rb | |
parent | 11bc3487ab0a9a99de2542f0aa2777c88c7c2198 (diff) | |
download | rails-a1687e48cba2f0447f02248939cde05502562e87.tar.gz rails-a1687e48cba2f0447f02248939cde05502562e87.tar.bz2 rails-a1687e48cba2f0447f02248939cde05502562e87.zip |
Make ActiveSupport::Autoload local
Previously, ActiveSupport::Autoload was global and reserved
for usage inside Rails. This pull request makes it local,
fixes its test (they were not being run because its file
was named wrongly) and make it part of Rails public API.
Diffstat (limited to 'activesupport/test/autoload_test.rb')
-rw-r--r-- | activesupport/test/autoload_test.rb | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/activesupport/test/autoload_test.rb b/activesupport/test/autoload_test.rb new file mode 100644 index 0000000000..7d02d835a8 --- /dev/null +++ b/activesupport/test/autoload_test.rb @@ -0,0 +1,70 @@ +require 'abstract_unit' + +class TestAutoloadModule < ActiveSupport::TestCase + include ActiveSupport::Testing::Isolation + + module ::Fixtures + extend ActiveSupport::Autoload + + module Autoload + extend ActiveSupport::Autoload + end + end + + test "the autoload module works like normal autoload" do + module ::Fixtures::Autoload + autoload :SomeClass, "fixtures/autoload/some_class" + end + + assert_nothing_raised { ::Fixtures::Autoload::SomeClass } + end + + test "when specifying an :eager constant it still works like normal autoload by default" do + module ::Fixtures::Autoload + autoload :SomeClass, "fixtures/autoload/some_class" + end + + assert !$LOADED_FEATURES.include?("fixtures/autoload/some_class.rb") + assert_nothing_raised { ::Fixtures::Autoload::SomeClass } + end + + test "the location of autoloaded constants defaults to :name.underscore" do + module ::Fixtures::Autoload + autoload :SomeClass + end + + assert !$LOADED_FEATURES.include?("fixtures/autoload/some_class.rb") + assert_nothing_raised { ::Fixtures::Autoload::SomeClass } + end + + test "the location of :eager autoloaded constants defaults to :name.underscore" do + module ::Fixtures::Autoload + autoload :SomeClass + end + + ::Fixtures::Autoload.eager_load! + assert_nothing_raised { ::Fixtures::Autoload::SomeClass } + end + + test "a directory for a block of autoloads can be specified" do + module ::Fixtures + autoload_under "autoload" do + autoload :AnotherClass + end + end + + assert !$LOADED_FEATURES.include?("fixtures/autoload/another_class.rb") + assert_nothing_raised { ::Fixtures::AnotherClass } + end + + test "a path for a block of autoloads can be specified" do + module ::Fixtures + autoload_at "fixtures/autoload/another_class" do + autoload :AnotherClass + end + end + + assert !$LOADED_FEATURES.include?("fixtures/autoload/another_class.rb") + assert_nothing_raised { ::Fixtures::AnotherClass } + end +end
\ No newline at end of file |