diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-10-22 13:33:28 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-10-22 13:33:28 +0200 |
commit | 680afb3d77db2f90b1c79d3917ce5d2df187c68b (patch) | |
tree | 7aadac01c9f0b580fa8284b64acb0f688a54a8d9 | |
parent | 5f412e3a87d1e9444bbef6475a2cd3304f541f7d (diff) | |
download | gitlab-ce-42611-removed-branch-link.tar.gz |
Do not raise error when checking pipeline reference42611-removed-branch-link
Return from the `Ci::Pipeline#ref_exists?` in case when there is no
repository present.
This also fixes pipeline page feature specs by changing pipeline
reference instead of stubbing `ref_exist?` method.
-rw-r--r-- | app/models/ci/pipeline.rb | 2 | ||||
-rw-r--r-- | spec/features/projects/pipelines/pipeline_spec.rb | 9 | ||||
-rw-r--r-- | spec/models/ci/pipeline_spec.rb | 34 |
3 files changed, 31 insertions, 14 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index c93f0e0cd55..aeee7f0a5d2 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -270,6 +270,8 @@ module Ci def ref_exists? project.repository.ref_exists?(git_ref) + rescue Gitlab::Git::Repository::NoRepository + false end ## diff --git a/spec/features/projects/pipelines/pipeline_spec.rb b/spec/features/projects/pipelines/pipeline_spec.rb index 5734c7e355e..cd6c37bf54d 100644 --- a/spec/features/projects/pipelines/pipeline_spec.rb +++ b/spec/features/projects/pipelines/pipeline_spec.rb @@ -241,9 +241,12 @@ describe 'Pipeline', :js do end end - context 'with deleted branch' do - before do - allow(pipeline).to receive(:ref_exists?).and_return(false) + context 'when pipeline ref does not exist in repository anymore' do + let(:pipeline) do + create(:ci_empty_pipeline, project: project, + ref: 'non-existent', + sha: project.commit.id, + user: user) end it 'does not render link to the pipeline ref' do diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index 06f000a7118..153244b2159 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -780,24 +780,36 @@ describe Ci::Pipeline, :mailer do end describe 'ref_exists?' do - using RSpec::Parameterized::TableSyntax + context 'when repository exists' do + using RSpec::Parameterized::TableSyntax - let(:project) { create(:project, :repository) } + let(:project) { create(:project, :repository) } - where(:tag, :ref, :result) do - false | 'master' | true - false | 'non-existent-branch' | false - true | 'v1.1.0' | true - true | 'non-existent-tag' | false + where(:tag, :ref, :result) do + false | 'master' | true + false | 'non-existent-branch' | false + true | 'v1.1.0' | true + true | 'non-existent-tag' | false + end + + with_them do + let(:pipeline) do + create(:ci_empty_pipeline, project: project, tag: tag, ref: ref) + end + + it "correctly detects ref" do + expect(pipeline.ref_exists?).to be result + end + end end - with_them do + context 'when repository does not exist' do let(:pipeline) do - create(:ci_empty_pipeline, project: project, tag: tag, ref: ref) + create(:ci_empty_pipeline, project: project, ref: 'master') end - it "correctly detects ref" do - expect(pipeline.ref_exists?).to be result + it 'always returns false' do + expect(pipeline.ref_exists?).to eq false end end end |