summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOswaldo Ferreira <oswaldo@gitlab.com>2017-10-11 18:21:25 +0200
committerOswaldo Ferreira <oswaldo@gitlab.com>2017-10-11 18:48:39 +0200
commit9ab0254085cc4eed5cda322b6d5998c320ceef2c (patch)
tree10d431117f17496aa9ea0bb448504fbca4590038
parentefeaf3bd41e60be1405b7e3ccfcfb6cb4747518c (diff)
downloadgitlab-ce-9ab0254085cc4eed5cda322b6d5998c320ceef2c.tar.gz
Make "merge ongoing" check more consistent
-rw-r--r--app/models/merge_request.rb2
-rw-r--r--changelogs/unreleased/39032-improve-merge-ongoing-check-consistency.yml5
-rw-r--r--spec/models/merge_request_spec.rb22
3 files changed, 27 insertions, 2 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 972a35dde4d..e34714e3f9e 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -396,7 +396,7 @@ class MergeRequest < ActiveRecord::Base
end
def merge_ongoing?
- !!merge_jid && !merged?
+ !!merge_jid && !merged? && Gitlab::SidekiqStatus.num_running([merge_jid]) > 0
end
def closed_without_fork?
diff --git a/changelogs/unreleased/39032-improve-merge-ongoing-check-consistency.yml b/changelogs/unreleased/39032-improve-merge-ongoing-check-consistency.yml
new file mode 100644
index 00000000000..361b6af196a
--- /dev/null
+++ b/changelogs/unreleased/39032-improve-merge-ongoing-check-consistency.yml
@@ -0,0 +1,5 @@
+---
+title: Make "merge ongoing" check more consistent
+merge_request:
+author:
+type: fixed
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index 17c9f15b021..09d7d0dbbe6 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -1460,11 +1460,31 @@ describe MergeRequest do
end
describe '#merge_ongoing?' do
- it 'returns true when merge_id is present and MR is not merged' do
+ it 'returns true when merge_id, MR is not merged and it has no running job' do
merge_request = build_stubbed(:merge_request, state: :open, merge_jid: 'foo')
+ allow(Gitlab::SidekiqStatus).to receive(:num_running).with(['foo']) { 1 }
expect(merge_request.merge_ongoing?).to be(true)
end
+
+ it 'returns false when merge_jid is nil' do
+ merge_request = build_stubbed(:merge_request, state: :open, merge_jid: nil)
+
+ expect(merge_request.merge_ongoing?).to be(false)
+ end
+
+ it 'returns false if MR is merged' do
+ merge_request = build_stubbed(:merge_request, state: :merged, merge_jid: 'foo')
+
+ expect(merge_request.merge_ongoing?).to be(false)
+ end
+
+ it 'returns false if there is no merge job running' do
+ merge_request = build_stubbed(:merge_request, state: :open, merge_jid: 'foo')
+ allow(Gitlab::SidekiqStatus).to receive(:num_running).with(['foo']) { 0 }
+
+ expect(merge_request.merge_ongoing?).to be(false)
+ end
end
describe "#closed_without_fork?" do