From 0f0a8be306e7e0cd5693f57414de351808c41db9 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 30 Oct 2019 21:07:58 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- spec/services/ci/register_job_service_spec.rb | 51 +++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'spec/services/ci/register_job_service_spec.rb') diff --git a/spec/services/ci/register_job_service_spec.rb b/spec/services/ci/register_job_service_spec.rb index 2f2c525ccc4..04334fb8915 100644 --- a/spec/services/ci/register_job_service_spec.rb +++ b/spec/services/ci/register_job_service_spec.rb @@ -502,6 +502,57 @@ module Ci end end + context 'when build has data integrity problem' do + let!(:pending_job) do + create(:ci_build, :pending, pipeline: pipeline) + end + + before do + pending_job.update_columns(options: "string") + end + + subject { execute(specific_runner, {}) } + + it 'does drop the build and logs both failures' do + expect(Gitlab::Sentry).to receive(:track_acceptable_exception) + .with(anything, a_hash_including(extra: a_hash_including(build_id: pending_job.id))) + .twice + .and_call_original + + expect(subject).to be_nil + + pending_job.reload + expect(pending_job).to be_failed + expect(pending_job).to be_data_integrity_failure + end + end + + context 'when build fails to be run!' do + let!(:pending_job) do + create(:ci_build, :pending, pipeline: pipeline) + end + + before do + expect_any_instance_of(Ci::Build).to receive(:run!) + .and_raise(RuntimeError, 'scheduler error') + end + + subject { execute(specific_runner, {}) } + + it 'does drop the build and logs failure' do + expect(Gitlab::Sentry).to receive(:track_acceptable_exception) + .with(anything, a_hash_including(extra: a_hash_including(build_id: pending_job.id))) + .once + .and_call_original + + expect(subject).to be_nil + + pending_job.reload + expect(pending_job).to be_failed + expect(pending_job).to be_scheduler_failure + end + end + context 'when an exception is raised during a persistent ref creation' do before do allow_any_instance_of(Ci::PersistentRef).to receive(:exist?) { false } -- cgit v1.2.3