diff options
author | Xavier Noria <fxn@hashref.com> | 2019-04-14 11:37:50 +0200 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2019-04-14 12:09:09 +0200 |
commit | 3e66ba91d511158e22f90ff96b594d61f40eda01 (patch) | |
tree | 97257467b80f6d7d087d198c5edac8f9651b3875 /railties/test | |
parent | f8944ed22dc9453dea5814676fa49ce119a58726 (diff) | |
download | rails-3e66ba91d511158e22f90ff96b594d61f40eda01.tar.gz rails-3e66ba91d511158e22f90ff96b594d61f40eda01.tar.bz2 rails-3e66ba91d511158e22f90ff96b594d61f40eda01.zip |
deprecates autoloading constants during initialization [closes #35745]
See rationale in the warning message included in the patch.
Diffstat (limited to 'railties/test')
-rw-r--r-- | railties/test/application/configuration_test.rb | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index b8e167b488..a2e3e781c0 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -1704,6 +1704,61 @@ module ApplicationTests end end + test "autoloading during initialization gets deprecation message and clearing if config.cache_classes is false" do + app_file "lib/c.rb", <<~EOS + class C + extend ActiveSupport::DescendantsTracker + end + + class X < C + end + EOS + + app_file "app/models/d.rb", <<~EOS + require "c" + + class D < C + end + EOS + + app_file "config/initializers/autoload.rb", "D" + + app "development" + + # TODO: Test deprecation message, assert_depcrecated { app "development" } + # does not collect it. + + assert_equal [X], C.descendants + assert_empty ActiveSupport::Dependencies.autoloaded_constants + end + + test "autoloading during initialization triggers nothing if config.cache_classes is true" do + app_file "lib/c.rb", <<~EOS + class C + extend ActiveSupport::DescendantsTracker + end + + class X < C + end + EOS + + app_file "app/models/d.rb", <<~EOS + require "c" + + class D < C + end + EOS + + app_file "config/initializers/autoload.rb", "D" + + app "production" + + # TODO: Test no deprecation message is issued. + + assert_equal [X, D], C.descendants + end + + test "raises with proper error message if no database configuration found" do FileUtils.rm("#{app_path}/config/database.yml") err = assert_raises RuntimeError do |