Merge branch 'rm-remove-mocha'

Conflicts:
	actionpack/test/abstract_unit.rb
This commit is contained in:
Rafael Mendonça França 2014-07-19 18:17:13 -03:00
commit 08754f12e6
20 changed files with 183 additions and 85 deletions

@ -49,3 +49,5 @@ def rubinius_skip(message = '')
def jruby_skip(message = '')
skip message if defined?(JRUBY_VERSION)
end
require 'mocha/setup' # FIXME: stop using mocha

@ -438,6 +438,8 @@ def jruby_skip(message = '')
skip message if defined?(JRUBY_VERSION)
end
require 'mocha/setup' # FIXME: stop using mocha
class ForkingExecutor
class Server
include DRb::DRbUndumped

@ -338,3 +338,5 @@ def rubinius_skip(message = '')
def jruby_skip(message = '')
skip message if defined?(JRUBY_VERSION)
end
require 'mocha/setup' # FIXME: stop using mocha

@ -11,3 +11,5 @@
I18n.enforce_available_locales = false
require 'active_support/testing/autorun'
require 'mocha/setup' # FIXME: stop using mocha

@ -199,3 +199,5 @@ def in_time_zone(zone)
ActiveRecord::Base.time_zone_aware_attributes = old_tz
end
end
require 'mocha/setup' # FIXME: stop using mocha

@ -9,11 +9,6 @@
require 'active_support/core_ext/kernel/reporting'
require 'active_support/deprecation'
begin
silence_warnings { require 'mocha/setup' }
rescue LoadError
end
module ActiveSupport
class TestCase < ::Minitest::Test
Assertion = Minitest::Assertion

@ -36,3 +36,5 @@ def rubinius_skip(message = '')
def jruby_skip(message = '')
skip message if defined?(JRUBY_VERSION)
end
require 'mocha/setup' # FIXME: stop using mocha

@ -2,6 +2,8 @@
module Rails
module AppRailsLoader
extend self
RUBY = Gem.ruby
EXECUTABLES = ['bin/rails', 'script/rails']
BUNDLER_WARNING = <<EOS
@ -26,7 +28,7 @@ module AppRailsLoader
EOS
def self.exec_app_rails
def exec_app_rails
original_cwd = Dir.pwd
loop do
@ -54,7 +56,7 @@ def self.exec_app_rails
end
end
def self.find_executable
def find_executable
EXECUTABLES.find { |exe| File.file?(exe) }
end
end

@ -3,13 +3,27 @@
require 'rails/app_rails_loader'
class AppRailsLoaderTest < ActiveSupport::TestCase
def loader
@loader ||= Class.new do
extend Rails::AppRailsLoader
def self.exec_arguments
@exec_arguments
end
def self.exec(*args)
@exec_arguments = args
end
end
end
def write(filename, contents=nil)
FileUtils.mkdir_p(File.dirname(filename))
File.write(filename, contents)
end
def expects_exec(exe)
Rails::AppRailsLoader.expects(:exec).with(Rails::AppRailsLoader::RUBY, exe)
assert_equal [Rails::AppRailsLoader::RUBY, exe], loader.exec_arguments
end
setup do
@ -22,30 +36,30 @@ def expects_exec(exe)
exe = "#{script_dir}/rails"
test "is not in a Rails application if #{exe} is not found in the current or parent directories" do
File.stubs(:file?).with('bin/rails').returns(false)
File.stubs(:file?).with('script/rails').returns(false)
def loader.find_executables; end
assert !Rails::AppRailsLoader.exec_app_rails
assert !loader.exec_app_rails
end
test "is not in a Rails application if #{exe} exists but is a folder" do
FileUtils.mkdir_p(exe)
assert !Rails::AppRailsLoader.exec_app_rails
assert !loader.exec_app_rails
end
['APP_PATH', 'ENGINE_PATH'].each do |keyword|
test "is in a Rails application if #{exe} exists and contains #{keyword}" do
write exe, keyword
loader.exec_app_rails
expects_exec exe
Rails::AppRailsLoader.exec_app_rails
end
test "is not in a Rails application if #{exe} exists but doesn't contain #{keyword}" do
write exe
assert !Rails::AppRailsLoader.exec_app_rails
assert !loader.exec_app_rails
end
test "is in a Rails application if parent directory has #{exe} containing #{keyword} and chdirs to the root directory" do
@ -54,8 +68,9 @@ def expects_exec(exe)
Dir.chdir('foo/bar')
loader.exec_app_rails
expects_exec exe
Rails::AppRailsLoader.exec_app_rails
# Compare the realpath in case either of them has symlinks.
#

@ -66,13 +66,25 @@ def teardown
config.action_dispatch.show_exceptions = true
RUBY
require "#{app_path}/config/environment"
ActiveRecord::Migrator.stubs(:needs_migration?).returns(true)
ActiveRecord::NullMigration.any_instance.stubs(:mtime).returns(1)
app_file 'db/migrate/20140708012246_create_user.rb', <<-RUBY
class CreateUser < ActiveRecord::Migration
def change
create_table :users
end
end
RUBY
get "/foo"
assert_equal 500, last_response.status
assert_match "ActiveRecord::PendingMigrationError", last_response.body
require "#{app_path}/config/environment"
ActiveRecord::Migrator.migrations_paths = ["#{app_path}/db/migrate"]
begin
get "/foo"
assert_equal 500, last_response.status
assert_match "ActiveRecord::PendingMigrationError", last_response.body
ensure
ActiveRecord::Migrator.migrations_paths = nil
end
end
test "Rails.groups returns available groups" do
@ -372,6 +384,8 @@ def persisted?; true; end
end
RUBY
token = "cf50faa3fe97702ca1ae"
app_file 'app/controllers/posts_controller.rb', <<-RUBY
class PostsController < ApplicationController
def show
@ -381,6 +395,10 @@ def show
def update
render text: "update"
end
private
def form_authenticity_token; token; end # stub the authenticy token
end
RUBY
@ -392,8 +410,6 @@ def update
require "#{app_path}/config/environment"
token = "cf50faa3fe97702ca1ae"
PostsController.any_instance.stubs(:form_authenticity_token).returns(token)
params = {authenticity_token: token}
get "/posts/1"

@ -11,10 +11,12 @@ class LoggerTest < ActiveSupport::TestCase
def setup
build_app
add_to_config <<-RUBY
config.logger = ActiveSupport::LogSubscriber::TestHelper::MockLogger.new
RUBY
require "#{app_path}/config/environment"
super
@logger = MockLogger.new
Rails.stubs(:logger).returns(@logger)
end
def teardown
@ -23,7 +25,7 @@ def teardown
end
def logs
@logs ||= @logger.logged(:info).join("\n")
@logs ||= Rails.logger.logged(:info).join("\n")
end
test "logger logs proper HTTP GET verb and path" do

@ -6,7 +6,13 @@ class Rails::ConsoleTest < ActiveSupport::TestCase
include EnvHelpers
class FakeConsole
def self.start; end
def self.started?
@started
end
def self.start
@started = true
end
end
def test_sandbox_option
@ -25,17 +31,18 @@ def test_no_options
end
def test_start
FakeConsole.expects(:start)
start
assert app.console.started?
assert_match(/Loading \w+ environment \(Rails/, output)
end
def test_start_with_sandbox
app.expects(:sandbox=).with(true)
FakeConsole.expects(:start)
start ["--sandbox"]
assert app.console.started?
assert app.sandbox
assert_match(/Loading \w+ environment in sandbox \(Rails/, output)
end
@ -64,7 +71,7 @@ def test_console_with_environment
end
def test_console_defaults_to_IRB
app = build_app(console: nil)
app = build_app(nil)
assert_equal IRB, Rails::Console.new(app).console
end
@ -115,8 +122,12 @@ 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
Rails::Console.stubs(:available_environments).returns(['dev'])
options = Rails::Console.parse_arguments(['dev'])
stubbed_console = Class.new(Rails::Console) do
def available_environments
['dev']
end
end
options = stubbed_console.parse_arguments(['dev'])
assert_match('dev', options[:environment])
end
@ -131,15 +142,29 @@ def start(argv = [])
end
def app
@app ||= build_app(console: FakeConsole)
@app ||= build_app(FakeConsole)
end
def build_app(config)
config = mock("config", config)
app = mock("app", config: config)
app.stubs(:sandbox=).returns(nil)
app.expects(:load_console)
app
def build_app(console)
mocked_console = Class.new do
attr_reader :sandbox, :console
def initialize(console)
@console = console
end
def config
self
end
def sandbox=(arg)
@sandbox = arg
end
def load_console
end
end
mocked_console.new(console)
end
def parse_arguments(args)

@ -1,4 +1,5 @@
require 'abstract_unit'
require 'minitest/mock'
require 'rails/commands/dbconsole'
class Rails::DBConsoleTest < ActiveSupport::TestCase
@ -26,20 +27,21 @@ def test_config_with_db_config_only
"timeout"=> "3000"
}
}
app_db_config(config_sample)
assert_equal Rails::DBConsole.new.config, config_sample["test"]
app_db_config(config_sample) do
assert_equal Rails::DBConsole.new.config, config_sample["test"]
end
end
def test_config_with_no_db_config
app_db_config(nil)
assert_raise(ActiveRecord::AdapterNotSpecified) {
Rails::DBConsole.new.config
}
app_db_config(nil) do
assert_raise(ActiveRecord::AdapterNotSpecified) {
Rails::DBConsole.new.config
}
end
end
def test_config_with_database_url_only
ENV['DATABASE_URL'] = 'postgresql://foo:bar@localhost:9000/foo_test?pool=5&timeout=3000'
app_db_config(nil)
expected = {
"adapter" => "postgresql",
"host" => "localhost",
@ -50,7 +52,10 @@ def test_config_with_database_url_only
"pool" => "5",
"timeout" => "3000"
}.sort
assert_equal expected, Rails::DBConsole.new.config.sort
app_db_config(nil) do
assert_equal expected, Rails::DBConsole.new.config.sort
end
end
def test_config_choose_database_url_if_exists
@ -68,8 +73,9 @@ def test_config_choose_database_url_if_exists
"timeout" => "3000"
}
}
app_db_config(sample_config)
assert_equal host, Rails::DBConsole.new.config["host"]
app_db_config(sample_config) do
assert_equal host, Rails::DBConsole.new.config["host"]
end
end
def test_env
@ -78,58 +84,65 @@ def test_env
ENV['RAILS_ENV'] = nil
ENV['RACK_ENV'] = nil
Rails.stubs(:respond_to?).with(:env).returns(false)
assert_equal Rails::DBConsole.new.environment, "development"
Rails.stub(:respond_to?, false) do
assert_equal Rails::DBConsole.new.environment, "development"
ENV['RACK_ENV'] = "rack_env"
assert_equal Rails::DBConsole.new.environment, "rack_env"
ENV['RACK_ENV'] = "rack_env"
assert_equal Rails::DBConsole.new.environment, "rack_env"
ENV['RAILS_ENV'] = "rails_env"
assert_equal Rails::DBConsole.new.environment, "rails_env"
ENV['RAILS_ENV'] = "rails_env"
assert_equal Rails::DBConsole.new.environment, "rails_env"
end
ensure
ENV['RAILS_ENV'] = "test"
end
def test_rails_env_is_development_when_argument_is_dev
Rails::DBConsole.stubs(:available_environments).returns(['development', 'test'])
options = Rails::DBConsole.new.send(:parse_arguments, ['dev'])
assert_match('development', options[:environment])
dbconsole = Rails::DBConsole.new
dbconsole.stub(:available_environments, ['development', 'test']) do
options = dbconsole.send(:parse_arguments, ['dev'])
assert_match('development', options[:environment])
end
end
def test_rails_env_is_dev_when_argument_is_dev_and_dev_env_is_present
Rails::DBConsole.stubs(:available_environments).returns(['dev'])
options = Rails::DBConsole.new.send(:parse_arguments, ['dev'])
assert_match('dev', options[:environment])
dbconsole = Rails::DBConsole.new
dbconsole.stub(:available_environments, ['dev']) do
options = dbconsole.send(:parse_arguments, ['dev'])
assert_match('dev', options[:environment])
end
end
def test_mysql
dbconsole.expects(:find_cmd_and_exec).with(%w[mysql mysql5], 'db')
start(adapter: 'mysql', database: 'db')
assert !aborted
assert_equal [%w[mysql mysql5], 'db'], dbconsole.find_cmd_and_exec_args
end
def test_mysql_full
dbconsole.expects(:find_cmd_and_exec).with(%w[mysql mysql5], '--host=locahost', '--port=1234', '--socket=socket', '--user=user', '--default-character-set=UTF-8', '-p', 'db')
start(adapter: 'mysql', database: 'db', host: 'locahost', port: 1234, socket: 'socket', username: 'user', password: 'qwerty', encoding: 'UTF-8')
assert !aborted
assert_equal [%w[mysql mysql5], '--host=locahost', '--port=1234', '--socket=socket', '--user=user', '--default-character-set=UTF-8', '-p', 'db'], dbconsole.find_cmd_and_exec_args
end
def test_mysql_include_password
dbconsole.expects(:find_cmd_and_exec).with(%w[mysql mysql5], '--user=user', '--password=qwerty', 'db')
start({adapter: 'mysql', database: 'db', username: 'user', password: 'qwerty'}, ['-p'])
assert !aborted
assert_equal [%w[mysql mysql5], '--user=user', '--password=qwerty', 'db'], dbconsole.find_cmd_and_exec_args
end
def test_postgresql
dbconsole.expects(:find_cmd_and_exec).with('psql', 'db')
start(adapter: 'postgresql', database: 'db')
assert !aborted
assert_equal ['psql', 'db'], dbconsole.find_cmd_and_exec_args
end
def test_postgresql_full
dbconsole.expects(:find_cmd_and_exec).with('psql', 'db')
start(adapter: 'postgresql', database: 'db', username: 'user', password: 'q1w2e3', host: 'host', port: 5432)
assert !aborted
assert_equal ['psql', 'db'], dbconsole.find_cmd_and_exec_args
assert_equal 'user', ENV['PGUSER']
assert_equal 'host', ENV['PGHOST']
assert_equal '5432', ENV['PGPORT']
@ -137,60 +150,60 @@ def test_postgresql_full
end
def test_postgresql_include_password
dbconsole.expects(:find_cmd_and_exec).with('psql', 'db')
start({adapter: 'postgresql', database: 'db', username: 'user', password: 'q1w2e3'}, ['-p'])
assert !aborted
assert_equal ['psql', 'db'], dbconsole.find_cmd_and_exec_args
assert_equal 'user', ENV['PGUSER']
assert_equal 'q1w2e3', ENV['PGPASSWORD']
end
def test_sqlite
dbconsole.expects(:find_cmd_and_exec).with('sqlite', 'db')
start(adapter: 'sqlite', database: 'db')
assert !aborted
assert_equal ['sqlite', 'db'], dbconsole.find_cmd_and_exec_args
end
def test_sqlite3
dbconsole.expects(:find_cmd_and_exec).with('sqlite3', Rails.root.join('db.sqlite3').to_s)
start(adapter: 'sqlite3', database: 'db.sqlite3')
assert !aborted
assert_equal ['sqlite3', Rails.root.join('db.sqlite3').to_s], dbconsole.find_cmd_and_exec_args
end
def test_sqlite3_mode
dbconsole.expects(:find_cmd_and_exec).with('sqlite3', '-html', Rails.root.join('db.sqlite3').to_s)
start({adapter: 'sqlite3', database: 'db.sqlite3'}, ['--mode', 'html'])
assert !aborted
assert_equal ['sqlite3', '-html', Rails.root.join('db.sqlite3').to_s], dbconsole.find_cmd_and_exec_args
end
def test_sqlite3_header
dbconsole.expects(:find_cmd_and_exec).with('sqlite3', '-header', Rails.root.join('db.sqlite3').to_s)
start({adapter: 'sqlite3', database: 'db.sqlite3'}, ['--header'])
assert_equal ['sqlite3', '-header', Rails.root.join('db.sqlite3').to_s], dbconsole.find_cmd_and_exec_args
end
def test_sqlite3_db_absolute_path
dbconsole.expects(:find_cmd_and_exec).with('sqlite3', '/tmp/db.sqlite3')
start(adapter: 'sqlite3', database: '/tmp/db.sqlite3')
assert !aborted
assert_equal ['sqlite3', '/tmp/db.sqlite3'], dbconsole.find_cmd_and_exec_args
end
def test_sqlite3_db_without_defined_rails_root
Rails.stubs(:respond_to?)
Rails.expects(:respond_to?).with(:root).once.returns(false)
dbconsole.expects(:find_cmd_and_exec).with('sqlite3', Rails.root.join('../config/db.sqlite3').to_s)
start(adapter: 'sqlite3', database: 'config/db.sqlite3')
assert !aborted
Rails.stub(:respond_to?, false) do
start(adapter: 'sqlite3', database: 'config/db.sqlite3')
assert !aborted
assert_equal ['sqlite3', Rails.root.join('../config/db.sqlite3').to_s], dbconsole.find_cmd_and_exec_args
end
end
def test_oracle
dbconsole.expects(:find_cmd_and_exec).with('sqlplus', 'user@db')
start(adapter: 'oracle', database: 'db', username: 'user', password: 'secret')
assert !aborted
assert_equal ['sqlplus', 'user@db'], dbconsole.find_cmd_and_exec_args
end
def test_oracle_include_password
dbconsole.expects(:find_cmd_and_exec).with('sqlplus', 'user/secret@db')
start({adapter: 'oracle', database: 'db', username: 'user', password: 'secret'}, ['-p'])
assert !aborted
assert_equal ['sqlplus', 'user/secret@db'], dbconsole.find_cmd_and_exec_args
end
def test_unknown_command_line_client
@ -223,16 +236,27 @@ def test_print_help_long
private
def app_db_config(results)
Rails.application.config.stubs(:database_configuration).returns(results || {})
Rails.application.config.stub(:database_configuration, results || {}) do
yield
end
end
def dbconsole
@dbconsole ||= Rails::DBConsole.new(nil)
@dbconsole ||= Class.new(Rails::DBConsole) do
attr_reader :find_cmd_and_exec_args
def find_cmd_and_exec(*args)
@find_cmd_and_exec_args = args
end
end.new(nil)
end
def start(config = {}, argv = [])
dbconsole.stubs(config: config.stringify_keys, arguments: argv)
capture_abort { dbconsole.start }
dbconsole.stub(:config, config.stringify_keys) do
dbconsole.stub(:arguments, argv) do
capture_abort { dbconsole.start }
end
end
end
def capture_abort

@ -1,6 +1,7 @@
require 'generators/generators_test_helper'
require 'rails/generators/rails/app/app_generator'
require 'env_helpers'
require 'mocha/setup' # FIXME: stop using mocha
class ActionsTest < Rails::Generators::TestCase
include GeneratorsTestHelper

@ -1,6 +1,7 @@
require 'generators/generators_test_helper'
require 'rails/generators/rails/app/app_generator'
require 'generators/shared_generator_tests'
require 'mocha/setup' # FIXME: stop using mocha
DEFAULT_APP_FILES = %w(
.gitignore

@ -1,5 +1,6 @@
require 'generators/generators_test_helper'
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
require 'mocha/setup' # FIXME: stop using mocha
# Mock out what we need from AR::Base.
module ActiveRecord

@ -1,6 +1,7 @@
require 'generators/generators_test_helper'
require 'rails/generators/rails/plugin/plugin_generator'
require 'generators/shared_generator_tests'
require 'mocha/setup' # FIXME: stop using mocha
DEFAULT_PLUGIN_FILES = %w(
.gitignore

@ -1,6 +1,7 @@
require 'generators/generators_test_helper'
require 'rails/generators/rails/model/model_generator'
require 'rails/generators/test_unit/model/model_generator'
require 'mocha/setup' # FIXME: stop using mocha
class GeneratorsTest < Rails::Generators::TestCase
include GeneratorsTestHelper

@ -1,5 +1,6 @@
require 'abstract_unit'
require 'rails/paths'
require 'mocha/setup' # FIXME: stop using mocha
class PathsTest < ActiveSupport::TestCase
def setup

@ -1,4 +1,5 @@
require 'abstract_unit'
require 'mocha/setup' # FIXME: stop using mocha
module ActionController
class Base