diff --git a/spec/lib/gitlab/import_export/safe_model_attributes.yml b/spec/lib/gitlab/import_export/safe_model_attributes.yml index 62163c54c6d..7bbeea06f04 100644 --- a/spec/lib/gitlab/import_export/safe_model_attributes.yml +++ b/spec/lib/gitlab/import_export/safe_model_attributes.yml @@ -220,6 +220,7 @@ Ci::Stage: - id - name - status +- lock_version - project_id - pipeline_id - created_at diff --git a/spec/models/ci/stage_spec.rb b/spec/models/ci/stage_spec.rb index e829ccb048e..3dc00017a2c 100644 --- a/spec/models/ci/stage_spec.rb +++ b/spec/models/ci/stage_spec.rb @@ -54,7 +54,26 @@ describe Ci::Stage, :models do end end + context 'when stage is skipped' do + it 'updates status to skipped' do + expect { stage.update! } + .to change { stage.reload.status } + .to 'skipped' + end + end + context 'when stage object is locked' do + before do + create(:ci_build, :failed, stage_id: stage.id) + end + + it 'retries a lock to update a stage status' do + stage.lock_version = 100 + + stage.update! + + expect(stage.reload).to be_failed + end end end end diff --git a/spec/services/ci/retry_build_service_spec.rb b/spec/services/ci/retry_build_service_spec.rb index ef9927c5969..a0e83deeb54 100644 --- a/spec/services/ci/retry_build_service_spec.rb +++ b/spec/services/ci/retry_build_service_spec.rb @@ -22,7 +22,7 @@ describe Ci::RetryBuildService, :services do %i[type lock_version target_url base_tags commit_id deployments erased_by_id last_deployment project_id runner_id tag_taggings taggings tags trigger_request_id - user_id auto_canceled_by_id retried].freeze + user_id auto_canceled_by_id retried stage_entity].freeze shared_examples 'build duplication' do let(:stage) do