diff options
author | Stan Hu <stanhu@gmail.com> | 2016-03-27 06:17:49 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2016-03-27 06:17:49 -0700 |
commit | 720ef51bd97f478dba2d2c1b59df958dabd7500a (patch) | |
tree | bde1e83469b0ccb258a55bc207b5040642840217 | |
parent | c1834664a7a29a32551291102265ece978c55ffe (diff) | |
download | gitlab-ce-720ef51bd97f478dba2d2c1b59df958dabd7500a.tar.gz |
Check if repo exists before attempting to update cache info
Closes #14361
-rw-r--r-- | app/workers/project_cache_worker.rb | 3 | ||||
-rw-r--r-- | spec/workers/project_cache_worker_spec.rb | 27 |
2 files changed, 30 insertions, 0 deletions
diff --git a/app/workers/project_cache_worker.rb b/app/workers/project_cache_worker.rb index 55cb6af232e..ccefd0f71a0 100644 --- a/app/workers/project_cache_worker.rb +++ b/app/workers/project_cache_worker.rb @@ -5,6 +5,9 @@ class ProjectCacheWorker def perform(project_id) project = Project.find(project_id) + + return unless project.repository.exists? + project.update_repository_size project.update_commit_count diff --git a/spec/workers/project_cache_worker_spec.rb b/spec/workers/project_cache_worker_spec.rb new file mode 100644 index 00000000000..7e59bd2fced --- /dev/null +++ b/spec/workers/project_cache_worker_spec.rb @@ -0,0 +1,27 @@ +require 'spec_helper' + +describe ProjectCacheWorker do + let(:project) { create(:project) } + + subject { described_class.new } + + describe '#perform' do + it 'updates project cache data' do + + expect_any_instance_of(Repository).to receive(:size) + expect_any_instance_of(Repository).to receive(:commit_count) + + expect_any_instance_of(Project).to receive(:update_repository_size) + expect_any_instance_of(Project).to receive(:update_commit_count) + + subject.perform(project.id) + end + + it 'handles missing repository data' do + expect_any_instance_of(Repository).to receive(:exists?).and_return(false) + expect_any_instance_of(Repository).not_to receive(:size) + + subject.perform(project.id) + end + end +end |