diff options
Diffstat (limited to 'spec/lib/backup/files_spec.rb')
-rw-r--r-- | spec/lib/backup/files_spec.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/spec/lib/backup/files_spec.rb b/spec/lib/backup/files_spec.rb index a7374b82ce0..c2dbaac7f15 100644 --- a/spec/lib/backup/files_spec.rb +++ b/spec/lib/backup/files_spec.rb @@ -14,6 +14,8 @@ RSpec.describe Backup::Files do allow(File).to receive(:exist?).and_return(true) allow(File).to receive(:realpath).with("/var/gitlab-registry").and_return("/var/gitlab-registry") allow(File).to receive(:realpath).with("/var/gitlab-registry/..").and_return("/var") + allow(File).to receive(:realpath).with("/var/gitlab-pages").and_return("/var/gitlab-pages") + allow(File).to receive(:realpath).with("/var/gitlab-pages/..").and_return("/var") allow_any_instance_of(String).to receive(:color) do |string, _color| string @@ -82,4 +84,48 @@ RSpec.describe Backup::Files do end end end + + describe '#dump' do + subject { described_class.new('pages', '/var/gitlab-pages', excludes: ['@pages.tmp']) } + + before do + allow(subject).to receive(:run_pipeline!).and_return(true) + end + + it 'raises no errors' do + expect { subject.dump }.not_to raise_error + end + + it 'excludes tmp dirs from archive' do + expect(subject).to receive(:tar).and_return('blabla-tar') + + expect(subject).to receive(:run_pipeline!).with([%w(blabla-tar --exclude=lost+found --exclude=./@pages.tmp -C /var/gitlab-pages -cf - .), 'gzip -c -1'], any_args) + subject.dump + end + + describe 'with STRATEGY=copy' do + before do + stub_env('STRATEGY', 'copy') + end + + it 'excludes tmp dirs from rsync' do + allow(Gitlab.config.backup).to receive(:path) { '/var/gitlab-backup' } + allow(File).to receive(:realpath).with("/var/gitlab-backup").and_return("/var/gitlab-backup") + + expect(Gitlab::Popen).to receive(:popen).with(%w(rsync -a --exclude=lost+found --exclude=/@pages.tmp /var/gitlab-pages /var/gitlab-backup)).and_return(['', 0]) + + subject.dump + end + end + + describe '#exclude_dirs' do + it 'prepends a leading dot slash to tar excludes' do + expect(subject.exclude_dirs(:tar)).to eq(['--exclude=lost+found', '--exclude=./@pages.tmp']) + end + + it 'prepends a leading slash to rsync excludes' do + expect(subject.exclude_dirs(:rsync)).to eq(['--exclude=lost+found', '--exclude=/@pages.tmp']) + end + end + end end |