mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
7529283732
rails server takes `-e` as an argument to specify RAILS_ENV, rails console currently does not have the same interface. This commit fixes this disparity so developers can manually specify `RAILS_ENV` or can pass in an environment with a `-e`.
106 lines
2.2 KiB
Ruby
106 lines
2.2 KiB
Ruby
require 'abstract_unit'
|
|
require 'rails/commands/console'
|
|
|
|
class Rails::ConsoleTest < ActiveSupport::TestCase
|
|
class FakeConsole
|
|
end
|
|
|
|
def setup
|
|
end
|
|
|
|
def test_sandbox_option
|
|
console = Rails::Console.new(app, ["--sandbox"])
|
|
assert console.sandbox?
|
|
end
|
|
|
|
def test_short_version_of_sandbox_option
|
|
console = Rails::Console.new(app, ["-s"])
|
|
assert console.sandbox?
|
|
end
|
|
|
|
def test_debugger_option
|
|
console = Rails::Console.new(app, ["--debugger"])
|
|
assert console.debugger?
|
|
end
|
|
|
|
def test_no_options
|
|
console = Rails::Console.new(app, [])
|
|
assert !console.debugger?
|
|
assert !console.sandbox?
|
|
end
|
|
|
|
def test_start
|
|
app.expects(:sandbox=).with(nil)
|
|
FakeConsole.expects(:start)
|
|
|
|
start
|
|
|
|
assert_match /Loading \w+ environment \(Rails/, output
|
|
end
|
|
|
|
def test_start_with_debugger
|
|
app.expects(:sandbox=).with(nil)
|
|
rails_console.expects(:require_debugger).returns(nil)
|
|
FakeConsole.expects(:start)
|
|
|
|
start ["--debugger"]
|
|
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
|
|
app.expects(:sandbox=).with(nil)
|
|
FakeConsole.expects(:start)
|
|
|
|
start ["-e production"]
|
|
|
|
assert_match /production/, output
|
|
end
|
|
|
|
def test_console_with_rails_environment
|
|
app.expects(:sandbox=).with(nil)
|
|
FakeConsole.expects(:start)
|
|
|
|
start ["RAILS_ENV=production"]
|
|
|
|
assert_match /production/, 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
|
|
|
|
private
|
|
|
|
attr_reader :output
|
|
|
|
def rails_console
|
|
@rails_console ||= Rails::Console.new(app)
|
|
end
|
|
|
|
def start(argv = [])
|
|
rails_console.stubs(:arguments => argv)
|
|
@output = output = capture(:stdout) { rails_console.start }
|
|
end
|
|
|
|
def app
|
|
@app ||= begin
|
|
config = mock("config", :console => FakeConsole)
|
|
app = mock("app", :config => config)
|
|
app.expects(:load_console)
|
|
app
|
|
end
|
|
end
|
|
end
|