Class: Minitest::Runnable
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Subclasses:
|
|
| Inherits: | Object |
| Defined in: | lib/minitest.rb, lib/minitest.rb |
Overview
Represents anything "runnable", like Test, Spec, Benchmark, or
whatever you can dream up.
Subclasses of this are automatically registered and available in .runnables.
Constant Summary
-
SIGNALS =
Internal use only
# File 'lib/minitest.rb', line 501Signal.list
Class Method Summary
-
.filter_runnable_methods(options = {})
Returns an array of filtered .runnable_methods.
-
.methods_matching(re)
Returns all instance methods matching the pattern
re. -
.run_order
Defines the order to run tests (:random by default).
-
.runnable_methods
Each subclass of
Runnableis responsible for overriding this method to return all runnable methods. -
.runnables
Returns all subclasses of
Runnable. - .inherited(klass) Internal use only
- .new(name) ⇒ Runnable constructor Internal use only
- .on_signal(name, action) Internal use only
- .reset Internal use only
- .with_info_handler(_reporter = nil, &block) Internal use only
Instance Attribute Summary
-
#assertions
rw
Number of assertions executed in this run.
-
#failures
rw
An assertion raised during the run, if any.
-
#metadata
rw
Metadata you attach to the test results that get sent to the reporter.
-
#metadata=(value)
rw
Sets metadata, mainly used for Result.from.
-
#metadata? ⇒ Boolean
rw
Returns true if metadata exists.
-
#name
rw
Name of the run.
-
#name=(o)
rw
Set the name of the run.
-
#passed? ⇒ Boolean
readonly
Did this run pass?
-
#skipped? ⇒ Boolean
readonly
Was this run skipped? See #passed? for more information.
-
#time
rw
The time it took to run.
Instance Method Summary
-
#result_code
Returns a single character string to print based on the result of the run.
-
#run
Runs a single method.
- #failure Internal use only
- #time_it Internal use only
Constructor Details
.new(name) ⇒ Runnable
# File 'lib/minitest.rb', line 535
def initialize name # :nodoc: self.name = name self.failures = [] self.assertions = 0 # lazy initializer for metadata end
Class Method Details
.filter_runnable_methods(options = {})
Returns an array of filtered .runnable_methods. Uses options (--include arguments) and options (--exclude arguments) values to filter.
# File 'lib/minitest.rb', line 434
def self.filter_runnable_methods ={} pos = [:include] neg = [:exclude] pos = Regexp.new $1 if pos.kind_of?(String) && pos =~ %r%/(.*)/% neg = Regexp.new $1 if neg.kind_of?(String) && neg =~ %r%/(.*)/% # at most 1-2% slower than a 1-pass version, stop optimizing this self.runnable_methods .select { |m| !pos || pos === m || pos === "#{self}##{m}" } .reject { |m| neg && (neg === m || neg === "#{self}##{m}") } end
.inherited(klass)
# File 'lib/minitest.rb', line 1219
def self.inherited klass # :nodoc: self.runnables << klass super end
.methods_matching(re)
Returns all instance methods matching the pattern re.
# File 'lib/minitest.rb', line 419
def self.methods_matching re public_instance_methods(true).grep(re).map(&:to_s) end
.on_signal(name, action)
.reset
# File 'lib/minitest.rb', line 423
def self.reset # :nodoc: @@runnables = [] end
.run_order
Defines the order to run tests (:random by default). Override this or use a convenience method to change it for your tests.
# File 'lib/minitest.rb', line 493
def self.run_order :random end
.runnable_methods
Each subclass of Runnable is responsible for overriding this
method to return all runnable methods. See #methods_matching.
# File 'lib/minitest.rb', line 520
def self.runnable_methods raise NotImplementedError, "subclass responsibility" end
.runnables
Returns all subclasses of Runnable.
# File 'lib/minitest.rb', line 527
def self.runnables @@runnables end
.with_info_handler(_reporter = nil, &block)
# File 'lib/minitest.rb', line 497
def self.with_info_handler _reporter=nil, &block # :nodoc: on_signal ::Minitest.info_signal, @_info_handler, &block end
Instance Attribute Details
#assertions (rw)
Number of assertions executed in this run.
# File 'lib/minitest.rb', line 382
attr_accessor :assertions
#failures (rw)
An assertion raised during the run, if any.
# File 'lib/minitest.rb', line 387
attr_accessor :failures
#metadata (rw)
Metadata you attach to the test results that get sent to the reporter.
Lazily initializes to a hash, to keep memory down.
NOTE: this data must be plain (read: marshal-able) data! Hashes! Arrays! Strings!
# File 'lib/minitest.rb', line 550
def @metadata ||= {} end
#metadata=(value) (rw)
Sets metadata, mainly used for Result.from.
# File 'lib/minitest.rb', line 557
attr_writer :
#metadata? ⇒ Boolean (rw)
Returns true if metadata exists.
# File 'lib/minitest.rb', line 562
def defined? @metadata end
#name (rw)
Name of the run.
# File 'lib/minitest.rb', line 405
def name @NAME end
#name=(o) (rw)
Set the name of the run.
# File 'lib/minitest.rb', line 412
def name= o @NAME = o end
#passed? ⇒ Boolean (readonly)
Did this run pass?
Note: skipped runs are not considered passing, but they don't cause the process to exit non-zero.
# File 'lib/minitest.rb', line 579
def passed? raise NotImplementedError, "subclass responsibility" end
#skipped? ⇒ Boolean (readonly)
Was this run skipped? See #passed? for more information.
# File 'lib/minitest.rb', line 595
def skipped? raise NotImplementedError, "subclass responsibility" end
#time (rw)
The time it took to run.
# File 'lib/minitest.rb', line 392
attr_accessor :time
Instance Method Details
#failure
# File 'lib/minitest.rb', line 531
def failure # :nodoc: self.failures.first end
#result_code
Returns a single character string to print based on the result of the run. One of ".", "F", "E" or "S".
# File 'lib/minitest.rb', line 588
def result_code raise NotImplementedError, "subclass responsibility" end
#run
Runs a single method. Needs to return self.
# File 'lib/minitest.rb', line 569
def run raise NotImplementedError, "subclass responsibility" end
#time_it
# File 'lib/minitest.rb', line 394
def time_it # :nodoc: t0 = Minitest.clock_time yield ensure self.time = Minitest.clock_time - t0 end