test-unit 3.4.4 → 3.4.8
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 +54 -1
- data/lib/test/unit/assertion-failed-error.rb +35 -0
- data/lib/test/unit/assertions.rb +93 -17
- 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 +34 -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
data/test/test-data.rb
DELETED
@@ -1,419 +0,0 @@
|
|
1
|
-
require "testunit-test-util"
|
2
|
-
|
3
|
-
class TestData < Test::Unit::TestCase
|
4
|
-
class Calc
|
5
|
-
def initialize
|
6
|
-
end
|
7
|
-
|
8
|
-
def plus(augend, addend)
|
9
|
-
augend + addend
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
class TestCalc < Test::Unit::TestCase
|
14
|
-
@@testing = false
|
15
|
-
|
16
|
-
class << self
|
17
|
-
def testing=(testing)
|
18
|
-
@@testing = testing
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def valid?
|
23
|
-
@@testing
|
24
|
-
end
|
25
|
-
|
26
|
-
def setup
|
27
|
-
@calc = Calc.new
|
28
|
-
end
|
29
|
-
|
30
|
-
class TestDataSet < TestCalc
|
31
|
-
data("positive positive" => {:expected => 4, :augend => 3, :addend => 1},
|
32
|
-
"positive negative" => {:expected => -1, :augend => 1, :addend => -2})
|
33
|
-
def test_plus(data)
|
34
|
-
assert_equal(data[:expected],
|
35
|
-
@calc.plus(data[:augend], data[:addend]))
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
class TestNData < TestCalc
|
40
|
-
data("positive positive", {:expected => 4, :augend => 3, :addend => 1})
|
41
|
-
data("positive negative", {:expected => -1, :augend => 1, :addend => -2})
|
42
|
-
def test_plus(data)
|
43
|
-
assert_equal(data[:expected],
|
44
|
-
@calc.plus(data[:augend], data[:addend]))
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
class TestDynamicDataSet < TestCalc
|
49
|
-
DATA_PROC = lambda do
|
50
|
-
data_set = {}
|
51
|
-
data_set["positive positive"] = {
|
52
|
-
:expected => 3,
|
53
|
-
:augend => 1,
|
54
|
-
:addend => 2
|
55
|
-
}
|
56
|
-
data_set["positive negative"] = {
|
57
|
-
:expected => -1,
|
58
|
-
:augend => 1,
|
59
|
-
:addend => -2
|
60
|
-
}
|
61
|
-
data_set
|
62
|
-
end
|
63
|
-
|
64
|
-
data(&DATA_PROC)
|
65
|
-
def test_plus(data)
|
66
|
-
assert_equal(data[:expected],
|
67
|
-
@calc.plus(data[:augend], data[:addend]))
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
class TestLoadDataSet < TestCalc
|
72
|
-
extend TestUnitTestUtil
|
73
|
-
load_data(fixture_file_path("plus.csv"))
|
74
|
-
def test_plus(data)
|
75
|
-
assert_equal(data["expected"],
|
76
|
-
@calc.plus(data["augend"], data["addend"]))
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
class TestSuperclass < TestCalc
|
81
|
-
data("positive positive" => {:expected => 4, :augend => 3, :addend => 1},
|
82
|
-
"positive negative" => {:expected => -1, :augend => 1, :addend => -2})
|
83
|
-
def test_plus(data)
|
84
|
-
assert_equal(data[:expected],
|
85
|
-
@calc.plus(data[:augend], data[:addend]))
|
86
|
-
end
|
87
|
-
|
88
|
-
class TestNormalTestInSubclass < self
|
89
|
-
def test_plus
|
90
|
-
assert_equal(2, @calc.plus(1, 1))
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
class TestMethod < TestCalc
|
96
|
-
def data_test_plus
|
97
|
-
{
|
98
|
-
"positive positive" => {:expected => 4, :augend => 3, :addend => 1},
|
99
|
-
"positive negative" => {:expected => -1, :augend => 1, :addend => -2},
|
100
|
-
}
|
101
|
-
end
|
102
|
-
|
103
|
-
def test_plus(data)
|
104
|
-
assert_equal(data[:expected],
|
105
|
-
@calc.plus(data[:augend], data[:addend]))
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
class TestPatterns < TestCalc
|
110
|
-
data(:x, [-1, 1, 0])
|
111
|
-
data(:y, [-100, 100])
|
112
|
-
data(:z, ["a", "b", "c"])
|
113
|
-
def test_use_data(data)
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
class TestPatternsKeep < TestCalc
|
118
|
-
data(:x, [-1, 1, 0], keep: true)
|
119
|
-
data(:y, [-100, 100])
|
120
|
-
data(:z, ["a", "b", "c"], keep: true)
|
121
|
-
def test_use_data(data)
|
122
|
-
end
|
123
|
-
|
124
|
-
def test_use_data_keep(data)
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
class TestPatternsGroup < TestCalc
|
129
|
-
data(:a, [-1, 1, 0], group: 1)
|
130
|
-
data(:b, [:a, :b], group: 1)
|
131
|
-
data(:x, [2, 9], group: :z)
|
132
|
-
data(:y, ["a", "b", "c"], group: :z)
|
133
|
-
def test_use_data(data)
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
def setup
|
139
|
-
TestCalc.testing = true
|
140
|
-
end
|
141
|
-
|
142
|
-
def teardown
|
143
|
-
TestCalc.testing = false
|
144
|
-
end
|
145
|
-
|
146
|
-
def test_data_no_arguments_without_block
|
147
|
-
assert_raise(ArgumentError) do
|
148
|
-
self.class.data
|
149
|
-
end
|
150
|
-
end
|
151
|
-
|
152
|
-
data("data set",
|
153
|
-
{
|
154
|
-
:test_case => TestCalc::TestDataSet,
|
155
|
-
:data_sets => [
|
156
|
-
{
|
157
|
-
"positive positive" => {
|
158
|
-
:expected => 4,
|
159
|
-
:augend => 3,
|
160
|
-
:addend => 1,
|
161
|
-
},
|
162
|
-
"positive negative" => {
|
163
|
-
:expected => -1,
|
164
|
-
:augend => 1,
|
165
|
-
:addend => -2,
|
166
|
-
},
|
167
|
-
},
|
168
|
-
],
|
169
|
-
})
|
170
|
-
data("n-data",
|
171
|
-
{
|
172
|
-
:test_case => TestCalc::TestNData,
|
173
|
-
:data_sets => [
|
174
|
-
{
|
175
|
-
"positive positive" => {
|
176
|
-
:expected => 4,
|
177
|
-
:augend => 3,
|
178
|
-
:addend => 1,
|
179
|
-
},
|
180
|
-
},
|
181
|
-
{
|
182
|
-
"positive negative" => {
|
183
|
-
:expected => -1,
|
184
|
-
:augend => 1,
|
185
|
-
:addend => -2,
|
186
|
-
},
|
187
|
-
},
|
188
|
-
],
|
189
|
-
})
|
190
|
-
data("dynamic-data-set",
|
191
|
-
{
|
192
|
-
:test_case => TestCalc::TestDynamicDataSet,
|
193
|
-
:data_sets => [TestCalc::TestDynamicDataSet::DATA_PROC],
|
194
|
-
})
|
195
|
-
data("load-data-set",
|
196
|
-
{
|
197
|
-
:test_case => TestCalc::TestLoadDataSet,
|
198
|
-
:data_sets => [
|
199
|
-
{
|
200
|
-
"positive positive" => {
|
201
|
-
"expected" => 4,
|
202
|
-
"augend" => 3,
|
203
|
-
"addend" => 1,
|
204
|
-
},
|
205
|
-
},
|
206
|
-
{
|
207
|
-
"positive negative" => {
|
208
|
-
"expected" => -1,
|
209
|
-
"augend" => 1,
|
210
|
-
"addend" => -2,
|
211
|
-
},
|
212
|
-
},
|
213
|
-
],
|
214
|
-
})
|
215
|
-
def test_data(data)
|
216
|
-
test_plus = data[:test_case].new("test_plus")
|
217
|
-
data_sets = Test::Unit::DataSets.new
|
218
|
-
data[:data_sets].each do |data_set|
|
219
|
-
data_sets.add(data_set)
|
220
|
-
end
|
221
|
-
assert_equal(data_sets, test_plus[:data])
|
222
|
-
end
|
223
|
-
|
224
|
-
def test_data_patterns
|
225
|
-
test = TestCalc::TestPatterns.new("test_use_data")
|
226
|
-
data_sets = Test::Unit::DataSets.new
|
227
|
-
data_sets << [:x, [-1, 1, 0]]
|
228
|
-
data_sets << [:y, [-100, 100]]
|
229
|
-
data_sets << [:z, ["a", "b", "c"]]
|
230
|
-
assert_equal(data_sets, test[:data])
|
231
|
-
end
|
232
|
-
|
233
|
-
def test_data_patterns_keep
|
234
|
-
test = TestCalc::TestPatternsKeep.new("test_use_data_keep")
|
235
|
-
data_sets = Test::Unit::DataSets.new
|
236
|
-
data_sets.add([:x, [-1, 1, 0]], {keep: true})
|
237
|
-
data_sets.add([:z, ["a", "b", "c"]], {keep: true})
|
238
|
-
assert_equal(data_sets, test[:data])
|
239
|
-
end
|
240
|
-
|
241
|
-
data("data set" => TestCalc::TestDataSet,
|
242
|
-
"n-data" => TestCalc::TestNData,
|
243
|
-
"dynamic-data-set" => TestCalc::TestDynamicDataSet,
|
244
|
-
"load-data-set" => TestCalc::TestLoadDataSet)
|
245
|
-
def test_suite(test_case)
|
246
|
-
suite = test_case.suite
|
247
|
-
assert_equal(["test_plus[positive negative](#{test_case.name})",
|
248
|
-
"test_plus[positive positive](#{test_case.name})"],
|
249
|
-
suite.tests.collect {|test| test.name}.sort)
|
250
|
-
end
|
251
|
-
|
252
|
-
def test_suite_patterns
|
253
|
-
test_case = TestCalc::TestPatterns
|
254
|
-
suite = test_case.suite
|
255
|
-
assert_equal([
|
256
|
-
"test_use_data[x: -1, y: -100, z: \"a\"](#{test_case.name})",
|
257
|
-
"test_use_data[x: -1, y: -100, z: \"b\"](#{test_case.name})",
|
258
|
-
"test_use_data[x: -1, y: -100, z: \"c\"](#{test_case.name})",
|
259
|
-
"test_use_data[x: -1, y: 100, z: \"a\"](#{test_case.name})",
|
260
|
-
"test_use_data[x: -1, y: 100, z: \"b\"](#{test_case.name})",
|
261
|
-
"test_use_data[x: -1, y: 100, z: \"c\"](#{test_case.name})",
|
262
|
-
"test_use_data[x: 0, y: -100, z: \"a\"](#{test_case.name})",
|
263
|
-
"test_use_data[x: 0, y: -100, z: \"b\"](#{test_case.name})",
|
264
|
-
"test_use_data[x: 0, y: -100, z: \"c\"](#{test_case.name})",
|
265
|
-
"test_use_data[x: 0, y: 100, z: \"a\"](#{test_case.name})",
|
266
|
-
"test_use_data[x: 0, y: 100, z: \"b\"](#{test_case.name})",
|
267
|
-
"test_use_data[x: 0, y: 100, z: \"c\"](#{test_case.name})",
|
268
|
-
"test_use_data[x: 1, y: -100, z: \"a\"](#{test_case.name})",
|
269
|
-
"test_use_data[x: 1, y: -100, z: \"b\"](#{test_case.name})",
|
270
|
-
"test_use_data[x: 1, y: -100, z: \"c\"](#{test_case.name})",
|
271
|
-
"test_use_data[x: 1, y: 100, z: \"a\"](#{test_case.name})",
|
272
|
-
"test_use_data[x: 1, y: 100, z: \"b\"](#{test_case.name})",
|
273
|
-
"test_use_data[x: 1, y: 100, z: \"c\"](#{test_case.name})",
|
274
|
-
],
|
275
|
-
suite.tests.collect {|test| test.name}.sort)
|
276
|
-
end
|
277
|
-
|
278
|
-
def test_suite_patterns_group
|
279
|
-
test_case = TestCalc::TestPatternsGroup
|
280
|
-
suite = test_case.suite
|
281
|
-
assert_equal([
|
282
|
-
"test_use_data[group: 1, a: -1, b: :a](#{test_case.name})",
|
283
|
-
"test_use_data[group: 1, a: -1, b: :b](#{test_case.name})",
|
284
|
-
"test_use_data[group: 1, a: 0, b: :a](#{test_case.name})",
|
285
|
-
"test_use_data[group: 1, a: 0, b: :b](#{test_case.name})",
|
286
|
-
"test_use_data[group: 1, a: 1, b: :a](#{test_case.name})",
|
287
|
-
"test_use_data[group: 1, a: 1, b: :b](#{test_case.name})",
|
288
|
-
"test_use_data[group: :z, x: 2, y: \"a\"](#{test_case.name})",
|
289
|
-
"test_use_data[group: :z, x: 2, y: \"b\"](#{test_case.name})",
|
290
|
-
"test_use_data[group: :z, x: 2, y: \"c\"](#{test_case.name})",
|
291
|
-
"test_use_data[group: :z, x: 9, y: \"a\"](#{test_case.name})",
|
292
|
-
"test_use_data[group: :z, x: 9, y: \"b\"](#{test_case.name})",
|
293
|
-
"test_use_data[group: :z, x: 9, y: \"c\"](#{test_case.name})",
|
294
|
-
],
|
295
|
-
suite.tests.collect {|test| test.name}.sort)
|
296
|
-
end
|
297
|
-
|
298
|
-
data("data set" => TestCalc::TestDataSet,
|
299
|
-
"n-data" => TestCalc::TestNData,
|
300
|
-
"dynamic-data-set" => TestCalc::TestDynamicDataSet,
|
301
|
-
"load-data-set" => TestCalc::TestLoadDataSet,
|
302
|
-
"superclass" => TestCalc::TestSuperclass,
|
303
|
-
"method" => TestCalc::TestMethod)
|
304
|
-
def test_run(test_case)
|
305
|
-
result = _run_test(test_case)
|
306
|
-
assert_equal("2 tests, 2 assertions, 0 failures, 0 errors, 0 pendings, " \
|
307
|
-
"0 omissions, 0 notifications", result.to_s)
|
308
|
-
end
|
309
|
-
|
310
|
-
def test_run_normal_test_in_subclass
|
311
|
-
result = _run_test(TestCalc::TestSuperclass::TestNormalTestInSubclass)
|
312
|
-
assert_equal("1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, " \
|
313
|
-
"0 omissions, 0 notifications", result.to_s)
|
314
|
-
end
|
315
|
-
|
316
|
-
data("data set" => TestCalc::TestDataSet,
|
317
|
-
"n-data" => TestCalc::TestNData,
|
318
|
-
"dynamic-data-set" => TestCalc::TestDynamicDataSet,
|
319
|
-
"load-data-set" => TestCalc::TestLoadDataSet)
|
320
|
-
def test_equal(test_case)
|
321
|
-
suite = test_case.suite
|
322
|
-
positive_positive_test = suite.tests.find do |test|
|
323
|
-
test.data_label == "positive positive"
|
324
|
-
end
|
325
|
-
suite.tests.delete(positive_positive_test)
|
326
|
-
assert_equal(["test_plus[positive negative](#{test_case.name})"],
|
327
|
-
suite.tests.collect {|test| test.name}.sort)
|
328
|
-
end
|
329
|
-
|
330
|
-
data("true" => {:expected => true, :target => "true"},
|
331
|
-
"false" => {:expected => false, :target => "false"},
|
332
|
-
"integer" => {:expected => 1, :target => "1"},
|
333
|
-
"float" => {:expected => 1.5, :target => "1.5"},
|
334
|
-
"string" => {:expected => "hello", :target => "hello"})
|
335
|
-
def test_normalize_value(data)
|
336
|
-
loader = Test::Unit::Data::ClassMethods::Loader.new(self)
|
337
|
-
assert_equal(data[:expected], loader.__send__(:normalize_value, data[:target]))
|
338
|
-
end
|
339
|
-
|
340
|
-
def _run_test(test_case)
|
341
|
-
result = Test::Unit::TestResult.new
|
342
|
-
test = test_case.suite
|
343
|
-
yield(test) if block_given?
|
344
|
-
test.run(result) {}
|
345
|
-
result
|
346
|
-
end
|
347
|
-
|
348
|
-
class TestLoadData < Test::Unit::TestCase
|
349
|
-
include TestUnitTestUtil
|
350
|
-
def test_invalid_csv_file_name
|
351
|
-
garbage = "X"
|
352
|
-
file_name = "data.csv#{garbage}"
|
353
|
-
assert_raise(ArgumentError, "unsupported file format: <#{file_name}>") do
|
354
|
-
self.class.load_data(file_name)
|
355
|
-
end
|
356
|
-
end
|
357
|
-
|
358
|
-
class TestFileFormat < self
|
359
|
-
def setup
|
360
|
-
self.class.current_attribute(:data).clear
|
361
|
-
end
|
362
|
-
|
363
|
-
class TestHeader < self
|
364
|
-
data("csv" => "header.csv",
|
365
|
-
"tsv" => "header.tsv")
|
366
|
-
def test_normal(file_name)
|
367
|
-
self.class.load_data(fixture_file_path(file_name))
|
368
|
-
data_sets = Test::Unit::DataSets.new
|
369
|
-
data_sets << {
|
370
|
-
"empty string" => {
|
371
|
-
"expected" => true,
|
372
|
-
"target" => ""
|
373
|
-
}
|
374
|
-
}
|
375
|
-
data_sets << {
|
376
|
-
"plain string" => {
|
377
|
-
"expected" => false,
|
378
|
-
"target" => "hello"
|
379
|
-
}
|
380
|
-
}
|
381
|
-
assert_equal(data_sets,
|
382
|
-
self.class.current_attribute(:data)[:value])
|
383
|
-
end
|
384
|
-
|
385
|
-
data("csv" => "header-label.csv",
|
386
|
-
"tsv" => "header-label.tsv")
|
387
|
-
def test_label(file_name)
|
388
|
-
self.class.load_data(fixture_file_path(file_name))
|
389
|
-
data_sets = Test::Unit::DataSets.new
|
390
|
-
data_sets << {
|
391
|
-
"upper case" => {
|
392
|
-
"expected" => "HELLO",
|
393
|
-
"label" => "HELLO"
|
394
|
-
}
|
395
|
-
}
|
396
|
-
data_sets << {
|
397
|
-
"lower case" => {
|
398
|
-
"expected" => "Hello",
|
399
|
-
"label" => "hello"
|
400
|
-
}
|
401
|
-
}
|
402
|
-
assert_equal(data_sets,
|
403
|
-
self.class.current_attribute(:data)[:value])
|
404
|
-
end
|
405
|
-
end
|
406
|
-
|
407
|
-
data("csv" => "no-header.csv",
|
408
|
-
"tsv" => "no-header.tsv")
|
409
|
-
def test_without_header(file_name)
|
410
|
-
self.class.load_data(fixture_file_path(file_name))
|
411
|
-
data_sets = Test::Unit::DataSets.new
|
412
|
-
data_sets << {"empty string" => [true, ""]}
|
413
|
-
data_sets << {"plain string" => [false, "hello"]}
|
414
|
-
assert_equal(data_sets,
|
415
|
-
self.class.current_attribute(:data)[:value])
|
416
|
-
end
|
417
|
-
end
|
418
|
-
end
|
419
|
-
end
|