Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-01-04 21:38:25 +00:00
parent 69cab9b048
commit e290137d5d
3 changed files with 26 additions and 7 deletions

View File

@ -15,6 +15,8 @@ module Ci
PLAN_LIMIT_PREFIX = 'ci_max_artifact_size_'
InvalidArtifactError = Class.new(StandardError)
self.table_name = :p_ci_job_artifacts
self.primary_key = :id
self.sequence_name = :ci_job_artifacts_id_seq
@ -243,7 +245,7 @@ module Ci
end
super
rescue StandardError => e
rescue InvalidArtifactError => e
artifact_report&.assign_attributes(status: :faulty, validation_error: e.message)
raise e

View File

@ -10,7 +10,7 @@ module Gitlab
gzip: ::Gitlab::Ci::DecompressedGzipSizeValidator
}.freeze
FileDecompressionError = Class.new(StandardError)
FileDecompressionError = Class.new(::Ci::JobArtifact::InvalidArtifactError)
def initialize(file:, file_format:, max_bytes: DEFAULT_MAX_BYTES)
@file = file

View File

@ -925,15 +925,17 @@ RSpec.describe Ci::JobArtifact, feature_category: :job_artifacts do
end
end
context 'when parsing the junit fails' do
context 'when parsing the junit fails from size error' do
before do
allow_next_instance_of(Gitlab::Ci::Artifacts::DecompressedArtifactSizeValidator) do |instance|
allow(instance).to receive(:validate!).and_raise(StandardError)
allow(instance).to receive(:validate!)
.and_raise(Gitlab::Ci::Artifacts::DecompressedArtifactSizeValidator::FileDecompressionError)
end
end
it 'updates the artifact report to failed state' do
expect { job_artifact.each_blob { |b| } }.to raise_error(StandardError)
expect { job_artifact.each_blob { |b| } }
.to raise_error(Gitlab::Ci::Artifacts::DecompressedArtifactSizeValidator::FileDecompressionError)
expect(job_artifact.artifact_report.status).to eq("faulty")
end
end
@ -947,10 +949,11 @@ RSpec.describe Ci::JobArtifact, feature_category: :job_artifacts do
expect(job_artifact.artifact_report.status).to eq("validated")
end
context 'and parsing the junit fails' do
context 'and parsing the junit fails from size error' do
before do
allow_next_instance_of(Gitlab::Ci::Artifacts::DecompressedArtifactSizeValidator) do |instance|
allow(instance).to receive(:validate!).and_raise(StandardError)
allow(instance).to receive(:validate!)
.and_raise(Gitlab::Ci::Artifacts::DecompressedArtifactSizeValidator::FileDecompressionError)
end
end
@ -960,6 +963,20 @@ RSpec.describe Ci::JobArtifact, feature_category: :job_artifacts do
expect(job_artifact.artifact_report.status).to eq("faulty")
end
end
context 'and parsing the junit fails from unknown error' do
before do
allow_next_instance_of(Gitlab::Ci::Artifacts::DecompressedArtifactSizeValidator) do |instance|
allow(instance).to receive(:validate!).and_raise(StandardError)
end
end
it 'updates the artifact report to validated and saves when job artifact saves' do
expect { job_artifact.each_blob { |b| } }.to raise_error(StandardError)
expect { job_artifact.save! }.to change { Ci::JobArtifactReport.count }.by(1)
expect(job_artifact.artifact_report.status).to eq("validated")
end
end
end
end
end