diff options
author | Luke Duncalfe <lduncalfe@eml.cc> | 2019-04-05 17:19:30 +1300 |
---|---|---|
committer | Luke Duncalfe <lduncalfe@eml.cc> | 2019-04-09 10:03:26 +1200 |
commit | 1883e320eafa02b332a16eec658f65c4a28def83 (patch) | |
tree | 6e231cba20ae8fda69f328e0ede27452fca9cf14 /spec | |
parent | 867ac4d1f733254de1b4c44f314e585e6b2720e8 (diff) | |
download | gitlab-ce-1883e320eafa02b332a16eec658f65c4a28def83.tar.gz |
Use Gitlab::PushOptions for `ci.skip` push option
Previously the raw push option Array was sent to Pipeline::Chain::Skip.
This commit updates this class (and the chain of classes that pass the
push option parameters from the API internal `post_receive` endpoint to
that class) to treat push options as a Hash of options parsed by
GitLab::PushOptions.
The GitLab::PushOptions class takes options like this:
-o ci.skip -o merge_request.create -o merge_request.target=branch
and turns them into a Hash like this:
{
ci: {
skip: true
},
merge_request: {
create: true,
target: 'branch'
}
}
This now how Pipeline::Chain::Skip is determining if the `ci.skip` push
option was used.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/lib/gitlab/push_options_spec.rb | 12 | ||||
-rw-r--r-- | spec/requests/api/internal_spec.rb | 2 | ||||
-rw-r--r-- | spec/services/ci/create_pipeline_service_spec.rb | 3 |
3 files changed, 14 insertions, 3 deletions
diff --git a/spec/lib/gitlab/push_options_spec.rb b/spec/lib/gitlab/push_options_spec.rb index 68b64863c21..fc9e421bea6 100644 --- a/spec/lib/gitlab/push_options_spec.rb +++ b/spec/lib/gitlab/push_options_spec.rb @@ -39,6 +39,18 @@ describe Gitlab::PushOptions do end end + describe '#as_json' do + it 'returns all options' do + options = described_class.new(['merge_request.target=value']) + + expect(options.as_json).to include( + merge_request: { + target: 'value' + } + ) + end + end + it 'can parse multiple push options' do options = described_class.new([ 'merge_request.create', diff --git a/spec/requests/api/internal_spec.rb b/spec/requests/api/internal_spec.rb index 3cc0cceeab1..a5a6e08e73b 100644 --- a/spec/requests/api/internal_spec.rb +++ b/spec/requests/api/internal_spec.rb @@ -905,7 +905,7 @@ describe API::Internal do it 'enqueues a PostReceive worker job' do expect(PostReceive).to receive(:perform_async) - .with(gl_repository, identifier, changes, push_options) + .with(gl_repository, identifier, changes, { ci: { skip: true } }) post api('/internal/post_receive'), params: valid_params end diff --git a/spec/services/ci/create_pipeline_service_spec.rb b/spec/services/ci/create_pipeline_service_spec.rb index 866d709d446..101b91e9cd8 100644 --- a/spec/services/ci/create_pipeline_service_spec.rb +++ b/spec/services/ci/create_pipeline_service_spec.rb @@ -418,8 +418,7 @@ describe Ci::CreatePipelineService do context 'when push options contain ci.skip' do let(:push_options) do - ['ci.skip', - 'another push option'] + { 'ci' => { 'skip' => true } } end it 'creates a pipline in the skipped state' do |