aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-08-30 12:40:03 +0900
committerGitHub <noreply@github.com>2017-08-30 12:40:03 +0900
commit87eb1a26da0b1385af07a8347dcfd32998a614ee (patch)
treed9425255c03031ee6f9d96a0a7f0cd1df3ba9870 /activerecord/test
parent29db6b3cb26708fa174e1e90dc7088cff92b8083 (diff)
parentc9a084a530a1ed60c61e63e21dfac4ae35a57707 (diff)
downloadrails-87eb1a26da0b1385af07a8347dcfd32998a614ee.tar.gz
rails-87eb1a26da0b1385af07a8347dcfd32998a614ee.tar.bz2
rails-87eb1a26da0b1385af07a8347dcfd32998a614ee.zip
Merge pull request #30462 from y-yagi/fix_cant_modify_forzen_string_error_in_db_tasks
Fix `can't modify frozen String` error in `DatabaseTasks`
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/tasks/postgresql_rake_test.rb10
-rw-r--r--activerecord/test/cases/tasks/sqlite_rake_test.rb25
2 files changed, 35 insertions, 0 deletions
diff --git a/activerecord/test/cases/tasks/postgresql_rake_test.rb b/activerecord/test/cases/tasks/postgresql_rake_test.rb
index 693503250b..6302e84884 100644
--- a/activerecord/test/cases/tasks/postgresql_rake_test.rb
+++ b/activerecord/test/cases/tasks/postgresql_rake_test.rb
@@ -295,6 +295,16 @@ if current_adapter?(:PostgreSQLAdapter)
end
end
+ def test_structure_dump_execution_fails
+ filename = "awesome-file.sql"
+ Kernel.expects(:system).with("pg_dump", "-s", "-x", "-O", "-f", filename, "my-app-db").returns(nil)
+
+ e = assert_raise(RuntimeError) do
+ ActiveRecord::Tasks::DatabaseTasks.structure_dump(@configuration, filename)
+ end
+ assert_match("failed to execute:", e.message)
+ end
+
private
def with_dump_schemas(value, &block)
old_dump_schemas = ActiveRecord::Base.dump_schemas
diff --git a/activerecord/test/cases/tasks/sqlite_rake_test.rb b/activerecord/test/cases/tasks/sqlite_rake_test.rb
index 8ac4878c37..d7e3caa2ff 100644
--- a/activerecord/test/cases/tasks/sqlite_rake_test.rb
+++ b/activerecord/test/cases/tasks/sqlite_rake_test.rb
@@ -215,6 +215,31 @@ if current_adapter?(:SQLite3Adapter)
FileUtils.rm_f(filename)
FileUtils.rm_f(dbfile)
end
+
+ def test_structure_dump_execution_fails
+ dbfile = @database
+ filename = "awesome-file.sql"
+ Kernel.expects(:system).with("sqlite3", "--noop", "db_create.sqlite3", ".schema", out: "awesome-file.sql").returns(nil)
+
+ e = assert_raise(RuntimeError) do
+ with_structure_dump_flags(["--noop"]) do
+ quietly { ActiveRecord::Tasks::DatabaseTasks.structure_dump(@configuration, filename, "/rails/root") }
+ end
+ end
+ assert_match("failed to execute:", e.message)
+ ensure
+ FileUtils.rm_f(filename)
+ FileUtils.rm_f(dbfile)
+ end
+
+ private
+ def with_structure_dump_flags(flags)
+ old = ActiveRecord::Tasks::DatabaseTasks.structure_dump_flags
+ ActiveRecord::Tasks::DatabaseTasks.structure_dump_flags = flags
+ yield
+ ensure
+ ActiveRecord::Tasks::DatabaseTasks.structure_dump_flags = old
+ end
end
class SqliteStructureLoadTest < ActiveRecord::TestCase