Skip to content
Snippets Groups Projects
Commit 86217866 authored by Grzegorz Bizon's avatar Grzegorz Bizon
Browse files

Fix warnings argument memoization in CI/CD stage

parent 73fcfb29
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -46,7 +46,11 @@ module Ci
end
 
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
Loading
Loading
@@ -169,10 +169,22 @@ describe Ci::Stage, models: true do
describe '#has_warnings?' do
context 'when stage has warnings' 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
expect(stage).to have_warnings
it 'has memoized warnings' do
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
 
Loading
Loading
@@ -182,7 +194,8 @@ describe Ci::Stage, models: true do
stage: stage_name, pipeline: pipeline)
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
end
end
Loading
Loading
@@ -194,7 +207,8 @@ describe Ci::Stage, models: true do
pipeline: pipeline)
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
end
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment