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

Do not create TODO when build is allowed to fail

parent 900999f8
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -70,7 +70,11 @@ module Ci
environment: build.environment,
status_event: 'enqueue'
)
MergeRequests::AddTodoWhenBuildFailsService.new(build.project, nil).close(new_build)
MergeRequests::AddTodoWhenBuildFailsService
.new(build.project, nil)
.close(new_build)
build.pipeline.mark_as_processable_after_stage(build.stage_idx)
new_build
end
Loading
Loading
module MergeRequests
class AddTodoWhenBuildFailsService < MergeRequests::BaseService
# Adds a todo to the parent merge_request when a CI build fails
#
def execute(commit_status)
return if commit_status.allow_failure?
commit_status_merge_requests(commit_status) do |merge_request|
todo_service.merge_request_build_failed(merge_request)
end
end
 
# Closes any pending build failed todos for the parent MRs when a build is retried
# Closes any pending build failed todos for the parent MRs when a
# build is retried
#
def close(commit_status)
commit_status_merge_requests(commit_status) do |merge_request|
todo_service.merge_request_build_retried(merge_request)
Loading
Loading
require 'spec_helper'
 
# Write specs in this file.
describe MergeRequests::AddTodoWhenBuildFailsService do
let(:user) { create(:user) }
let(:merge_request) { create(:merge_request) }
let(:project) { create(:project) }
let(:sha) { '1234567890abcdef1234567890abcdef12345678' }
let(:pipeline) { create(:ci_pipeline_with_one_job, ref: merge_request.source_branch, project: project, sha: sha) }
let(:service) { MergeRequests::AddTodoWhenBuildFailsService.new(project, user, commit_message: 'Awesome message') }
let(:ref) { merge_request.source_branch }
let(:pipeline) do
create(:ci_pipeline_with_one_job, ref: ref,
project: project,
sha: sha)
end
let(:service) do
described_class.new(project, user, commit_message: 'Awesome message')
end
let(:todo_service) { TodoService.new }
 
let(:merge_request) do
Loading
Loading
@@ -23,7 +32,9 @@ describe MergeRequests::AddTodoWhenBuildFailsService do
 
describe '#execute' do
context 'commit status with ref' do
let(:commit_status) { create(:generic_commit_status, ref: merge_request.source_branch, pipeline: pipeline) }
let(:commit_status) do
create(:generic_commit_status, ref: ref, pipeline: pipeline)
end
 
it 'notifies the todo service' do
expect(todo_service).to receive(:merge_request_build_failed).with(merge_request)
Loading
Loading
@@ -32,7 +43,7 @@ describe MergeRequests::AddTodoWhenBuildFailsService do
end
 
context 'commit status with non-HEAD ref' do
let(:commit_status) { create(:generic_commit_status, ref: merge_request.source_branch) }
let(:commit_status) { create(:generic_commit_status, ref: ref) }
 
it 'does not notify the todo service' do
expect(todo_service).not_to receive(:merge_request_build_failed)
Loading
Loading
@@ -48,6 +59,18 @@ describe MergeRequests::AddTodoWhenBuildFailsService do
service.execute(commit_status)
end
end
context 'when commit status is a build allowed to fail' do
let(:commit_status) do
create(:ci_build, :allowed_to_fail, ref: ref, pipeline: pipeline)
end
it 'does not create todo' do
expect(todo_service).not_to receive(:merge_request_build_failed)
service.execute(commit_status)
end
end
end
 
describe '#close' do
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