test-unit 3.4.3 → 3.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/Rakefile +0 -9
- data/doc/text/getting-started.md +1 -1
- data/doc/text/news.md +53 -0
- data/lib/test/unit/assertion-failed-error.rb +35 -0
- data/lib/test/unit/assertions.rb +101 -20
- data/lib/test/unit/autorunner.rb +13 -1
- data/lib/test/unit/collector/descendant.rb +1 -0
- data/lib/test/unit/collector/dir.rb +4 -2
- data/lib/test/unit/collector/load.rb +2 -0
- data/lib/test/unit/collector/objectspace.rb +1 -0
- data/lib/test/unit/collector.rb +31 -0
- data/lib/test/unit/testcase.rb +31 -1
- data/lib/test/unit/testsuite.rb +1 -1
- data/lib/test/unit/util/memory-usage.rb +47 -0
- data/lib/test/unit/version.rb +1 -1
- data/lib/test/unit.rb +4 -4
- metadata +6 -83
- data/test/collector/test-descendant.rb +0 -182
- data/test/collector/test-load.rb +0 -475
- data/test/collector/test_dir.rb +0 -407
- data/test/collector/test_objectspace.rb +0 -102
- data/test/fixtures/header-label.csv +0 -3
- data/test/fixtures/header-label.tsv +0 -3
- data/test/fixtures/header.csv +0 -3
- data/test/fixtures/header.tsv +0 -3
- data/test/fixtures/no-header.csv +0 -2
- data/test/fixtures/no-header.tsv +0 -2
- data/test/fixtures/plus.csv +0 -3
- data/test/run-test.rb +0 -22
- data/test/test-assertions.rb +0 -2281
- data/test/test-attribute-matcher.rb +0 -38
- data/test/test-attribute.rb +0 -123
- data/test/test-code-snippet.rb +0 -79
- data/test/test-color-scheme.rb +0 -123
- data/test/test-color.rb +0 -47
- data/test/test-data.rb +0 -419
- data/test/test-diff.rb +0 -518
- data/test/test-emacs-runner.rb +0 -60
- data/test/test-error.rb +0 -26
- data/test/test-failure.rb +0 -33
- data/test/test-fault-location-detector.rb +0 -163
- data/test/test-fixture.rb +0 -713
- data/test/test-notification.rb +0 -33
- data/test/test-omission.rb +0 -81
- data/test/test-pending.rb +0 -70
- data/test/test-priority.rb +0 -184
- data/test/test-test-case.rb +0 -1284
- data/test/test-test-result.rb +0 -113
- data/test/test-test-suite-creator.rb +0 -97
- data/test/test-test-suite.rb +0 -151
- data/test/testunit-test-util.rb +0 -33
- data/test/ui/test_testrunmediator.rb +0 -20
- data/test/util/test-method-owner-finder.rb +0 -38
- data/test/util/test-output.rb +0 -11
- data/test/util/test_backtracefilter.rb +0 -52
- data/test/util/test_observable.rb +0 -102
- data/test/util/test_procwrapper.rb +0 -36
@@ -25,9 +25,9 @@ module Test
|
|
25
25
|
basedir = @base
|
26
26
|
$:.push(basedir) if basedir
|
27
27
|
if(from.empty?)
|
28
|
-
recursive_collect('.', find_test_cases)
|
28
|
+
suite = recursive_collect('.', find_test_cases)
|
29
29
|
elsif(from.size == 1)
|
30
|
-
recursive_collect(from.first, find_test_cases)
|
30
|
+
suite = recursive_collect(from.first, find_test_cases)
|
31
31
|
else
|
32
32
|
suites = []
|
33
33
|
from.each do |f|
|
@@ -38,6 +38,8 @@ module Test
|
|
38
38
|
sort(suites).each{|s| suite << s}
|
39
39
|
suite
|
40
40
|
end
|
41
|
+
adjust_ractor_tests(suite)
|
42
|
+
suite
|
41
43
|
ensure
|
42
44
|
$:.delete_at($:.rindex(basedir)) if basedir
|
43
45
|
end
|
data/lib/test/unit/collector.rb
CHANGED
@@ -68,6 +68,37 @@ module Test
|
|
68
68
|
suite << sub_suite
|
69
69
|
end
|
70
70
|
end
|
71
|
+
|
72
|
+
def adjust_ractor_tests(suite)
|
73
|
+
return if suite.nil?
|
74
|
+
ractor_suites = extract_ractor_tests(suite)
|
75
|
+
ractor_suites.each do |ractor_suite|
|
76
|
+
suite << ractor_suite
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def extract_ractor_tests(suite)
|
81
|
+
ractor_suites = []
|
82
|
+
ractor_tests = []
|
83
|
+
suite.tests.each do |test|
|
84
|
+
case test
|
85
|
+
when TestSuite
|
86
|
+
ractor_suites.concat(extract_ractor_tests(test))
|
87
|
+
else
|
88
|
+
next unless test[:ractor]
|
89
|
+
ractor_tests << test
|
90
|
+
end
|
91
|
+
end
|
92
|
+
unless ractor_tests.empty?
|
93
|
+
suite.delete_tests(ractor_tests)
|
94
|
+
ractor_suite = TestSuite.new(suite.name, suite.test_case)
|
95
|
+
ractor_tests.each do |ractor_test|
|
96
|
+
ractor_suite << ractor_test
|
97
|
+
end
|
98
|
+
ractor_suites << ractor_suite
|
99
|
+
end
|
100
|
+
ractor_suites
|
101
|
+
end
|
71
102
|
end
|
72
103
|
end
|
73
104
|
end
|
data/lib/test/unit/testcase.rb
CHANGED
@@ -351,6 +351,36 @@ module Test
|
|
351
351
|
attribute(:description, value, {}, *targets)
|
352
352
|
end
|
353
353
|
|
354
|
+
# Declares that the following test uses Ractor.
|
355
|
+
#
|
356
|
+
# Tests that use Ractor are executed at the end. Because multi
|
357
|
+
# Ractor mode is enabled in the current process and it's not
|
358
|
+
# disabled even when only one Ractor is running after running
|
359
|
+
# a test that uses Ractor on Ruby 3.0. It will be solved in
|
360
|
+
# Ruby 3.1.
|
361
|
+
#
|
362
|
+
# This is implemented by setting the `:ractor` attribute of
|
363
|
+
# the test to `true`.
|
364
|
+
#
|
365
|
+
# @param options [Hash] See {Attribute::ClassMethods#attribute}
|
366
|
+
# for details.
|
367
|
+
#
|
368
|
+
# @return [void]
|
369
|
+
#
|
370
|
+
# @example Declares that test_do_something_with_ractor uses Ractor
|
371
|
+
#
|
372
|
+
# ractor
|
373
|
+
# def test_do_something_with_ractor
|
374
|
+
# Ractor.new do
|
375
|
+
# # ...
|
376
|
+
# end
|
377
|
+
# end
|
378
|
+
#
|
379
|
+
# @since 3.4.6
|
380
|
+
def ractor(options={})
|
381
|
+
attribute(:ractor, true, options)
|
382
|
+
end
|
383
|
+
|
354
384
|
# Defines a sub test case.
|
355
385
|
#
|
356
386
|
# This is a syntax sugar. The both of the following codes are
|
@@ -447,7 +477,7 @@ module Test
|
|
447
477
|
# @private
|
448
478
|
@@method_locations = {}
|
449
479
|
# @private
|
450
|
-
@@method_location_mutex = Mutex.new
|
480
|
+
@@method_location_mutex = Thread::Mutex.new
|
451
481
|
|
452
482
|
# @private
|
453
483
|
def method_locations
|
data/lib/test/unit/testsuite.rb
CHANGED
@@ -77,7 +77,7 @@ module Test
|
|
77
77
|
@tests -= tests
|
78
78
|
end
|
79
79
|
|
80
|
-
#
|
80
|
+
# Returns the rolled up number of tests in this suite;
|
81
81
|
# i.e. if the suite contains other suites, it counts the
|
82
82
|
# tests within those suites, not the suites themselves.
|
83
83
|
def size
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Test
|
2
|
+
module Unit
|
3
|
+
module Util
|
4
|
+
class MemoryUsage
|
5
|
+
attr_reader :virtual
|
6
|
+
attr_reader :physical
|
7
|
+
def initialize
|
8
|
+
@virtual = nil
|
9
|
+
@physical = nil
|
10
|
+
collect_data
|
11
|
+
end
|
12
|
+
|
13
|
+
def collected?
|
14
|
+
return false if @virtual.nil?
|
15
|
+
return false if @physical.nil?
|
16
|
+
true
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def collect_data
|
21
|
+
collect_data_proc
|
22
|
+
end
|
23
|
+
|
24
|
+
def collect_data_proc
|
25
|
+
status_file = "/proc/self/status"
|
26
|
+
return false unless File.exist?(status_file)
|
27
|
+
|
28
|
+
data = File.binread(status_file)
|
29
|
+
data.each_line do |line|
|
30
|
+
case line
|
31
|
+
when /\AVm(Size|RSS):\s*(\d+)\s*kB/
|
32
|
+
name = $1
|
33
|
+
value = Integer($2, 10) * 1024
|
34
|
+
case name
|
35
|
+
when "Size"
|
36
|
+
@virtual = value
|
37
|
+
when "RSS"
|
38
|
+
@physical = value
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
collected?
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/test/unit/version.rb
CHANGED
data/lib/test/unit.rb
CHANGED
@@ -324,14 +324,14 @@ module Test # :nodoc:
|
|
324
324
|
# Set true when Test::Unit has run. If set to true Test::Unit
|
325
325
|
# will not automatically run at exit.
|
326
326
|
#
|
327
|
-
# @deprecated Use Test::Unit::AutoRunner.need_auto_run= instead.
|
327
|
+
# @deprecated Use {Test::Unit::AutoRunner.need_auto_run=} instead.
|
328
328
|
def run=(have_run)
|
329
329
|
AutoRunner.need_auto_run = (not have_run)
|
330
330
|
end
|
331
331
|
|
332
332
|
# Already tests have run?
|
333
333
|
#
|
334
|
-
# @deprecated Use Test::Unit::AutoRunner.need_auto_run? instead.
|
334
|
+
# @deprecated Use {Test::Unit::AutoRunner.need_auto_run?} instead.
|
335
335
|
def run?
|
336
336
|
not AutoRunner.need_auto_run?
|
337
337
|
end
|
@@ -339,7 +339,7 @@ module Test # :nodoc:
|
|
339
339
|
# @api private
|
340
340
|
@@at_start_hooks = []
|
341
341
|
|
342
|
-
#
|
342
|
+
# Register a hook that is run before running tests.
|
343
343
|
# To register multiple hooks, call this method multiple times.
|
344
344
|
#
|
345
345
|
# Here is an example test case:
|
@@ -425,7 +425,7 @@ module Test # :nodoc:
|
|
425
425
|
# @api private
|
426
426
|
@@at_exit_hooks = []
|
427
427
|
|
428
|
-
#
|
428
|
+
# Register a hook that is run after running tests.
|
429
429
|
# To register multiple hooks, call this method multiple times.
|
430
430
|
#
|
431
431
|
# Here is an example test case:
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-unit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.4.
|
4
|
+
version: 3.4.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-09-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: power_assert
|
@@ -159,6 +159,7 @@ files:
|
|
159
159
|
- lib/test/unit/ui/testrunnerutilities.rb
|
160
160
|
- lib/test/unit/ui/xml/testrunner.rb
|
161
161
|
- lib/test/unit/util/backtracefilter.rb
|
162
|
+
- lib/test/unit/util/memory-usage.rb
|
162
163
|
- lib/test/unit/util/method-owner-finder.rb
|
163
164
|
- lib/test/unit/util/observable.rb
|
164
165
|
- lib/test/unit/util/output.rb
|
@@ -170,46 +171,6 @@ files:
|
|
170
171
|
- sample/test_adder.rb
|
171
172
|
- sample/test_subtracter.rb
|
172
173
|
- sample/test_user.rb
|
173
|
-
- test/collector/test-descendant.rb
|
174
|
-
- test/collector/test-load.rb
|
175
|
-
- test/collector/test_dir.rb
|
176
|
-
- test/collector/test_objectspace.rb
|
177
|
-
- test/fixtures/header-label.csv
|
178
|
-
- test/fixtures/header-label.tsv
|
179
|
-
- test/fixtures/header.csv
|
180
|
-
- test/fixtures/header.tsv
|
181
|
-
- test/fixtures/no-header.csv
|
182
|
-
- test/fixtures/no-header.tsv
|
183
|
-
- test/fixtures/plus.csv
|
184
|
-
- test/run-test.rb
|
185
|
-
- test/test-assertions.rb
|
186
|
-
- test/test-attribute-matcher.rb
|
187
|
-
- test/test-attribute.rb
|
188
|
-
- test/test-code-snippet.rb
|
189
|
-
- test/test-color-scheme.rb
|
190
|
-
- test/test-color.rb
|
191
|
-
- test/test-data.rb
|
192
|
-
- test/test-diff.rb
|
193
|
-
- test/test-emacs-runner.rb
|
194
|
-
- test/test-error.rb
|
195
|
-
- test/test-failure.rb
|
196
|
-
- test/test-fault-location-detector.rb
|
197
|
-
- test/test-fixture.rb
|
198
|
-
- test/test-notification.rb
|
199
|
-
- test/test-omission.rb
|
200
|
-
- test/test-pending.rb
|
201
|
-
- test/test-priority.rb
|
202
|
-
- test/test-test-case.rb
|
203
|
-
- test/test-test-result.rb
|
204
|
-
- test/test-test-suite-creator.rb
|
205
|
-
- test/test-test-suite.rb
|
206
|
-
- test/testunit-test-util.rb
|
207
|
-
- test/ui/test_testrunmediator.rb
|
208
|
-
- test/util/test-method-owner-finder.rb
|
209
|
-
- test/util/test-output.rb
|
210
|
-
- test/util/test_backtracefilter.rb
|
211
|
-
- test/util/test_observable.rb
|
212
|
-
- test/util/test_procwrapper.rb
|
213
174
|
homepage: http://test-unit.github.io/
|
214
175
|
licenses:
|
215
176
|
- Ruby
|
@@ -217,6 +178,8 @@ licenses:
|
|
217
178
|
- PSFL
|
218
179
|
metadata:
|
219
180
|
source_code_uri: https://github.com/test-unit/test-unit
|
181
|
+
documentation_uri: https://test-unit.github.io/test-unit/en/
|
182
|
+
bug_tracker_uri: https://github.com/test-unit/test-unit/issues
|
220
183
|
post_install_message:
|
221
184
|
rdoc_options: []
|
222
185
|
require_paths:
|
@@ -236,44 +199,4 @@ rubygems_version: 3.3.0.dev
|
|
236
199
|
signing_key:
|
237
200
|
specification_version: 4
|
238
201
|
summary: An xUnit family unit testing framework for Ruby.
|
239
|
-
test_files:
|
240
|
-
- test/collector/test-descendant.rb
|
241
|
-
- test/collector/test-load.rb
|
242
|
-
- test/collector/test_dir.rb
|
243
|
-
- test/collector/test_objectspace.rb
|
244
|
-
- test/fixtures/header-label.csv
|
245
|
-
- test/fixtures/header-label.tsv
|
246
|
-
- test/fixtures/header.csv
|
247
|
-
- test/fixtures/header.tsv
|
248
|
-
- test/fixtures/no-header.csv
|
249
|
-
- test/fixtures/no-header.tsv
|
250
|
-
- test/fixtures/plus.csv
|
251
|
-
- test/run-test.rb
|
252
|
-
- test/test-assertions.rb
|
253
|
-
- test/test-attribute-matcher.rb
|
254
|
-
- test/test-attribute.rb
|
255
|
-
- test/test-code-snippet.rb
|
256
|
-
- test/test-color-scheme.rb
|
257
|
-
- test/test-color.rb
|
258
|
-
- test/test-data.rb
|
259
|
-
- test/test-diff.rb
|
260
|
-
- test/test-emacs-runner.rb
|
261
|
-
- test/test-error.rb
|
262
|
-
- test/test-failure.rb
|
263
|
-
- test/test-fault-location-detector.rb
|
264
|
-
- test/test-fixture.rb
|
265
|
-
- test/test-notification.rb
|
266
|
-
- test/test-omission.rb
|
267
|
-
- test/test-pending.rb
|
268
|
-
- test/test-priority.rb
|
269
|
-
- test/test-test-case.rb
|
270
|
-
- test/test-test-result.rb
|
271
|
-
- test/test-test-suite-creator.rb
|
272
|
-
- test/test-test-suite.rb
|
273
|
-
- test/testunit-test-util.rb
|
274
|
-
- test/ui/test_testrunmediator.rb
|
275
|
-
- test/util/test-method-owner-finder.rb
|
276
|
-
- test/util/test-output.rb
|
277
|
-
- test/util/test_backtracefilter.rb
|
278
|
-
- test/util/test_observable.rb
|
279
|
-
- test/util/test_procwrapper.rb
|
202
|
+
test_files: []
|
@@ -1,182 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'test/unit/collector/descendant'
|
3
|
-
|
4
|
-
class TestUnitCollectorDescendant < Test::Unit::TestCase
|
5
|
-
def setup
|
6
|
-
@previous_descendants = Test::Unit::TestCase::DESCENDANTS.dup
|
7
|
-
Test::Unit::TestCase::DESCENDANTS.clear
|
8
|
-
end
|
9
|
-
|
10
|
-
def teardown
|
11
|
-
Test::Unit::TestCase::DESCENDANTS.replace(@previous_descendants)
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
def assert_collect(expected, *collect_args)
|
16
|
-
collector = Test::Unit::Collector::Descendant.new
|
17
|
-
yield(collector) if block_given?
|
18
|
-
assert_equal(expected, collector.send(:collect, *collect_args))
|
19
|
-
end
|
20
|
-
|
21
|
-
def default_name
|
22
|
-
Test::Unit::Collector::Descendant::NAME
|
23
|
-
end
|
24
|
-
|
25
|
-
def empty_suite(name=nil)
|
26
|
-
Test::Unit::TestSuite.new(name || default_name)
|
27
|
-
end
|
28
|
-
|
29
|
-
class TestCollect < self
|
30
|
-
def setup
|
31
|
-
super
|
32
|
-
|
33
|
-
@test_case1 = Class.new(Test::Unit::TestCase) do
|
34
|
-
self.test_order = :alphabetic
|
35
|
-
|
36
|
-
def self.name
|
37
|
-
"test-case1"
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_1
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_2
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
@test_case2 = Class.new(Test::Unit::TestCase) do
|
48
|
-
self.test_order = :alphabetic
|
49
|
-
|
50
|
-
def self.name
|
51
|
-
"test-case2"
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_0
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
@no_test_case = Class.new do
|
59
|
-
def self.name
|
60
|
-
"no-test-case"
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_4
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_basic
|
69
|
-
assert_collect(full_suite("name"), "name")
|
70
|
-
|
71
|
-
assert_collect(full_suite("name"), "name") do |collector|
|
72
|
-
collector.filter = []
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_filtered
|
77
|
-
assert_collect(empty_suite) do |collector|
|
78
|
-
collector.filter = Proc.new {false}
|
79
|
-
end
|
80
|
-
|
81
|
-
assert_collect(full_suite) do |collector|
|
82
|
-
collector.filter = Proc.new {true}
|
83
|
-
end
|
84
|
-
|
85
|
-
assert_collect(full_suite) do |collector|
|
86
|
-
collector.filter = Proc.new {nil}
|
87
|
-
end
|
88
|
-
|
89
|
-
assert_collect(empty_suite) do |collector|
|
90
|
-
collector.filter = [Proc.new {false}, Proc.new {true}]
|
91
|
-
end
|
92
|
-
|
93
|
-
assert_collect(empty_suite) do |collector|
|
94
|
-
collector.filter = [Proc.new {true}, Proc.new {false}]
|
95
|
-
end
|
96
|
-
|
97
|
-
assert_collect(empty_suite) do |collector|
|
98
|
-
collector.filter = [Proc.new {nil}, Proc.new {false}]
|
99
|
-
end
|
100
|
-
|
101
|
-
assert_collect(full_suite) do |collector|
|
102
|
-
collector.filter = [Proc.new {nil}, Proc.new {true}]
|
103
|
-
end
|
104
|
-
|
105
|
-
expected = empty_suite
|
106
|
-
suite1 = Test::Unit::TestSuite.new(@test_case1.name)
|
107
|
-
suite1 << @test_case1.new("test_1")
|
108
|
-
suite2 = Test::Unit::TestSuite.new(@test_case2.name)
|
109
|
-
suite2 << @test_case2.new("test_0")
|
110
|
-
expected << suite1 << suite2
|
111
|
-
assert_collect(expected) do |collector|
|
112
|
-
collector.filter = Proc.new do |test|
|
113
|
-
['test_1', 'test_0'].include?(test.method_name)
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
suite1 = Test::Unit::TestSuite.new(@test_case1.name)
|
118
|
-
suite1 << @test_case1.new("test_1")
|
119
|
-
suite2 = Test::Unit::TestSuite.new(@test_case2.name)
|
120
|
-
suite2 << @test_case2.new("test_0")
|
121
|
-
assert_collect(empty_suite) do |collector|
|
122
|
-
filters = [Proc.new {|test| test.method_name == 'test_1' ? true : nil},
|
123
|
-
Proc.new {|test| test.method_name == 'test_0' ? true : nil},
|
124
|
-
Proc.new {false}]
|
125
|
-
collector.filter = filters
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
private
|
130
|
-
def full_suite(name=nil)
|
131
|
-
sub_suite1 = Test::Unit::TestSuite.new(@test_case1.name)
|
132
|
-
sub_suite1 << @test_case1.new('test_1')
|
133
|
-
sub_suite1 << @test_case1.new('test_2')
|
134
|
-
|
135
|
-
sub_suite2 = Test::Unit::TestSuite.new(@test_case2.name)
|
136
|
-
sub_suite2 << @test_case2.new('test_0')
|
137
|
-
|
138
|
-
suite = empty_suite(name)
|
139
|
-
suite << sub_suite1
|
140
|
-
suite << sub_suite2
|
141
|
-
suite
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
class TestModule < self
|
146
|
-
def test_included_in_child
|
147
|
-
tests = Module.new do
|
148
|
-
def test_in_module
|
149
|
-
end
|
150
|
-
end
|
151
|
-
|
152
|
-
parent_test_case = Class.new(Test::Unit::TestCase) do
|
153
|
-
class << self
|
154
|
-
def name
|
155
|
-
"Parent"
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
child_test_case = Class.new(parent_test_case) do
|
161
|
-
include tests
|
162
|
-
|
163
|
-
class << self
|
164
|
-
def name
|
165
|
-
"Child"
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
child_suite = Test::Unit::TestSuite.new(child_test_case.name)
|
171
|
-
child_suite << child_test_case.new("test_in_module")
|
172
|
-
|
173
|
-
parent_suite = Test::Unit::TestSuite.new(parent_test_case.name)
|
174
|
-
parent_suite << child_suite
|
175
|
-
|
176
|
-
suite = empty_suite("all")
|
177
|
-
suite << parent_suite
|
178
|
-
|
179
|
-
assert_collect(suite, "all")
|
180
|
-
end
|
181
|
-
end
|
182
|
-
end
|