mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
29f0fbd5db
The Rails test runner supports three ways to run tests: directly, via rake, or ruby. When Running with Ruby ala `ruby -Itest test/models/post_test.rb` our test file would be evaluated first, requiring `test_helper` and then `active_support/testing/autorun` that would then require the test file (which it hadn't been before) thus reevaluating it. This caused exceptions if using Active Support's declarative syntax. Fix this by shifting around when we set the how we're run to closer mimick the require order. If we're running with `bin/rails test` the test command file is run first and we then set `run_with_rails_extension`, later we hit `active_support/testing/autorun` and do nothing — because we've been run elsewhere. If we at this point haven't set `run_with_rails_extension` we've been running with `ruby` this whole time and thus we set that. We should always trigger `Minitest.autorun` as it doesn't hurt to call it twice. Consolidate the two methods into a single one that better brings out the intent of why they're there.
11 lines
263 B
Ruby
11 lines
263 B
Ruby
require "rails/test_unit/minitest_plugin"
|
|
|
|
if defined?(ENGINE_ROOT)
|
|
$LOAD_PATH << File.expand_path("test", ENGINE_ROOT)
|
|
else
|
|
$LOAD_PATH << File.expand_path("../../test", APP_PATH)
|
|
end
|
|
|
|
Minitest.run_via[:rails] = true
|
|
|
|
require "active_support/testing/autorun"
|