Commit 10ec9b2293646f88a1edeea472de82bda340d9c6
Exists in
master
and in
4 other branches
Merge pull request #2017 from duksis/backup_restore
bugfix: backup data retrieved with the same type keys as saved
Showing
2 changed files
with
47 additions
and
1 deletions
Show diff stats
lib/tasks/gitlab/backup.rake
| @@ -82,7 +82,7 @@ namespace :gitlab do | @@ -82,7 +82,7 @@ namespace :gitlab do | ||
| 82 | end | 82 | end |
| 83 | 83 | ||
| 84 | settings = YAML.load_file("backup_information.yml") | 84 | settings = YAML.load_file("backup_information.yml") |
| 85 | - ENV["VERSION"] = "#{settings["db_version"]}" if settings["db_version"].to_i > 0 | 85 | + ENV["VERSION"] = "#{settings[:db_version]}" if settings[:db_version].to_i > 0 |
| 86 | 86 | ||
| 87 | # restoring mismatching backups can lead to unexpected problems | 87 | # restoring mismatching backups can lead to unexpected problems |
| 88 | if settings[:gitlab_version] != %x{git rev-parse HEAD}.gsub(/\n/,"") | 88 | if settings[:gitlab_version] != %x{git rev-parse HEAD}.gsub(/\n/,"") |
| @@ -0,0 +1,46 @@ | @@ -0,0 +1,46 @@ | ||
| 1 | +require 'spec_helper' | ||
| 2 | +require 'rake' | ||
| 3 | + | ||
| 4 | +describe 'gitlab:app namespace rake task' do | ||
| 5 | + before :all do | ||
| 6 | + Rake.application.rake_require "tasks/gitlab/backup" | ||
| 7 | + # empty task as env is already loaded | ||
| 8 | + Rake::Task.define_task :environment | ||
| 9 | + end | ||
| 10 | + | ||
| 11 | + describe 'backup_restore' do | ||
| 12 | + before do | ||
| 13 | + # avoid writing task output to spec progress | ||
| 14 | + $stdout.stub :write | ||
| 15 | + end | ||
| 16 | + | ||
| 17 | + let :run_rake_task do | ||
| 18 | + Rake::Task["gitlab:app:backup_restore"].reenable | ||
| 19 | + Rake.application.invoke_task "gitlab:app:backup_restore" | ||
| 20 | + end | ||
| 21 | + | ||
| 22 | + context 'gitlab version' do | ||
| 23 | + before do | ||
| 24 | + Dir.stub :glob => [] | ||
| 25 | + Dir.stub :chdir | ||
| 26 | + File.stub :exists? => true | ||
| 27 | + Kernel.stub :system => true | ||
| 28 | + end | ||
| 29 | + | ||
| 30 | + let(:gitlab_version) { %x{git rev-parse HEAD}.gsub(/\n/,"") } | ||
| 31 | + | ||
| 32 | + it 'should fail on mismach' do | ||
| 33 | + YAML.stub :load_file => {:gitlab_version => gitlab_version.reverse} | ||
| 34 | + expect { run_rake_task }.to raise_error SystemExit | ||
| 35 | + end | ||
| 36 | + | ||
| 37 | + it 'should invoke restoration on mach' do | ||
| 38 | + YAML.stub :load_file => {:gitlab_version => gitlab_version} | ||
| 39 | + Rake::Task["gitlab:app:db_restore"].should_receive :invoke | ||
| 40 | + Rake::Task["gitlab:app:repo_restore"].should_receive :invoke | ||
| 41 | + expect { run_rake_task }.to_not raise_error SystemExit | ||
| 42 | + end | ||
| 43 | + end | ||
| 44 | + | ||
| 45 | + end # backup_restore task | ||
| 46 | +end # gitlab:app namespace |