test-unit 3.2.9 → 3.5.5

Sign up to get free protection for your applications and to get access to all the features.
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