diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index ff100a31e7c..33bc4128312 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -205,6 +205,10 @@ module Ci end end + def trace_empty? + raw_trace.blank? + end + def raw_trace if File.file?(path_to_trace) File.read(path_to_trace) diff --git a/app/models/ci/build/eraseable.rb b/app/models/ci/build/eraseable.rb index df686852f7d..96cbbbe5fda 100644 --- a/app/models/ci/build/eraseable.rb +++ b/app/models/ci/build/eraseable.rb @@ -11,7 +11,7 @@ module Ci end def eraseable? - artifacts_file.exists? || File.file?(path_to_trace) + complete? && (artifacts_file.exists? || !trace_empty?) end def erase_url diff --git a/spec/models/ci/build/eraseable_spec.rb b/spec/models/ci/build/eraseable_spec.rb index 6735f3ed314..6d2341cdbc0 100644 --- a/spec/models/ci/build/eraseable_spec.rb +++ b/spec/models/ci/build/eraseable_spec.rb @@ -20,7 +20,7 @@ describe Ci::Build::Eraseable, models: true do end context 'build is eraseable' do - let!(:build) { create(:ci_build_with_trace, :artifacts) } + let!(:build) { create(:ci_build_with_trace, :success, :artifacts) } describe '#erase!' do before { build.erase! } @@ -49,7 +49,7 @@ describe Ci::Build::Eraseable, models: true do end context 'metadata and build trace are not available' do - let!(:build) { create(:ci_build, :artifacts) } + let!(:build) { create(:ci_build, :success, :artifacts) } before { build.remove_artifacts_metadata! } describe '#erase!' do