Class: Journo::SuiteRunner
- Inherits:
-
MiniTest::Unit
- Object
- MiniTest::Unit
- Journo::SuiteRunner
- Defined in:
- lib/journo/suite_runner.rb
Overview
Runner for MiniTest suites.
This is a heavily refactored version of the built-in MiniTest runner. It's about the same speed, from what I can tell, but is significantly easier to extend.
Based upon Ryan Davis of Seattle.rb's MiniTest (MIT License).
Instance Attribute Summary collapse
-
#reporters
Returns the value of attribute reporters.
-
#suite_start_time
Returns the value of attribute suite_start_time.
-
#test_start_time
Returns the value of attribute test_start_time.
Instance Method Summary collapse
- #_run_anything(type)
- #_run_suite(suite, tests)
- #_run_test(suite, test)
-
#initialize ⇒ SuiteRunner
constructor
A new instance of SuiteRunner.
- #trigger(callback, *args)
Constructor Details
#initialize ⇒ SuiteRunner
Returns a new instance of SuiteRunner.
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/journo/suite_runner.rb', line 14 def initialize self.report = {} self.errors = 0 self.failures = 0 self.skips = 0 self.test_count = 0 self.assertion_count = 0 self.verbose = false self.reporters = [] end |
Instance Attribute Details
#reporters
Returns the value of attribute reporters.
12 13 14 |
# File 'lib/journo/suite_runner.rb', line 12 def reporters @reporters end |
#suite_start_time
Returns the value of attribute suite_start_time.
12 13 14 |
# File 'lib/journo/suite_runner.rb', line 12 def suite_start_time @suite_start_time end |
#test_start_time
Returns the value of attribute test_start_time.
12 13 14 |
# File 'lib/journo/suite_runner.rb', line 12 def test_start_time @test_start_time end |
Instance Method Details
#_run_anything(type)
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/journo/suite_runner.rb', line 25 def _run_anything(type) self.start_time = Time.now suites = suites_of_type(type) tests = suites.inject({}) do |acc, suite| acc[suite] = filtered_tests(suite, type) acc end self.test_count = tests.inject(0) { |acc, suite| acc + suite[1].length } if test_count > 0 trigger(:before_suites, suites, type) fix_sync do suites.each { |suite| _run_suite(suite, tests[suite]) } end trigger(:after_suites, suites, type) end end |
#_run_suite(suite, tests)
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/journo/suite_runner.rb', line 47 def _run_suite(suite, tests) unless tests.empty? begin self.suite_start_time = Time.now trigger(:before_suite, suite) suite.startup if suite.respond_to?(:startup) tests.each { |test| _run_test(suite, test) } ensure suite.shutdown if suite.respond_to?(:shutdown) trigger(:after_suite, suite) end end end |
#_run_test(suite, test)
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/journo/suite_runner.rb', line 63 def _run_test(suite, test) self.test_start_time = Time.now trigger(:before_test, suite, test) test_runner = TestRunner.new(suite, test) test_runner.run add_test_result(suite, test, test_runner) trigger(test_runner.result, suite, test, test_runner) end |
#trigger(callback, *args)
74 75 76 |
# File 'lib/journo/suite_runner.rb', line 74 def trigger(callback, *args) reporters.each { |reporter| reporter.send(callback, *args) } end |