summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2018-11-28 15:43:58 +0100
committerMatija Čupić <matteeyah@gmail.com>2018-12-08 19:28:57 +0100
commit08942de9b6a3ad361cbae8a83a8e8b7c7e4768ec (patch)
treec9dd1e2984386fcb6a963c1ac8bebd4f5c5abad9
parentdfe7f57eef0c5c2319c5c9898ba0721b6a1c9913 (diff)
downloadgitlab-ce-08942de9b6a3ad361cbae8a83a8e8b7c7e4768ec.tar.gz
Raise an error on ambiguous refs
-rw-r--r--app/models/project.rb3
-rw-r--r--app/models/repository.rb1
-rw-r--r--spec/models/project_spec.rb4
3 files changed, 5 insertions, 3 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index a8bef70f505..9a9ef5c2fa9 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -1737,7 +1737,8 @@ class Project < ActiveRecord::Base
end
def protected_for?(ref)
- return false if ref.nil? || repository.ambiguous_ref?(ref)
+ return false if ref.nil?
+ raise Repository::AmbiguousRefError if repository.ambiguous_ref?(ref)
if Gitlab::Git.branch_ref?(ref) || Gitlab::Git.tag_ref?(ref)
resolved_ref = ref
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 7352386d9d5..c685752c294 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -26,6 +26,7 @@ class Repository
delegate :bundle_to_disk, to: :raw_repository
CreateTreeError = Class.new(StandardError)
+ AmbiguousRefError = Class.new(StandardError)
# Methods that cache data from the Git repository.
#
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 18ad69a1bda..a106642c3e5 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -2583,8 +2583,8 @@ describe Project do
project.repository.add_tag(project.creator, ref, 'master')
end
- it 'returns false' do
- is_expected.to be_falsey
+ it 'raises an error' do
+ expect { subject }.to raise_error(Repository::AmbiguousRefError)
end
end