Class: Minitest::Runnable
Overview
Represents anything “runnable”, like Test, Spec, Benchmark, or whatever you can dream up.
Subclasses of this are automatically registered and available in Runnable.runnables.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#assertions ⇒ Object
Number of assertions executed in this run.
-
#failures ⇒ Object
An assertion raised during the run, if any.
Class Method Summary collapse
-
.inherited(klass) ⇒ Object
:nodoc:.
-
.methods_matching(re) ⇒ Object
Returns all instance methods matching the pattern
re
. -
.reset ⇒ Object
:nodoc:.
-
.run(reporter, options = {}) ⇒ Object
Responsible for running all runnable methods in a given class, each in its own instance.
-
.runnable_methods ⇒ Object
Each subclass of Runnable is responsible for overriding this method to return all runnable methods.
-
.runnables ⇒ Object
Returns all subclasses of Runnable.
Instance Method Summary collapse
-
#failure ⇒ Object
:nodoc:.
-
#initialize(name) ⇒ Runnable
constructor
:nodoc:.
- #marshal_dump ⇒ Object
- #marshal_load(ary) ⇒ Object
-
#name ⇒ Object
Name of the run.
-
#name=(o) ⇒ Object
Set the name of the run.
-
#passed? ⇒ Boolean
Did this run pass?.
-
#result_code ⇒ Object
Returns a single character string to print based on the result of the run.
-
#run ⇒ Object
Runs a single method.
-
#skipped? ⇒ Boolean
Was this run skipped? See #passed? for more information.
Constructor Details
#initialize(name) ⇒ Runnable
:nodoc:
297 298 299 300 301 |
# File 'lib/minitest.rb', line 297 def initialize name # :nodoc: self.name = name self.failures = [] self.assertions = 0 end |
Instance Attribute Details
#assertions ⇒ Object
Number of assertions executed in this run.
211 212 213 |
# File 'lib/minitest.rb', line 211 def assertions @assertions end |
#failures ⇒ Object
An assertion raised during the run, if any.
216 217 218 |
# File 'lib/minitest.rb', line 216 def failures @failures end |
Class Method Details
.inherited(klass) ⇒ Object
:nodoc:
232 233 234 235 |
# File 'lib/minitest.rb', line 232 def self.inherited klass # :nodoc: self.runnables << klass super end |
.methods_matching(re) ⇒ Object
Returns all instance methods matching the pattern re
.
240 241 242 |
# File 'lib/minitest.rb', line 240 def self.methods_matching re public_instance_methods(true).grep(re).map(&:to_s) end |
.reset ⇒ Object
:nodoc:
244 245 246 |
# File 'lib/minitest.rb', line 244 def self.reset # :nodoc: @@runnables = [] end |
.run(reporter, options = {}) ⇒ Object
Responsible for running all runnable methods in a given class, each in its own instance. Each instance is passed to the reporter to record.
255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
# File 'lib/minitest.rb', line 255 def self.run reporter, = {} filter = [:filter] || '/./' filter = Regexp.new $1 if filter =~ /\/(.*)\// filtered_methods = self.runnable_methods.find_all { |m| filter === m || filter === "#{self}##{m}" } filtered_methods.each do |method_name| result = self.new(method_name).run raise "#{self}#run _must_ return self" unless self === result reporter.record result end end |
.runnable_methods ⇒ Object
Each subclass of Runnable is responsible for overriding this method to return all runnable methods. See #methods_matching.
274 275 276 |
# File 'lib/minitest.rb', line 274 def self.runnable_methods raise NotImplementedError, "subclass responsibility" end |
.runnables ⇒ Object
Returns all subclasses of Runnable.
281 282 283 |
# File 'lib/minitest.rb', line 281 def self.runnables @@runnables end |
Instance Method Details
#failure ⇒ Object
:nodoc:
293 294 295 |
# File 'lib/minitest.rb', line 293 def failure # :nodoc: self.failures.first end |
#marshal_dump ⇒ Object
285 286 287 |
# File 'lib/minitest.rb', line 285 def marshal_dump [self.name, self.failures, self.assertions] end |
#marshal_load(ary) ⇒ Object
289 290 291 |
# File 'lib/minitest.rb', line 289 def marshal_load ary self.name, self.failures, self.assertions = ary end |
#name=(o) ⇒ Object
Set the name of the run.
228 229 230 |
# File 'lib/minitest.rb', line 228 def name= o @NAME = o end |
#passed? ⇒ Boolean
Did this run pass?
Note: skipped runs are not considered passing, but they don’t cause the process to exit non-zero.
316 317 318 |
# File 'lib/minitest.rb', line 316 def passed? raise NotImplementedError, "subclass responsibility" end |
#result_code ⇒ Object
Returns a single character string to print based on the result of the run. Eg “.”, “F”, or “E”.
324 325 326 |
# File 'lib/minitest.rb', line 324 def result_code raise NotImplementedError, "subclass responsibility" end |
#run ⇒ Object
Runs a single method. Needs to return self.
306 307 308 |
# File 'lib/minitest.rb', line 306 def run raise NotImplementedError, "subclass responsibility" end |
#skipped? ⇒ Boolean
Was this run skipped? See #passed? for more information.
331 332 333 |
# File 'lib/minitest.rb', line 331 def skipped? raise NotImplementedError, "subclass responsibility" end |