diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2017-08-30 12:40:03 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-30 12:40:03 +0900 |
commit | 87eb1a26da0b1385af07a8347dcfd32998a614ee (patch) | |
tree | d9425255c03031ee6f9d96a0a7f0cd1df3ba9870 /activerecord/test | |
parent | 29db6b3cb26708fa174e1e90dc7088cff92b8083 (diff) | |
parent | c9a084a530a1ed60c61e63e21dfac4ae35a57707 (diff) | |
download | rails-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.rb | 10 | ||||
-rw-r--r-- | activerecord/test/cases/tasks/sqlite_rake_test.rb | 25 |
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 |