diff options
author | Drew Blessing <drew@gitlab.com> | 2016-02-13 13:39:51 -0600 |
---|---|---|
committer | Drew Blessing <drew@gitlab.com> | 2016-02-25 14:53:47 -0600 |
commit | 4be6bd5b7a2421a48375e11ca33f5fe2228c6acb (patch) | |
tree | 591f25ebdb3470f99d7deab7088bc79735ad821d /spec | |
parent | 8d3e5cf0db1aa811f2f9263092b8d7740acec5a6 (diff) | |
download | gitlab-ce-8.5.1.TR.tar.gz |
Reload the schema before restoring a database backupv8.5.1.TRv8.5.1.DB2v8.5.1.DBshow
If a user tries to downgrade and restore after a failed upgrade,
the database may still contain newer tables. Reload the older
schema before restoring the database to avoid future upgrade
problems. Also, add a rake task to help users add migration
versions to the database so it's easier to recover from these
errors if they do occur. Fixes #13419
Diffstat (limited to 'spec')
-rw-r--r-- | spec/tasks/gitlab/backup_rake_spec.rb | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/spec/tasks/gitlab/backup_rake_spec.rb b/spec/tasks/gitlab/backup_rake_spec.rb index 63bed2414df..0c1083c7f8c 100644 --- a/spec/tasks/gitlab/backup_rake_spec.rb +++ b/spec/tasks/gitlab/backup_rake_spec.rb @@ -3,9 +3,10 @@ require 'rake' describe 'gitlab:app namespace rake task' do before :all do - Rake.application.rake_require "tasks/gitlab/task_helpers" - Rake.application.rake_require "tasks/gitlab/backup" - Rake.application.rake_require "tasks/gitlab/shell" + Rake.application.rake_require 'tasks/gitlab/task_helpers' + Rake.application.rake_require 'tasks/gitlab/backup' + Rake.application.rake_require 'tasks/gitlab/shell' + Rake.application.rake_require 'tasks/gitlab/db' # empty task as env is already loaded Rake::Task.define_task :environment end @@ -52,13 +53,14 @@ describe 'gitlab:app namespace rake task' do it 'should invoke restoration on match' do allow(YAML).to receive(:load_file). and_return({ gitlab_version: gitlab_version }) - expect(Rake::Task["gitlab:backup:db:restore"]).to receive(:invoke) - expect(Rake::Task["gitlab:backup:repo:restore"]).to receive(:invoke) - expect(Rake::Task["gitlab:backup:builds:restore"]).to receive(:invoke) - expect(Rake::Task["gitlab:backup:uploads:restore"]).to receive(:invoke) - expect(Rake::Task["gitlab:backup:artifacts:restore"]).to receive(:invoke) - expect(Rake::Task["gitlab:backup:lfs:restore"]).to receive(:invoke) - expect(Rake::Task["gitlab:shell:setup"]).to receive(:invoke) + expect(Rake::Task['gitlab:db:drop_tables']).to receive(:invoke) + expect(Rake::Task['gitlab:backup:db:restore']).to receive(:invoke) + expect(Rake::Task['gitlab:backup:repo:restore']).to receive(:invoke) + expect(Rake::Task['gitlab:backup:builds:restore']).to receive(:invoke) + expect(Rake::Task['gitlab:backup:uploads:restore']).to receive(:invoke) + expect(Rake::Task['gitlab:backup:artifacts:restore']).to receive(:invoke) + expect(Rake::Task['gitlab:backup:lfs:restore']).to receive(:invoke) + expect(Rake::Task['gitlab:shell:setup']).to receive(:invoke) expect { run_rake_task('gitlab:backup:restore') }.not_to raise_error end end @@ -177,17 +179,18 @@ describe 'gitlab:app namespace rake task' do end it 'does not invoke repositories restore' do - allow(Rake::Task["gitlab:shell:setup"]). + allow(Rake::Task['gitlab:shell:setup']). to receive(:invoke).and_return(true) allow($stdout).to receive :write - expect(Rake::Task["gitlab:backup:db:restore"]).to receive :invoke - expect(Rake::Task["gitlab:backup:repo:restore"]).not_to receive :invoke - expect(Rake::Task["gitlab:backup:uploads:restore"]).not_to receive :invoke - expect(Rake::Task["gitlab:backup:builds:restore"]).to receive :invoke - expect(Rake::Task["gitlab:backup:artifacts:restore"]).to receive :invoke - expect(Rake::Task["gitlab:backup:lfs:restore"]).to receive :invoke - expect(Rake::Task["gitlab:shell:setup"]).to receive :invoke + expect(Rake::Task['gitlab:db:drop_tables']).to receive :invoke + expect(Rake::Task['gitlab:backup:db:restore']).to receive :invoke + expect(Rake::Task['gitlab:backup:repo:restore']).not_to receive :invoke + expect(Rake::Task['gitlab:backup:uploads:restore']).not_to receive :invoke + expect(Rake::Task['gitlab:backup:builds:restore']).to receive :invoke + expect(Rake::Task['gitlab:backup:artifacts:restore']).to receive :invoke + expect(Rake::Task['gitlab:backup:lfs:restore']).to receive :invoke + expect(Rake::Task['gitlab:shell:setup']).to receive :invoke expect { run_rake_task('gitlab:backup:restore') }.not_to raise_error end end |