/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
|