提交 efd80875 编写于 作者: K Kasper Timm Hansen

Fix console tests.

上级 03c982fa
......@@ -13,6 +13,8 @@ module EnvironmentArgument #:nodoc:
def extract_environment_option_from_argument
if environment
self.options = options.merge(environment: acceptable_environment(environment))
elsif !options[:environment]
self.options = options.merge(environment: Rails::Command.environment)
end
end
......
......@@ -70,7 +70,7 @@ class ConsoleCommand < Base
class_option :sandbox, aliases: "-s", type: :boolean, default: false,
desc: "Rollback database modifications on exit."
class_option :environment, aliases: "-e", type: :string, default: Rails::Command.environment,
class_option :environment, aliases: "-e", type: :string,
desc: "Specifies the environment to run this console under (test/development/production)."
def perform
......
require "abstract_unit"
require "env_helpers"
require "rails/commands/console"
require "rails/command"
require "rails/commands/console/console_command"
class Rails::ConsoleTest < ActiveSupport::TestCase
include EnvHelpers
......@@ -102,13 +103,21 @@ def test_rails_env_is_development_when_argument_is_d
end
def test_rails_env_is_dev_when_argument_is_dev_and_dev_env_is_present
stubbed_console = Class.new(Rails::Console) do
def available_environments
Rails::Command::ConsoleCommand.class_eval do
alias_method :old_environments, :available_environments
define_method :available_environments do
["dev"]
end
end
options = stubbed_console.parse_arguments(["dev"])
assert_match("dev", options[:environment])
assert_match("dev", parse_arguments(["dev"])[:environment])
ensure
Rails::Command::ConsoleCommand.class_eval do
undef_method :available_environments
alias_method :available_environments, :old_environments
undef_method :old_environments
end
end
attr_reader :output
......@@ -148,6 +157,21 @@ def load_console
end
def parse_arguments(args)
Rails::Console.parse_arguments(args)
Rails::Command::ConsoleCommand.class_eval do
alias_method :old_perform, :perform
define_method(:perform) do
extract_environment_option_from_argument
options
end
end
Rails::Command.invoke(:console, args)
ensure
Rails::Command::ConsoleCommand.class_eval do
undef_method :perform
alias_method :perform, :old_perform
undef_method :old_perform
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册