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
. -
.on_signal(name, action) ⇒ Object
:nodoc:.
-
.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.
-
.with_info_handler(reporter, &block) ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#failure ⇒ Object
:nodoc:.
-
#initialize(name) ⇒ Runnable
constructor
:nodoc:.
-
#marshal_dump ⇒ Object
:nodoc:.
-
#marshal_load(ary) ⇒ Object
:nodoc:.
-
#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:
328 329 330 331 332 |
# File 'lib/minitest.rb', line 328 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.
214 215 216 |
# File 'lib/minitest.rb', line 214 def assertions @assertions end |
#failures ⇒ Object
An assertion raised during the run, if any.
219 220 221 |
# File 'lib/minitest.rb', line 219 def failures @failures end |
Class Method Details
.inherited(klass) ⇒ Object
:nodoc:
235 236 237 238 |
# File 'lib/minitest.rb', line 235 def self.inherited klass # :nodoc: self.runnables << klass super end |
.methods_matching(re) ⇒ Object
Returns all instance methods matching the pattern re
.
243 244 245 |
# File 'lib/minitest.rb', line 243 def self.methods_matching re public_instance_methods(true).grep(re).map(&:to_s) end |
.on_signal(name, action) ⇒ Object
:nodoc:
288 289 290 291 292 293 294 295 296 297 298 299 |
# File 'lib/minitest.rb', line 288 def self.on_signal name, action # :nodoc: supported = Signal.list[name] old_trap = trap name do old_trap.call if old_trap.respond_to? :call action.call end if supported yield ensure trap name, old_trap if supported end |
.reset ⇒ Object
:nodoc:
247 248 249 |
# File 'lib/minitest.rb', line 247 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.
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
# File 'lib/minitest.rb', line 258 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}" } with_info_handler reporter do 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 end |
.runnable_methods ⇒ Object
Each subclass of Runnable is responsible for overriding this method to return all runnable methods. See #methods_matching.
305 306 307 |
# File 'lib/minitest.rb', line 305 def self.runnable_methods raise NotImplementedError, "subclass responsibility" end |
.runnables ⇒ Object
Returns all subclasses of Runnable.
312 313 314 |
# File 'lib/minitest.rb', line 312 def self.runnables @@runnables end |
.with_info_handler(reporter, &block) ⇒ Object
:nodoc:
275 276 277 278 279 280 281 282 283 284 285 286 |
# File 'lib/minitest.rb', line 275 def self.with_info_handler reporter, &block # :nodoc: handler = lambda do unless reporter.passed? then warn "Current results:" warn "" warn reporter.reporters.first warn "" end end on_signal "INFO", handler, &block end |
Instance Method Details
#failure ⇒ Object
:nodoc:
324 325 326 |
# File 'lib/minitest.rb', line 324 def failure # :nodoc: self.failures.first end |
#marshal_dump ⇒ Object
:nodoc:
316 317 318 |
# File 'lib/minitest.rb', line 316 def marshal_dump # :nodoc: [self.name, self.failures, self.assertions] end |
#marshal_load(ary) ⇒ Object
:nodoc:
320 321 322 |
# File 'lib/minitest.rb', line 320 def marshal_load ary # :nodoc: self.name, self.failures, self.assertions = ary end |
#name=(o) ⇒ Object
Set the name of the run.
231 232 233 |
# File 'lib/minitest.rb', line 231 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.
347 348 349 |
# File 'lib/minitest.rb', line 347 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”.
355 356 357 |
# File 'lib/minitest.rb', line 355 def result_code raise NotImplementedError, "subclass responsibility" end |
#run ⇒ Object
Runs a single method. Needs to return self.
337 338 339 |
# File 'lib/minitest.rb', line 337 def run raise NotImplementedError, "subclass responsibility" end |
#skipped? ⇒ Boolean
Was this run skipped? See #passed? for more information.
362 363 364 |
# File 'lib/minitest.rb', line 362 def skipped? raise NotImplementedError, "subclass responsibility" end |