Use Dir.mktmpdir instead of FileUtils.mkdir_p in the spec

parent 79983afb
...@@ -2,16 +2,13 @@ require 'spec_helper' ...@@ -2,16 +2,13 @@ require 'spec_helper'
describe RepositoryArchiveCleanUpService, services: true do describe RepositoryArchiveCleanUpService, services: true do
describe '#execute' do describe '#execute' do
let(:path) { File.join(Rails.root, 'tmp/tests/shared/cache/archive') }
subject(:service) { described_class.new } subject(:service) { described_class.new }
before do
allow(Gitlab.config.gitlab).to receive(:repository_downloads_path).and_return(path)
end
context 'when the downloads directory does not exist' do context 'when the downloads directory does not exist' do
it 'does not remove any archives' do it 'does not remove any archives' do
path = '/invalid/path/'
stub_repository_downloads_path(path)
expect(File).to receive(:directory?).with(path).and_return(false) expect(File).to receive(:directory?).with(path).and_return(false)
expect(service).not_to receive(:clean_up_old_archives) expect(service).not_to receive(:clean_up_old_archives)
expect(service).not_to receive(:clean_up_empty_directories) expect(service).not_to receive(:clean_up_empty_directories)
...@@ -21,16 +18,10 @@ describe RepositoryArchiveCleanUpService, services: true do ...@@ -21,16 +18,10 @@ describe RepositoryArchiveCleanUpService, services: true do
end end
context 'when the downloads directory exists' do context 'when the downloads directory exists' do
before do
FileUtils.mkdir_p(path)
end
after do
FileUtils.rm_rf(path)
end
context 'when archives older than 2 hours exists' do context 'when archives older than 2 hours exists' do
it 'removes old files that matches valid archive extensions' do it 'removes old files that matches valid archive extensions' do
Dir.mktmpdir do |path|
stub_repository_downloads_path(path)
dirname = File.join(path, 'sample.git') dirname = File.join(path, 'sample.git')
files = create_temporary_files(dirname, %w[tar tar.bz2 tar.gz zip], 2.hours) files = create_temporary_files(dirname, %w[tar tar.bz2 tar.gz zip], 2.hours)
...@@ -39,8 +30,11 @@ describe RepositoryArchiveCleanUpService, services: true do ...@@ -39,8 +30,11 @@ describe RepositoryArchiveCleanUpService, services: true do
files.each { |file| expect(File.exist?(file)).to eq false } files.each { |file| expect(File.exist?(file)).to eq false }
expect(File.directory?(dirname)).to eq false expect(File.directory?(dirname)).to eq false
end end
end
it 'keeps old files that does not matches valid archive extensions' do it 'keeps old files that does not matches valid archive extensions' do
Dir.mktmpdir do |path|
stub_repository_downloads_path(path)
dirname = File.join(path, 'sample.git') dirname = File.join(path, 'sample.git')
files = create_temporary_files(dirname, %w[conf rb], 2.hours) files = create_temporary_files(dirname, %w[conf rb], 2.hours)
...@@ -49,8 +43,11 @@ describe RepositoryArchiveCleanUpService, services: true do ...@@ -49,8 +43,11 @@ describe RepositoryArchiveCleanUpService, services: true do
files.each { |file| expect(File.exist?(file)).to eq true } files.each { |file| expect(File.exist?(file)).to eq true }
expect(File.directory?(dirname)).to eq true expect(File.directory?(dirname)).to eq true
end end
end
it 'keeps old files inside invalid directories' do it 'keeps old files inside invalid directories' do
Dir.mktmpdir do |path|
stub_repository_downloads_path(path)
dirname = File.join(path, 'john_doe/sample.git') dirname = File.join(path, 'john_doe/sample.git')
files = create_temporary_files(dirname, %w[conf rb tar tar.gz], 2.hours) files = create_temporary_files(dirname, %w[conf rb tar tar.gz], 2.hours)
...@@ -60,9 +57,11 @@ describe RepositoryArchiveCleanUpService, services: true do ...@@ -60,9 +57,11 @@ describe RepositoryArchiveCleanUpService, services: true do
expect(File.directory?(dirname)).to eq true expect(File.directory?(dirname)).to eq true
end end
end end
end
context 'when archives older than 2 hours does not exist' do context 'when archives older than 2 hours does not exist' do
it 'keeps files that matches valid archive extensions' do it 'keeps files that matches valid archive extensions' do
Dir.mktmpdir do |path|
dirname = File.join(path, 'sample.git') dirname = File.join(path, 'sample.git')
files = create_temporary_files(dirname, %w[tar tar.bz2 tar.gz zip], 1.hour) files = create_temporary_files(dirname, %w[tar tar.bz2 tar.gz zip], 1.hour)
...@@ -71,8 +70,10 @@ describe RepositoryArchiveCleanUpService, services: true do ...@@ -71,8 +70,10 @@ describe RepositoryArchiveCleanUpService, services: true do
files.each { |file| expect(File.exist?(file)).to eq true } files.each { |file| expect(File.exist?(file)).to eq true }
expect(File.directory?(dirname)).to eq true expect(File.directory?(dirname)).to eq true
end end
end
it 'keeps files that does not matches valid archive extensions' do it 'keeps files that does not matches valid archive extensions' do
Dir.mktmpdir do |path|
dirname = File.join(path, 'sample.git') dirname = File.join(path, 'sample.git')
files = create_temporary_files(dirname, %w[conf rb], 1.hour) files = create_temporary_files(dirname, %w[conf rb], 1.hour)
...@@ -81,8 +82,10 @@ describe RepositoryArchiveCleanUpService, services: true do ...@@ -81,8 +82,10 @@ describe RepositoryArchiveCleanUpService, services: true do
files.each { |file| expect(File.exist?(file)).to eq true } files.each { |file| expect(File.exist?(file)).to eq true }
expect(File.directory?(dirname)).to eq true expect(File.directory?(dirname)).to eq true
end end
end
it 'keeps files inside invalid directories' do it 'keeps files inside invalid directories' do
Dir.mktmpdir do |path|
dirname = File.join(path, 'john_doe/sample.git') dirname = File.join(path, 'john_doe/sample.git')
files = create_temporary_files(dirname, %w[conf rb tar tar.gz], 1.hour) files = create_temporary_files(dirname, %w[conf rb tar tar.gz], 1.hour)
...@@ -92,11 +95,16 @@ describe RepositoryArchiveCleanUpService, services: true do ...@@ -92,11 +95,16 @@ describe RepositoryArchiveCleanUpService, services: true do
expect(File.directory?(dirname)).to eq true expect(File.directory?(dirname)).to eq true
end end
end end
end
end
def create_temporary_files(dirname, extensions, mtime) def create_temporary_files(dirname, extensions, mtime)
FileUtils.mkdir_p(dirname) FileUtils.mkdir_p(dirname)
FileUtils.touch(extensions.map { |ext| File.join(dirname, "sample.#{ext}") }, mtime: Time.now - mtime) FileUtils.touch(extensions.map { |ext| File.join(dirname, "sample.#{ext}") }, mtime: Time.now - mtime)
end end
def stub_repository_downloads_path(path)
allow(Gitlab.config.gitlab).to receive(:repository_downloads_path).and_return(path)
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment