mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Prevent the test framework from being loaded in production mode
The test framework should not be autoloaded in production mode. Before this commit, the testing railtie would extend AS::TestCase. This caused AS::TestCase to be preloaded regardless of the environment in which we were running. This commit just moves the code that adds line filtering support in to the test command where we actually execute the test runner. That allows us to maintain the line runner feature but only load the minimal amount of code we need.
This commit is contained in:
parent
54a5b99a00
commit
797f1dd63c
3 changed files with 14 additions and 6 deletions
|
@ -1,5 +1,6 @@
|
||||||
require "rails/command"
|
require "rails/command"
|
||||||
require "rails/test_unit/minitest_plugin"
|
require "rails/test_unit/minitest_plugin"
|
||||||
|
require "rails/test_unit/line_filtering"
|
||||||
|
|
||||||
module Rails
|
module Rails
|
||||||
module Command
|
module Command
|
||||||
|
@ -11,6 +12,10 @@ module Rails
|
||||||
def perform(*)
|
def perform(*)
|
||||||
$LOAD_PATH << Rails::Command.root.join("test")
|
$LOAD_PATH << Rails::Command.root.join("test")
|
||||||
|
|
||||||
|
# Add test line filtering support for running test by line number
|
||||||
|
# via the command line.
|
||||||
|
ActiveSupport::TestCase.extend Rails::LineFiltering
|
||||||
|
|
||||||
Minitest.run_via[:rails] = true
|
Minitest.run_via[:rails] = true
|
||||||
|
|
||||||
require "active_support/testing/autorun"
|
require "active_support/testing/autorun"
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
require "rails/test_unit/line_filtering"
|
|
||||||
|
|
||||||
if defined?(Rake.application) && Rake.application.top_level_tasks.grep(/^(default$|test(:|$))/).any?
|
if defined?(Rake.application) && Rake.application.top_level_tasks.grep(/^(default$|test(:|$))/).any?
|
||||||
ENV["RAILS_ENV"] ||= "test"
|
ENV["RAILS_ENV"] ||= "test"
|
||||||
end
|
end
|
||||||
|
@ -13,10 +11,6 @@ module Rails
|
||||||
c.integration_tool :test_unit
|
c.integration_tool :test_unit
|
||||||
end
|
end
|
||||||
|
|
||||||
initializer "test_unit.line_filtering" do
|
|
||||||
ActiveSupport::TestCase.extend Rails::LineFiltering
|
|
||||||
end
|
|
||||||
|
|
||||||
rake_tasks do
|
rake_tasks do
|
||||||
load "rails/test_unit/testing.rake"
|
load "rails/test_unit/testing.rake"
|
||||||
end
|
end
|
||||||
|
|
|
@ -43,6 +43,15 @@ module ApplicationTests
|
||||||
assert_match "42", Dir.chdir(app_path) { `bin/rails runner "bin/count_users.rb"` }
|
assert_match "42", Dir.chdir(app_path) { `bin/rails runner "bin/count_users.rb"` }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_no_minitest_loaded_in_production_mode
|
||||||
|
app_file "bin/print_features.rb", <<-SCRIPT
|
||||||
|
p $LOADED_FEATURES.grep(/minitest/)
|
||||||
|
SCRIPT
|
||||||
|
assert_match "[]", Dir.chdir(app_path) {
|
||||||
|
`RAILS_ENV=production bin/rails runner "bin/print_features.rb"`
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
def test_should_set_dollar_0_to_file
|
def test_should_set_dollar_0_to_file
|
||||||
app_file "bin/dollar0.rb", <<-SCRIPT
|
app_file "bin/dollar0.rb", <<-SCRIPT
|
||||||
puts $0
|
puts $0
|
||||||
|
|
Loading…
Reference in a new issue