Class: Minitest::Runnable
Overview
re-open
Constant Summary collapse
- SIGNALS =
:nodoc:
Signal.list
- @@marshal_dump_warned =
false
Instance Attribute Summary collapse
-
#assertions ⇒ Object
Number of assertions executed in this run.
-
#failures ⇒ Object
An assertion raised during the run, if any.
-
#time ⇒ Object
The time it took to run.
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.
-
.run_one_method(klass, method_name, reporter) ⇒ Object
Runs a single method and has the reporter record the result.
-
.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.
-
#time_it ⇒ Object
:nodoc:.
Constructor Details
#initialize(name) ⇒ Runnable
:nodoc:
400 401 402 403 404 |
# File 'lib/minitest.rb', line 400 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.
250 251 252 |
# File 'lib/minitest.rb', line 250 def assertions @assertions end |
#failures ⇒ Object
An assertion raised during the run, if any.
255 256 257 |
# File 'lib/minitest.rb', line 255 def failures @failures end |
#time ⇒ Object
The time it took to run.
260 261 262 |
# File 'lib/minitest.rb', line 260 def time @time end |
Class Method Details
.inherited(klass) ⇒ Object
:nodoc:
978 979 980 981 |
# File 'lib/minitest.rb', line 978 def self.inherited klass # :nodoc: self.runnables << klass super end |
.methods_matching(re) ⇒ Object
Returns all instance methods matching the pattern re
.
287 288 289 |
# File 'lib/minitest.rb', line 287 def self.methods_matching re public_instance_methods(true).grep(re).map(&:to_s) end |
.on_signal(name, action) ⇒ Object
:nodoc:
352 353 354 355 356 357 358 359 360 361 362 363 |
# File 'lib/minitest.rb', line 352 def self.on_signal name, action # :nodoc: supported = SIGNALS[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:
291 292 293 |
# File 'lib/minitest.rb', line 291 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.
302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 |
# File 'lib/minitest.rb', line 302 def self.run reporter, = {} filter = [:filter] || "/./" filter = Regexp.new $1 if filter =~ %r%/(.*)/% filtered_methods = self.runnable_methods.find_all { |m| filter === m || filter === "#{self}##{m}" } exclude = [:exclude] exclude = Regexp.new $1 if exclude =~ %r%/(.*)/% filtered_methods.delete_if { |m| exclude === m || exclude === "#{self}##{m}" } return if filtered_methods.empty? with_info_handler reporter do filtered_methods.each do |method_name| run_one_method self, method_name, reporter end end end |
.run_one_method(klass, method_name, reporter) ⇒ Object
Runs a single method and has the reporter record the result. This was considered internal API but is factored out of run so that subclasses can specialize the running of an individual test. See Minitest::ParallelTest::ClassMethods for an example.
332 333 334 335 |
# File 'lib/minitest.rb', line 332 def self.run_one_method klass, method_name, reporter reporter.prerecord klass, method_name reporter.record Minitest.run_one_method(klass, method_name) end |
.runnable_methods ⇒ Object
Each subclass of Runnable is responsible for overriding this method to return all runnable methods. See #methods_matching.
369 370 371 |
# File 'lib/minitest.rb', line 369 def self.runnable_methods raise NotImplementedError, "subclass responsibility" end |
.runnables ⇒ Object
Returns all subclasses of Runnable.
376 377 378 |
# File 'lib/minitest.rb', line 376 def self.runnables @@runnables end |
.with_info_handler(reporter, &block) ⇒ Object
:nodoc:
337 338 339 340 341 342 343 344 345 346 347 348 |
# File 'lib/minitest.rb', line 337 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 ::Minitest.info_signal, handler, &block end |
Instance Method Details
#failure ⇒ Object
:nodoc:
396 397 398 |
# File 'lib/minitest.rb', line 396 def failure # :nodoc: self.failures.first end |
#marshal_dump ⇒ Object
:nodoc:
382 383 384 385 386 387 388 389 390 |
# File 'lib/minitest.rb', line 382 def marshal_dump # :nodoc: unless @@marshal_dump_warned then warn ["Minitest::Runnable#marshal_dump is deprecated.", "You might be violating internals. From", caller.first].join " " @@marshal_dump_warned = true end [self.name, self.failures, self.assertions, self.time] end |
#marshal_load(ary) ⇒ Object
:nodoc:
392 393 394 |
# File 'lib/minitest.rb', line 392 def marshal_load ary # :nodoc: self.name, self.failures, self.assertions, self.time = ary end |
#name=(o) ⇒ Object
Set the name of the run.
280 281 282 |
# File 'lib/minitest.rb', line 280 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.
419 420 421 |
# File 'lib/minitest.rb', line 419 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”.
427 428 429 |
# File 'lib/minitest.rb', line 427 def result_code raise NotImplementedError, "subclass responsibility" end |
#run ⇒ Object
Runs a single method. Needs to return self.
409 410 411 |
# File 'lib/minitest.rb', line 409 def run raise NotImplementedError, "subclass responsibility" end |
#skipped? ⇒ Boolean
Was this run skipped? See #passed? for more information.
434 435 436 |
# File 'lib/minitest.rb', line 434 def skipped? raise NotImplementedError, "subclass responsibility" end |
#time_it ⇒ Object
:nodoc:
262 263 264 265 266 267 268 |
# File 'lib/minitest.rb', line 262 def time_it # :nodoc: t0 = Minitest.clock_time yield ensure self.time = Minitest.clock_time - t0 end |