aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/application
diff options
context:
space:
mode:
authorXavier Noria <fxn@hashref.com>2019-04-14 11:37:50 +0200
committerXavier Noria <fxn@hashref.com>2019-04-14 12:09:09 +0200
commit3e66ba91d511158e22f90ff96b594d61f40eda01 (patch)
tree97257467b80f6d7d087d198c5edac8f9651b3875 /railties/test/application
parentf8944ed22dc9453dea5814676fa49ce119a58726 (diff)
downloadrails-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/application')
-rw-r--r--railties/test/application/configuration_test.rb55
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