Class: Test::Unit::TestSuite
- Inherits:
-
Object
- Object
- Test::Unit::TestSuite
- Defined in:
- lib/test/unit/testsuite.rb
Overview
A collection of tests which can be #run.
Note: It is easy to confuse a TestSuite instance with something that has a static suite method; I know because I have trouble keeping them straight. Think of something that has a suite method as simply providing a way to get a meaningful TestSuite instance.
Constant Summary collapse
- STARTED =
name + "::STARTED"
- STARTED_OBJECT =
name + "::STARTED::OBJECT"
- FINISHED =
name + "::FINISHED"
- FINISHED_OBJECT =
name + "::FINISHED::OBJECT"
Instance Attribute Summary collapse
-
#elapsed_time ⇒ Object
readonly
Returns the value of attribute elapsed_time.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#priority ⇒ Object
Test suite that has higher priority is ran prior to test suites that have lower priority.
-
#start_time ⇒ Object
readonly
Returns the value of attribute start_time.
-
#test_case ⇒ Object
readonly
Returns the value of attribute test_case.
-
#tests ⇒ Object
readonly
Returns the value of attribute tests.
Instance Method Summary collapse
-
#<<(test) ⇒ Object
Adds the test to the suite.
-
#==(other) ⇒ Object
It’s handy to be able to compare TestSuite instances.
- #delete(test) ⇒ Object
- #delete_tests(tests) ⇒ Object
- #empty? ⇒ Boolean
- #find(name) ⇒ Object
- #have_fixture? ⇒ Boolean
-
#initialize(name = "Unnamed TestSuite", test_case = nil) ⇒ TestSuite
constructor
Creates a new TestSuite with the given name.
- #parallel_safe? ⇒ Boolean
- #passed? ⇒ Boolean
-
#run(worker_context, &progress_block) ⇒ Object
Runs the tests and/or suites contained in this TestSuite.
-
#size ⇒ Object
Returns the rolled up number of tests in this suite; i.e.
-
#to_s ⇒ Object
Overridden to return the name given the suite at creation.
Constructor Details
#initialize(name = "Unnamed TestSuite", test_case = nil) ⇒ TestSuite
Creates a new TestSuite with the given name.
34 35 36 37 38 39 40 41 |
# File 'lib/test/unit/testsuite.rb', line 34 def initialize(name="Unnamed TestSuite", test_case=nil) @name = name @tests = [] @test_case = test_case @priority = 0 @start_time = nil @elapsed_time = nil end |
Instance Attribute Details
#elapsed_time ⇒ Object (readonly)
Returns the value of attribute elapsed_time.
22 23 24 |
# File 'lib/test/unit/testsuite.rb', line 22 def elapsed_time @elapsed_time end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
22 23 24 |
# File 'lib/test/unit/testsuite.rb', line 22 def name @name end |
#priority ⇒ Object
Test suite that has higher priority is ran prior to test suites that have lower priority.
26 27 28 |
# File 'lib/test/unit/testsuite.rb', line 26 def priority @priority end |
#start_time ⇒ Object (readonly)
Returns the value of attribute start_time.
22 23 24 |
# File 'lib/test/unit/testsuite.rb', line 22 def start_time @start_time end |
#test_case ⇒ Object (readonly)
Returns the value of attribute test_case.
22 23 24 |
# File 'lib/test/unit/testsuite.rb', line 22 def test_case @test_case end |
#tests ⇒ Object (readonly)
Returns the value of attribute tests.
22 23 24 |
# File 'lib/test/unit/testsuite.rb', line 22 def tests @tests end |
Instance Method Details
#<<(test) ⇒ Object
Adds the test to the suite.
89 90 91 92 |
# File 'lib/test/unit/testsuite.rb', line 89 def <<(test) @tests << test self end |
#==(other) ⇒ Object
It’s handy to be able to compare TestSuite instances.
122 123 124 125 126 |
# File 'lib/test/unit/testsuite.rb', line 122 def ==(other) return false unless(other.kind_of?(self.class)) return false unless(@name == other.name) @tests == other.tests end |
#delete(test) ⇒ Object
94 95 96 |
# File 'lib/test/unit/testsuite.rb', line 94 def delete(test) @tests.delete(test) end |
#delete_tests(tests) ⇒ Object
98 99 100 |
# File 'lib/test/unit/testsuite.rb', line 98 def delete_tests(tests) @tests -= tests end |
#empty? ⇒ Boolean
111 112 113 |
# File 'lib/test/unit/testsuite.rb', line 111 def empty? size.zero? end |
#find(name) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/test/unit/testsuite.rb', line 43 def find(name) return self if @name == name @tests.each do |test| if test.is_a?(self.class) t = test.find(name) return t if t else return test if test.name == name end end nil end |
#have_fixture? ⇒ Boolean
61 62 63 64 65 66 |
# File 'lib/test/unit/testsuite.rb', line 61 def have_fixture? return false if @test_case.nil? return true if @test_case.method(:startup).owner != TestCase.singleton_class return true if @test_case.method(:shutdown).owner != TestCase.singleton_class false end |
#parallel_safe? ⇒ Boolean
56 57 58 59 |
# File 'lib/test/unit/testsuite.rb', line 56 def parallel_safe? return true if @test_case.nil? @test_case.parallel_safe? end |
#passed? ⇒ Boolean
128 129 130 |
# File 'lib/test/unit/testsuite.rb', line 128 def passed? @tests.all?(&:passed?) end |
#run(worker_context, &progress_block) ⇒ Object
Runs the tests and/or suites contained in this TestSuite.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/test/unit/testsuite.rb', line 70 def run(worker_context, &progress_block) run_context = worker_context.run_context if run_context runner_class = run_context.runner_class else runner_class = TestSuiteRunner end runner_class.new(self).run(worker_context) do |event, *args| case event when STARTED @start_time = Time.now when FINISHED @elapsed_time = Time.now - @start_time end yield(event, *args) end end |
#size ⇒ Object
Returns the rolled up number of tests in this suite; i.e. if the suite contains other suites, it counts the tests within those suites, not the suites themselves.
105 106 107 108 109 |
# File 'lib/test/unit/testsuite.rb', line 105 def size total_size = 0 @tests.each { |test| total_size += test.size } total_size end |
#to_s ⇒ Object
Overridden to return the name given the suite at creation.
117 118 119 |
# File 'lib/test/unit/testsuite.rb', line 117 def to_s @name end |