1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Just change ENV and restore it afterwards.

Stubbing ENV[] is not safe outside MRI. At some point after the
stubbing has occurred a backtrace is printed to the ActiveSupport
warning log: there Rubinius accesses ENV['RBX_NOCOLOR'] to determine
if it should print the backtrace with colors or not, causing the
stub to fail. Other implementations might access ENV in a different
way too, we just can't predict it.
The only thing we can do here is to actually set the ENV with what
we want and restore it afterwards.
This commit is contained in:
Federico Ravasio 2013-10-07 10:15:23 +02:00
parent 21a71cd5d8
commit afd0a8ab5f

View file

@ -253,7 +253,8 @@ class FixturesTest < ActiveRecord::TestCase
end end
def test_fixtures_are_set_up_with_database_env_variable def test_fixtures_are_set_up_with_database_env_variable
ENV.stubs(:[]).with("DATABASE_URL").returns("sqlite3:///:memory:") db_url_tmp = ENV['DATABASE_URL']
ENV['DATABASE_URL'] = "sqlite3:///:memory:"
ActiveRecord::Base.stubs(:configurations).returns({}) ActiveRecord::Base.stubs(:configurations).returns({})
test_case = Class.new(ActiveRecord::TestCase) do test_case = Class.new(ActiveRecord::TestCase) do
fixtures :accounts fixtures :accounts
@ -266,6 +267,8 @@ class FixturesTest < ActiveRecord::TestCase
result = test_case.new(:test_fixtures).run result = test_case.new(:test_fixtures).run
assert result.passed?, "Expected #{result.name} to pass:\n#{result}" assert result.passed?, "Expected #{result.name} to pass:\n#{result}"
ensure
ENV['DATABASE_URL'] = db_url_tmp
end end
end end