Fix warnings argument memoization in CI/CD stage
This commit is contained in:
parent
73fcfb296c
commit
86217866fd
|
@ -46,7 +46,11 @@ module Ci
|
||||||
end
|
end
|
||||||
|
|
||||||
def has_warnings?
|
def has_warnings?
|
||||||
@warnings ||= statuses.latest.failed_but_allowed.any?
|
if @warnings.nil?
|
||||||
|
statuses.latest.failed_but_allowed.any?
|
||||||
|
else
|
||||||
|
@warnings
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -169,10 +169,22 @@ describe Ci::Stage, models: true do
|
||||||
describe '#has_warnings?' do
|
describe '#has_warnings?' do
|
||||||
context 'when stage has warnings' do
|
context 'when stage has warnings' do
|
||||||
context 'when using memoized warnings flag' do
|
context 'when using memoized warnings flag' do
|
||||||
let(:stage) { build(:ci_stage, warnings: true) }
|
context 'when there are warnings' do
|
||||||
|
let(:stage) { build(:ci_stage, warnings: true) }
|
||||||
|
|
||||||
it 'has warnings' do
|
it 'has memoized warnings' do
|
||||||
expect(stage).to have_warnings
|
expect(stage).not_to receive(:statuses)
|
||||||
|
expect(stage).to have_warnings
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when there are no warnings' do
|
||||||
|
let(:stage) { build(:ci_stage, warnings: false) }
|
||||||
|
|
||||||
|
it 'has memoized warnings' do
|
||||||
|
expect(stage).not_to receive(:statuses)
|
||||||
|
expect(stage).not_to have_warnings
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -182,7 +194,8 @@ describe Ci::Stage, models: true do
|
||||||
stage: stage_name, pipeline: pipeline)
|
stage: stage_name, pipeline: pipeline)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'has warnings' do
|
it 'has warnings calculated from statuses' do
|
||||||
|
expect(stage).to receive(:statuses).and_call_original
|
||||||
expect(stage).to have_warnings
|
expect(stage).to have_warnings
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -194,7 +207,8 @@ describe Ci::Stage, models: true do
|
||||||
pipeline: pipeline)
|
pipeline: pipeline)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not have warnings' do
|
it 'does not have warnings calculated from statuses' do
|
||||||
|
expect(stage).to receive(:statuses).and_call_original
|
||||||
expect(stage).not_to have_warnings
|
expect(stage).not_to have_warnings
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue