summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/status/build/failed.rb
blob: 155f4fc1343aa17f93e3356f0c4d1f3c507e50b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
module Gitlab
  module Ci
    module Status
      module Build
        class Failed < Status::Extended
          REASONS = {
            'unknown_failure' => 'unknown failure',
            'script_failure' => 'script failure',
            'api_failure' => 'API failure',
            'stuck_or_timeout_failure' => 'stuck or timeout failure',
            'runner_system_failure' => 'runner system failure',
            'missing_dependency_failure' => 'missing dependency failure'
          }.freeze

          def status_tooltip
            base_message
          end

          def badge_tooltip
            base_message
          end

          def self.matches?(build, user)
            build.failed?
          end

          private

          def base_message
            "#{s_('CiStatusLabel|failed')} #{description}"
          end

          def description
            "<br> (#{REASONS[subject.failure_reason]})"
          end
        end
      end
    end
  end
end