summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/ci/config/entry/processable_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/ci/config/entry/processable_spec.rb')
-rw-r--r--spec/lib/gitlab/ci/config/entry/processable_spec.rb143
1 files changed, 67 insertions, 76 deletions
diff --git a/spec/lib/gitlab/ci/config/entry/processable_spec.rb b/spec/lib/gitlab/ci/config/entry/processable_spec.rb
index f1578a068b9..b28562ba2ea 100644
--- a/spec/lib/gitlab/ci/config/entry/processable_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/processable_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Gitlab::Ci::Config::Entry::Processable do
+RSpec.describe Gitlab::Ci::Config::Entry::Processable, feature_category: :pipeline_authoring do
let(:node_class) do
Class.new(::Gitlab::Config::Entry::Node) do
include Gitlab::Ci::Config::Entry::Processable
@@ -104,111 +104,102 @@ RSpec.describe Gitlab::Ci::Config::Entry::Processable do
end
end
- context 'when only: is used with rules:' do
- let(:config) { { only: ['merge_requests'], rules: [{ if: '$THIS' }] } }
+ context 'when a variable has an invalid data attribute' do
+ let(:config) do
+ {
+ script: 'echo',
+ variables: { 'VAR1' => 'val 1', 'VAR2' => { value: 'val 2', description: 'hello var 2' } }
+ }
+ end
- it 'returns error about mixing only: with rules:' do
- expect(entry).not_to be_valid
- expect(entry.errors).to include /may not be used with `rules`/
+ it 'reports error about variable' do
+ expect(entry.errors)
+ .to include 'variables:var2 config uses invalid data keys: description'
end
+ end
+ end
- context 'and only: is blank' do
- let(:config) { { only: nil, rules: [{ if: '$THIS' }] } }
+ context 'when only: is used with rules:' do
+ let(:config) { { only: ['merge_requests'], rules: [{ if: '$THIS' }] } }
- it 'returns error about mixing only: with rules:' do
- expect(entry).not_to be_valid
- expect(entry.errors).to include /may not be used with `rules`/
- end
- end
+ it 'returns error about mixing only: with rules:' do
+ expect(entry).not_to be_valid
+ expect(entry.errors).to include /may not be used with `rules`: only/
+ end
- context 'and rules: is blank' do
- let(:config) { { only: ['merge_requests'], rules: nil } }
+ context 'and only: is blank' do
+ let(:config) { { only: nil, rules: [{ if: '$THIS' }] } }
- it 'returns error about mixing only: with rules:' do
- expect(entry).not_to be_valid
- expect(entry.errors).to include /may not be used with `rules`/
- end
+ it 'is valid' do
+ expect(entry).to be_valid
end
end
- context 'when except: is used with rules:' do
- let(:config) { { except: { refs: %w[master] }, rules: [{ if: '$THIS' }] } }
+ context 'and rules: is blank' do
+ let(:config) { { only: ['merge_requests'], rules: nil } }
- it 'returns error about mixing except: with rules:' do
- expect(entry).not_to be_valid
- expect(entry.errors).to include /may not be used with `rules`/
+ it 'is valid' do
+ expect(entry).to be_valid
end
+ end
+ end
- context 'and except: is blank' do
- let(:config) { { except: nil, rules: [{ if: '$THIS' }] } }
+ context 'when except: is used with rules:' do
+ let(:config) { { except: { refs: %w[master] }, rules: [{ if: '$THIS' }] } }
- it 'returns error about mixing except: with rules:' do
- expect(entry).not_to be_valid
- expect(entry.errors).to include /may not be used with `rules`/
- end
- end
+ it 'returns error about mixing except: with rules:' do
+ expect(entry).not_to be_valid
+ expect(entry.errors).to include /may not be used with `rules`: except/
+ end
- context 'and rules: is blank' do
- let(:config) { { except: { refs: %w[master] }, rules: nil } }
+ context 'and except: is blank' do
+ let(:config) { { except: nil, rules: [{ if: '$THIS' }] } }
- it 'returns error about mixing except: with rules:' do
- expect(entry).not_to be_valid
- expect(entry.errors).to include /may not be used with `rules`/
- end
+ it 'is valid' do
+ expect(entry).to be_valid
end
end
- context 'when only: and except: are both used with rules:' do
- let(:config) do
- {
- only: %w[merge_requests],
- except: { refs: %w[master] },
- rules: [{ if: '$THIS' }]
- }
- end
+ context 'and rules: is blank' do
+ let(:config) { { except: { refs: %w[master] }, rules: nil } }
- it 'returns errors about mixing both only: and except: with rules:' do
- expect(entry).not_to be_valid
- expect(entry.errors).to include /may not be used with `rules`/
- expect(entry.errors).to include /may not be used with `rules`/
+ it 'is valid' do
+ expect(entry).to be_valid
end
+ end
+ end
- context 'when only: and except: as both blank' do
- let(:config) do
- { only: nil, except: nil, rules: [{ if: '$THIS' }] }
- end
+ context 'when only: and except: are both used with rules:' do
+ let(:config) do
+ {
+ only: %w[merge_requests],
+ except: { refs: %w[master] },
+ rules: [{ if: '$THIS' }]
+ }
+ end
- it 'returns errors about mixing both only: and except: with rules:' do
- expect(entry).not_to be_valid
- expect(entry.errors).to include /may not be used with `rules`/
- expect(entry.errors).to include /may not be used with `rules`/
- end
- end
+ it 'returns errors about mixing both only: and except: with rules:' do
+ expect(entry).not_to be_valid
+ expect(entry.errors).to include /may not be used with `rules`: only, except/
+ end
- context 'when rules: is blank' do
- let(:config) do
- { only: %w[merge_requests], except: { refs: %w[master] }, rules: nil }
- end
+ context 'when only: and except: as both blank' do
+ let(:config) do
+ { only: nil, except: nil, rules: [{ if: '$THIS' }] }
+ end
- it 'returns errors about mixing both only: and except: with rules:' do
- expect(entry).not_to be_valid
- expect(entry.errors).to include /may not be used with `rules`/
- expect(entry.errors).to include /may not be used with `rules`/
- end
+ it 'is valid' do
+ expect(entry).to be_valid
end
end
- context 'when a variable has an invalid data attribute' do
+ context 'when rules: is blank' do
let(:config) do
- {
- script: 'echo',
- variables: { 'VAR1' => 'val 1', 'VAR2' => { value: 'val 2', description: 'hello var 2' } }
- }
+ { only: %w[merge_requests], except: { refs: %w[master] }, rules: nil }
end
- it 'reports error about variable' do
- expect(entry.errors)
- .to include 'variables:var2 config uses invalid data keys: description'
+ it 'is valid' do
+ expect(entry).to be_valid
end
end
end