summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-11-12 07:44:33 -0800
committerStan Hu <stanhu@gmail.com>2018-11-12 08:46:38 -0800
commitb0535009029a24d58eaea8a02768b4fbd0fd8f66 (patch)
treeee144583946d8d18da2a00670c0f7f2fcd2006e2
parenta407bba81a3fbd8b3313bc84e1ddf0ab4415207d (diff)
downloadgitlab-ce-b0535009029a24d58eaea8a02768b4fbd0fd8f66.tar.gz
Fix MergeRequestService erroring out on deleted branch
When a branch is deleted, the push commit IDs is an empty array. The previous change would attempt to call `[].exists?`, which is invalid. Fix this by returning `MergeRequestDiffCommit.none` instead. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/53853
-rw-r--r--app/models/merge_request_diff.rb2
-rw-r--r--spec/models/merge_request_spec.rb4
2 files changed, 5 insertions, 1 deletions
diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
index 74583af1a29..6f1beede6f9 100644
--- a/app/models/merge_request_diff.rb
+++ b/app/models/merge_request_diff.rb
@@ -142,7 +142,7 @@ class MergeRequestDiff < ActiveRecord::Base
end
def commits_by_shas(shas)
- return [] unless shas.present?
+ return MergeRequestDiffCommit.none unless shas.present?
merge_request_diff_commits.where(sha: shas)
end
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index c7202b481d3..131db6a5ff9 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -2651,6 +2651,10 @@ describe MergeRequest do
describe '#includes_any_commits?' do
it 'returns false' do
+ expect(subject.includes_any_commits?([])).to be_falsey
+ end
+
+ it 'returns false' do
expect(subject.includes_any_commits?([Gitlab::Git::BLANK_SHA])).to be_falsey
end