提交 213ff7ca 编写于 作者: J Jay Hayes

Add tests to verify exit status for create/drop failures

* Running the db:create task when the database already exists isn't
  really an error case. That is processing may proceed in this case
  because the database exists as requested. So let's validate that
  behavior with a test.
* Likewise, if the database doesn't exist when running the db:drop task
  processing may continue as the requested condition is already met.
  Thus a test.
上级 0d216d1a
......@@ -49,6 +49,34 @@ def db_create_and_drop(expected_database)
db_create_and_drop database_url_db_name
end
def with_database_existing
Dir.chdir(app_path) do
set_database_url
`bin/rake db:create`
yield
`bin/rake db:drop`
end
end
test 'db:create failure because database exists' do
with_database_existing do
output = `bin/rake db:create 2>&1`
assert_match /already exists/, output
assert_equal 0, $?.exitstatus
end
end
test 'db:drop failure because database does not exist' do
Dir.chdir(app_path) do
output = `bin/rake db:drop 2>&1`
# This assertion should work, but it does not. The SQLite3 adapter
# does not raise an error when nothing exists to drop.
# https://github.com/rails/rails/blob/f00554a8226b9529c38be1f3e61b6b1888682fb4/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb#L34-L37
# assert_match /does not exist/, output
assert_equal 0, $?.exitstatus
end
end
def db_migrate_and_status(expected_database)
Dir.chdir(app_path) do
`bin/rails generate model book title:string;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册