1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/railties/test/commands/console_test.rb
Carlos Antonio da Silva 5a8f25f003 Refactor tests that switch RAILS_ENV and RACK_ENV
This cleanup aims to fix a build failure:
https://travis-ci.org/rails/rails/jobs/3515951/#L482

Since travis always have both ENV vars set to "test", a test is failing
where it's expected to output the default env "development", but "test"
is the result due to RACK_ENV being set when we expect it to not be.

By cleaning this duplication we ensure that changing any of these env
variables will pick the right expected value.
2012-12-06 10:47:14 -02:00

136 lines
3.1 KiB
Ruby

require 'abstract_unit'
require 'env_helpers'
require 'rails/commands/console'
class Rails::ConsoleTest < ActiveSupport::TestCase
include EnvHelpers
class FakeConsole
def self.start; end
end
def test_sandbox_option
console = Rails::Console.new(app, parse_arguments(["--sandbox"]))
assert console.sandbox?
end
def test_short_version_of_sandbox_option
console = Rails::Console.new(app, parse_arguments(["-s"]))
assert console.sandbox?
end
def test_debugger_option
console = Rails::Console.new(app, parse_arguments(["--debugger"]))
assert console.debugger?
end
def test_no_options
console = Rails::Console.new(app, parse_arguments([]))
assert !console.debugger?
assert !console.sandbox?
end
def test_start
FakeConsole.expects(:start)
start
assert_match(/Loading \w+ environment \(Rails/, output)
end
def test_start_with_debugger
rails_console = Rails::Console.new(app, parse_arguments(["--debugger"]))
rails_console.expects(:require_debugger).returns(nil)
silence_stream(STDOUT) { rails_console.start }
end
def test_start_with_sandbox
app.expects(:sandbox=).with(true)
FakeConsole.expects(:start)
start ["--sandbox"]
assert_match(/Loading \w+ environment in sandbox \(Rails/, output)
end
def test_console_with_environment
start ["-e production"]
assert_match(/\sproduction\s/, output)
end
def test_console_defaults_to_IRB
config = mock("config", console: nil)
app = mock("app", config: config)
app.expects(:load_console).returns(nil)
assert_equal IRB, Rails::Console.new(app).console
end
def test_default_environment_with_no_rails_env
with_rails_env nil do
start
assert_match(/\sdevelopment\s/, output)
end
end
def test_default_environment_with_rails_env
with_rails_env 'special-production' do
start
assert_match(/\sspecial-production\s/, output)
end
end
def test_default_environment_with_rack_env
with_rack_env 'production' do
start
assert_match(/\sproduction\s/, output)
end
end
def test_e_option
start ['-e', 'special-production']
assert_match(/\sspecial-production\s/, output)
end
def test_environment_option
start ['--environment=special-production']
assert_match(/\sspecial-production\s/, output)
end
def test_rails_env_is_production_when_first_argument_is_p
start ['p']
assert_match(/\sproduction\s/, output)
end
def test_rails_env_is_test_when_first_argument_is_t
start ['t']
assert_match(/\stest\s/, output)
end
def test_rails_env_is_development_when_argument_is_d
start ['d']
assert_match(/\sdevelopment\s/, output)
end
private
attr_reader :output
def start(argv = [])
rails_console = Rails::Console.new(app, parse_arguments(argv))
@output = capture(:stdout) { rails_console.start }
end
def app
@app ||= begin
config = mock("config", console: FakeConsole)
app = mock("app", config: config)
app.stubs(:sandbox=).returns(nil)
app.expects(:load_console)
app
end
end
def parse_arguments(args)
Rails::Console.parse_arguments(args)
end
end