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
Constant Summary
- SIGNALS =
Signal.list # :nodoc:
{}
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.
-
.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.
Constructor Details
#initialize(name) ⇒ Runnable
:nodoc:
359 360 361 362 363 |
# File 'opal/stdlib/minitest.rb', line 359 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.
235 236 237 |
# File 'opal/stdlib/minitest.rb', line 235 def assertions @assertions end |
#failures ⇒ Object
An assertion raised during the run, if any.
240 241 242 |
# File 'opal/stdlib/minitest.rb', line 240 def failures @failures end |
Class Method Details
.inherited(klass) ⇒ Object
:nodoc:
256 257 258 259 |
# File 'opal/stdlib/minitest.rb', line 256 def self.inherited klass # :nodoc: self.runnables << klass super end |
.methods_matching(re) ⇒ Object
Returns all instance methods matching the pattern +re+.
264 265 266 |
# File 'opal/stdlib/minitest.rb', line 264 def self.methods_matching re public_instance_methods(true).grep(re).map(&:to_s) end |
.on_signal(name, action) ⇒ Object
:nodoc:
319 320 321 322 323 324 325 326 327 328 329 330 |
# File 'opal/stdlib/minitest.rb', line 319 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:
268 269 270 |
# File 'opal/stdlib/minitest.rb', line 268 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.
279 280 281 282 283 284 285 286 287 288 289 290 291 292 |
# File 'opal/stdlib/minitest.rb', line 279 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| 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.
300 301 302 |
# File 'opal/stdlib/minitest.rb', line 300 def self.run_one_method klass, method_name, reporter 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.
336 337 338 |
# File 'opal/stdlib/minitest.rb', line 336 def self.runnable_methods raise NotImplementedError, "subclass responsibility" end |
.runnables ⇒ Object
Returns all subclasses of Runnable.
343 344 345 |
# File 'opal/stdlib/minitest.rb', line 343 def self.runnables @@runnables end |
.with_info_handler(reporter, &block) ⇒ Object
:nodoc:
304 305 306 307 308 309 310 311 312 313 314 315 |
# File 'opal/stdlib/minitest.rb', line 304 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:
355 356 357 |
# File 'opal/stdlib/minitest.rb', line 355 def failure # :nodoc: self.failures.first end |
#marshal_dump ⇒ Object
:nodoc:
347 348 349 |
# File 'opal/stdlib/minitest.rb', line 347 def marshal_dump # :nodoc: [self.name, self.failures, self.assertions] end |
#marshal_load(ary) ⇒ Object
:nodoc:
351 352 353 |
# File 'opal/stdlib/minitest.rb', line 351 def marshal_load ary # :nodoc: self.name, self.failures, self.assertions = ary end |
#name ⇒ Object
Name of the run.
245 246 247 |
# File 'opal/stdlib/minitest.rb', line 245 def name @NAME end |
#name=(o) ⇒ Object
Set the name of the run.
252 253 254 |
# File 'opal/stdlib/minitest.rb', line 252 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.
378 379 380 |
# File 'opal/stdlib/minitest.rb', line 378 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".
386 387 388 |
# File 'opal/stdlib/minitest.rb', line 386 def result_code raise NotImplementedError, "subclass responsibility" end |
#run ⇒ Object
Runs a single method. Needs to return self.
368 369 370 |
# File 'opal/stdlib/minitest.rb', line 368 def run raise NotImplementedError, "subclass responsibility" end |
#skipped? ⇒ Boolean
Was this run skipped? See #passed? for more information.
393 394 395 |
# File 'opal/stdlib/minitest.rb', line 393 def skipped? raise NotImplementedError, "subclass responsibility" end |