diff options
Diffstat (limited to 'app/services/merge_requests/mergeability')
5 files changed, 94 insertions, 0 deletions
diff --git a/app/services/merge_requests/mergeability/check_broken_status_service.rb b/app/services/merge_requests/mergeability/check_broken_status_service.rb new file mode 100644 index 00000000000..9a54a4292c8 --- /dev/null +++ b/app/services/merge_requests/mergeability/check_broken_status_service.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true +module MergeRequests + module Mergeability + class CheckBrokenStatusService < CheckBaseService + def execute + if merge_request.broken? + failure + else + success + end + end + + def skip? + false + end + + def cacheable? + false + end + end + end +end diff --git a/app/services/merge_requests/mergeability/check_discussions_status_service.rb b/app/services/merge_requests/mergeability/check_discussions_status_service.rb new file mode 100644 index 00000000000..9b4eab9d399 --- /dev/null +++ b/app/services/merge_requests/mergeability/check_discussions_status_service.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true +module MergeRequests + module Mergeability + class CheckDiscussionsStatusService < CheckBaseService + def execute + if merge_request.mergeable_discussions_state? + success + else + failure + end + end + + def skip? + params[:skip_discussions_check].present? + end + + def cacheable? + false + end + end + end +end diff --git a/app/services/merge_requests/mergeability/check_draft_status_service.rb b/app/services/merge_requests/mergeability/check_draft_status_service.rb new file mode 100644 index 00000000000..bc940e2116d --- /dev/null +++ b/app/services/merge_requests/mergeability/check_draft_status_service.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module MergeRequests + module Mergeability + class CheckDraftStatusService < CheckBaseService + def execute + if merge_request.draft? + failure + else + success + end + end + + def skip? + false + end + + def cacheable? + false + end + end + end +end diff --git a/app/services/merge_requests/mergeability/check_open_status_service.rb b/app/services/merge_requests/mergeability/check_open_status_service.rb new file mode 100644 index 00000000000..361af946e3f --- /dev/null +++ b/app/services/merge_requests/mergeability/check_open_status_service.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module MergeRequests + module Mergeability + class CheckOpenStatusService < CheckBaseService + def execute + if merge_request.open? + success + else + failure + end + end + + def skip? + false + end + + def cacheable? + false + end + end + end +end diff --git a/app/services/merge_requests/mergeability/run_checks_service.rb b/app/services/merge_requests/mergeability/run_checks_service.rb index c1d65fb65cc..03c6d985c23 100644 --- a/app/services/merge_requests/mergeability/run_checks_service.rb +++ b/app/services/merge_requests/mergeability/run_checks_service.rb @@ -7,6 +7,10 @@ module MergeRequests # We want to have the cheapest checks first in the list, # that way we can fail fast before running the more expensive ones CHECKS = [ + CheckOpenStatusService, + CheckDraftStatusService, + CheckBrokenStatusService, + CheckDiscussionsStatusService, CheckCiStatusService ].freeze |