summaryrefslogtreecommitdiff
path: root/spec/models/merge_request_spec.rb
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2019-07-02 09:01:36 +0700
committerShinya Maeda <shinya@gitlab.com>2019-07-08 14:36:32 +0700
commitf8d6f7322ea43ff7844d006885db9f0c36ad7cc9 (patch)
treeb1177546270245395ca30479ada1e75da903a4a9 /spec/models/merge_request_spec.rb
parentc03f23c48311f0663458bbed33131fa3a6c80842 (diff)
downloadgitlab-ce-f8d6f7322ea43ff7844d006885db9f0c36ad7cc9.tar.gz
Fix race condition on merge train ref generationrun-pipeline-for-merge-train-at-train-ref-ce
Today, Pipelines for merge train run on `refs/merge`, however, this causes a race condition that it can be overwritten by CheckMergeabilityService. This patch fixes the problem by generating `refs/train` for those pipelines.
Diffstat (limited to 'spec/models/merge_request_spec.rb')
-rw-r--r--spec/models/merge_request_spec.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index fe6d68aff3f..9b0c232f370 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -3220,4 +3220,34 @@ describe MergeRequest do
it { is_expected.to be_truthy }
end
end
+
+ describe '#cleanup_refs' do
+ subject { merge_request.cleanup_refs(only: only) }
+
+ let(:merge_request) { build(:merge_request) }
+
+ context 'when removing all refs' do
+ let(:only) { :all }
+
+ it 'deletes all refs from the target project' do
+ expect(merge_request.target_project.repository)
+ .to receive(:delete_refs)
+ .with(merge_request.ref_path, merge_request.merge_ref_path, merge_request.train_ref_path)
+
+ subject
+ end
+ end
+
+ context 'when removing only train ref' do
+ let(:only) { :train }
+
+ it 'deletes train ref from the target project' do
+ expect(merge_request.target_project.repository)
+ .to receive(:delete_refs)
+ .with(merge_request.train_ref_path)
+
+ subject
+ end
+ end
+ end
end