test-unit 3.4.2 → 3.4.6
Sign up to get free protection for your applications and to get access to all the features.
- 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 +52 -0
- data/lib/test/unit/assertion-failed-error.rb +35 -0
- data/lib/test/unit/assertions.rb +206 -13
- 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 +33 -2
- 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 -2187
- 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
data/lib/test/unit/autorunner.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require "English"
|
2
|
+
require "optparse"
|
2
3
|
|
3
4
|
require "test/unit/color-scheme"
|
4
5
|
require "test/unit/priority"
|
5
6
|
require "test/unit/attribute-matcher"
|
6
7
|
require "test/unit/testcase"
|
7
|
-
require "optparse"
|
8
8
|
|
9
9
|
module Test
|
10
10
|
module Unit
|
@@ -144,6 +144,7 @@ module Test
|
|
144
144
|
attr_accessor :pattern, :exclude, :base, :workdir
|
145
145
|
attr_accessor :color_scheme, :listeners
|
146
146
|
attr_writer :stop_on_failure
|
147
|
+
attr_writer :debug_on_failure
|
147
148
|
attr_writer :runner, :collector
|
148
149
|
|
149
150
|
def initialize(standalone)
|
@@ -159,6 +160,7 @@ module Test
|
|
159
160
|
@workdir = nil
|
160
161
|
@listeners = []
|
161
162
|
@stop_on_failure = false
|
163
|
+
@debug_on_failure = false
|
162
164
|
config_file = "test-unit.yml"
|
163
165
|
if File.exist?(config_file)
|
164
166
|
load_config(config_file)
|
@@ -172,6 +174,10 @@ module Test
|
|
172
174
|
@stop_on_failure
|
173
175
|
end
|
174
176
|
|
177
|
+
def debug_on_failure?
|
178
|
+
@debug_on_failure
|
179
|
+
end
|
180
|
+
|
175
181
|
def prepare
|
176
182
|
PREPARE_HOOKS.each do |handler|
|
177
183
|
handler.call(self)
|
@@ -381,6 +387,12 @@ module Test
|
|
381
387
|
@stop_on_failure = boolean
|
382
388
|
end
|
383
389
|
|
390
|
+
o.on("--[no-]debug-on-failure",
|
391
|
+
"Run debugger if available on failure",
|
392
|
+
"(#{AssertionFailedError.debug_on_failure?})") do |boolean|
|
393
|
+
AssertionFailedError.debug_on_failure = boolean
|
394
|
+
end
|
395
|
+
|
384
396
|
ADDITIONAL_OPTIONS.each do |option_builder|
|
385
397
|
option_builder.call(self, o)
|
386
398
|
end
|
@@ -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
@@ -131,12 +131,13 @@ module Test
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def include(*modules, &block) # :nodoc:
|
134
|
-
super
|
134
|
+
result = super
|
135
135
|
modules.each do |mod|
|
136
136
|
mod.public_instance_methods(false).each do |method_name|
|
137
137
|
AutoRunnerLoader.check(self, method_name.to_s)
|
138
138
|
end
|
139
139
|
end
|
140
|
+
result
|
140
141
|
end
|
141
142
|
|
142
143
|
@@added_method_names = {}
|
@@ -350,6 +351,36 @@ module Test
|
|
350
351
|
attribute(:description, value, {}, *targets)
|
351
352
|
end
|
352
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
|
+
|
353
384
|
# Defines a sub test case.
|
354
385
|
#
|
355
386
|
# This is a syntax sugar. The both of the following codes are
|
@@ -446,7 +477,7 @@ module Test
|
|
446
477
|
# @private
|
447
478
|
@@method_locations = {}
|
448
479
|
# @private
|
449
|
-
@@method_location_mutex = Mutex.new
|
480
|
+
@@method_location_mutex = Thread::Mutex.new
|
450
481
|
|
451
482
|
# @private
|
452
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.6
|
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-11 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
|