From 77237c5a6b9044f58beabc54d3589e5fa09cbfba Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 5 Mar 2020 00:07:49 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- spec/tasks/gitlab/backup_rake_spec.rb | 67 +++++++++++++++++++++++++++++------ 1 file changed, 57 insertions(+), 10 deletions(-) (limited to 'spec/tasks') diff --git a/spec/tasks/gitlab/backup_rake_spec.rb b/spec/tasks/gitlab/backup_rake_spec.rb index e58919c8688..5e15ade492b 100644 --- a/spec/tasks/gitlab/backup_rake_spec.rb +++ b/spec/tasks/gitlab/backup_rake_spec.rb @@ -14,6 +14,14 @@ describe 'gitlab:app namespace rake task' do tars_glob.first end + def backup_files + %w(backup_information.yml artifacts.tar.gz builds.tar.gz lfs.tar.gz pages.tar.gz) + end + + def backup_directories + %w(db repositories) + end + before(:all) do Rake.application.rake_require 'tasks/gitlab/helpers' Rake.application.rake_require 'tasks/gitlab/backup' @@ -28,12 +36,16 @@ describe 'gitlab:app namespace rake task' do before do stub_env('force', 'yes') FileUtils.rm(tars_glob, force: true) + FileUtils.rm(backup_files, force: true) + FileUtils.rm_rf(backup_directories, secure: true) reenable_backup_sub_tasks stub_container_registry_config(enabled: enable_registry) end after do FileUtils.rm(tars_glob, force: true) + FileUtils.rm(backup_files, force: true) + FileUtils.rm_rf(backup_directories, secure: true) end def run_rake_task(task_name) @@ -62,15 +74,6 @@ describe 'gitlab:app namespace rake task' do let(:gitlab_version) { Gitlab::VERSION } - it 'fails on mismatch' do - allow(YAML).to receive(:load_file) - .and_return({ gitlab_version: "not #{gitlab_version}" }) - - expect do - expect { run_rake_task('gitlab:backup:restore') }.to output.to_stdout - end.to raise_error(SystemExit) - end - context 'restore with matching gitlab version' do before do allow(YAML).to receive(:load_file) @@ -241,7 +244,7 @@ describe 'gitlab:app namespace rake task' do ) expect(exit_status).to eq(0) - expect(tar_contents).to match('db/') + expect(tar_contents).to match('db') expect(tar_contents).to match('uploads.tar.gz') expect(tar_contents).to match('repositories/') expect(tar_contents).to match('builds.tar.gz') @@ -379,6 +382,50 @@ describe 'gitlab:app namespace rake task' do end end + describe 'skipping tar archive creation' do + before do + stub_env('SKIP', 'tar') + end + + it 'created files with backup content and no tar archive' do + expect { run_rake_task('gitlab:backup:create') }.to output.to_stdout + + dir_contents = Dir.children(Gitlab.config.backup.path) + + expect(dir_contents).to contain_exactly( + 'backup_information.yml', + 'db', + 'uploads.tar.gz', + 'builds.tar.gz', + 'artifacts.tar.gz', + 'lfs.tar.gz', + 'pages.tar.gz', + 'registry.tar.gz', + 'repositories', + 'tmp' + ) + end + + it 'those component files can be restored from' do + expect { run_rake_task("gitlab:backup:create") }.to output.to_stdout + + allow(Rake::Task['gitlab:shell:setup']) + .to receive(:invoke).and_return(true) + + 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:uploads:restore']).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:pages:restore']).to receive :invoke + expect(Rake::Task['gitlab:backup:lfs:restore']).to receive :invoke + expect(Rake::Task['gitlab:backup:registry:restore']).to receive :invoke + expect(Rake::Task['gitlab:shell:setup']).to receive :invoke + expect { run_rake_task("gitlab:backup:restore") }.to output.to_stdout + end + end + describe "Human Readable Backup Name" do it 'name has human readable time' do expect { run_rake_task('gitlab:backup:create') }.to output.to_stdout -- cgit v1.2.1