diff options
author | Shinya Maeda <shinya@gitlab.com> | 2019-07-02 09:01:36 +0700 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2019-07-08 14:36:32 +0700 |
commit | f8d6f7322ea43ff7844d006885db9f0c36ad7cc9 (patch) | |
tree | b1177546270245395ca30479ada1e75da903a4a9 /spec/models/merge_request_spec.rb | |
parent | c03f23c48311f0663458bbed33131fa3a6c80842 (diff) | |
download | gitlab-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.rb | 30 |
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 |