test-unit 3.2.9 → 3.5.5

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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/BSDL +24 -0
  3. data/COPYING +41 -44
  4. data/README.md +18 -11
  5. data/Rakefile +0 -23
  6. data/doc/text/getting-started.md +2 -2
  7. data/doc/text/news.md +329 -1
  8. data/lib/test/unit/assertion-failed-error.rb +35 -0
  9. data/lib/test/unit/assertions.rb +453 -161
  10. data/lib/test/unit/attribute.rb +3 -1
  11. data/lib/test/unit/autorunner.rb +78 -30
  12. data/lib/test/unit/code-snippet-fetcher.rb +7 -7
  13. data/lib/test/unit/collector/descendant.rb +1 -0
  14. data/lib/test/unit/collector/dir.rb +4 -2
  15. data/lib/test/unit/collector/load.rb +3 -3
  16. data/lib/test/unit/collector/objectspace.rb +1 -0
  17. data/lib/test/unit/collector.rb +31 -0
  18. data/lib/test/unit/color-scheme.rb +20 -2
  19. data/lib/test/unit/data-sets.rb +26 -15
  20. data/lib/test/unit/data.rb +5 -5
  21. data/lib/test/unit/diff.rb +2 -3
  22. data/lib/test/unit/fixture.rb +6 -0
  23. data/lib/test/unit/notification.rb +9 -7
  24. data/lib/test/unit/omission.rb +34 -31
  25. data/lib/test/unit/pending.rb +12 -11
  26. data/lib/test/unit/priority.rb +7 -5
  27. data/lib/test/unit/runner/console.rb +0 -17
  28. data/lib/test/unit/testcase.rb +222 -146
  29. data/lib/test/unit/testsuite.rb +1 -1
  30. data/lib/test/unit/ui/console/testrunner.rb +58 -49
  31. data/lib/test/unit/util/memory-usage.rb +47 -0
  32. data/lib/test/unit/util/observable.rb +2 -2
  33. data/lib/test/unit/util/output.rb +5 -4
  34. data/lib/test/unit/version.rb +1 -1
  35. data/lib/test/unit/warning.rb +3 -0
  36. data/lib/test/unit.rb +177 -161
  37. data/lib/test-unit.rb +2 -17
  38. metadata +14 -91
  39. data/GPL +0 -339
  40. data/LGPL +0 -502
  41. data/test/collector/test-descendant.rb +0 -182
  42. data/test/collector/test-load.rb +0 -442
  43. data/test/collector/test_dir.rb +0 -407
  44. data/test/collector/test_objectspace.rb +0 -102
  45. data/test/fixtures/header-label.csv +0 -3
  46. data/test/fixtures/header-label.tsv +0 -3
  47. data/test/fixtures/header.csv +0 -3
  48. data/test/fixtures/header.tsv +0 -3
  49. data/test/fixtures/no-header.csv +0 -2
  50. data/test/fixtures/no-header.tsv +0 -2
  51. data/test/fixtures/plus.csv +0 -3
  52. data/test/run-test.rb +0 -22
  53. data/test/test-assertions.rb +0 -2180
  54. data/test/test-attribute-matcher.rb +0 -38
  55. data/test/test-attribute.rb +0 -123
  56. data/test/test-code-snippet.rb +0 -37
  57. data/test/test-color-scheme.rb +0 -82
  58. data/test/test-color.rb +0 -47
  59. data/test/test-data.rb +0 -419
  60. data/test/test-diff.rb +0 -518
  61. data/test/test-emacs-runner.rb +0 -60
  62. data/test/test-error.rb +0 -26
  63. data/test/test-failure.rb +0 -33
  64. data/test/test-fault-location-detector.rb +0 -163
  65. data/test/test-fixture.rb +0 -713
  66. data/test/test-notification.rb +0 -33
  67. data/test/test-omission.rb +0 -81
  68. data/test/test-pending.rb +0 -70
  69. data/test/test-priority.rb +0 -173
  70. data/test/test-test-case.rb +0 -1279
  71. data/test/test-test-result.rb +0 -113
  72. data/test/test-test-suite-creator.rb +0 -97
  73. data/test/test-test-suite.rb +0 -151
  74. data/test/testunit-test-util.rb +0 -31
  75. data/test/ui/test_testrunmediator.rb +0 -20
  76. data/test/util/test-method-owner-finder.rb +0 -38
  77. data/test/util/test-output.rb +0 -11
  78. data/test/util/test_backtracefilter.rb +0 -52
  79. data/test/util/test_observable.rb +0 -102
  80. 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