This file is indexed.

/usr/lib/ruby/vendor_ruby/test/unit/testresult.rb is in ruby-test-unit 3.2.5-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#--
# Author:: Nathaniel Talbott.
# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
# License:: Ruby license.

require 'test/unit/util/observable'
require 'test/unit/failure'
require 'test/unit/error'
require 'test/unit/omission'
require 'test/unit/pending'
require 'test/unit/notification'

module Test
  module Unit
    module NullResultContainerInitializer
      private
      def initialize_containers
      end
    end

    # Collects Test::Unit::Failure and Test::Unit::Error so that
    # they can be displayed to the user. To this end, observers
    # can be added to it, allowing the dynamic updating of, say, a
    # UI.
    class TestResult
      include Util::Observable
      include NullResultContainerInitializer
      include TestResultFailureSupport
      include TestResultErrorSupport
      include TestResultPendingSupport
      include TestResultOmissionSupport
      include TestResultNotificationSupport

      FINISHED = name + "::FINISHED"
      CHANGED = name + "::CHANGED"
      PASS_ASSERTION = name + "::PASS_ASSERTION"
      FAULT = name + "::FAULT"

      attr_reader :run_count, :pass_count, :assertion_count, :faults

      attr_accessor :stop_tag

      # Constructs a new, empty TestResult.
      def initialize
        @run_count, @pass_count, @assertion_count = 0, 0, 0
        @summary_generators = []
        @problem_checkers = []
        @faults = []
        @stop_tag = nil
        initialize_containers
      end

      # Records a test run.
      def add_run
        @run_count += 1
        notify_listeners(FINISHED, self)
        notify_changed
      end

      def add_pass
        @pass_count += 1
      end

      # Records an individual assertion.
      def add_assertion
        @assertion_count += 1
        notify_listeners(PASS_ASSERTION, self)
        notify_changed
      end

      # Returns a string contain the recorded runs, assertions,
      # failures and errors in this TestResult.
      def summary
        ["#{run_count} tests",
         "#{assertion_count} assertions",
         *@summary_generators.collect {|generator| __send__(generator)}].join(", ")
      end

      # Returnes a string that shows result status.
      def status
        if passed?
          if pending_count > 0
            "pending"
          elsif omission_count > 0
            "omission"
          elsif notification_count > 0
            "notification"
          else
            "pass"
          end
        elsif error_count > 0
          "error"
        elsif failure_count > 0
          "failure"
        end
      end

      def stop
        throw @stop_tag
      end

      def to_s
        summary
      end

      # Returns whether or not this TestResult represents
      # successful completion.
      def passed?
        @problem_checkers.all? {|checker| not __send__(checker)}
      end

      def pass_percentage
        n_tests = @run_count - omission_count
        if n_tests.zero?
          0
        else
          100.0 * (@pass_count / n_tests.to_f)
        end
      end

      private
      def notify_changed
        notify_listeners(CHANGED, self)
      end

      def notify_fault(fault)
        @faults << fault
        notify_listeners(FAULT, fault)
      end
    end
  end
end