test-unit 3.1.5 → 3.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +5 -5
  2. data/BSDL +24 -0
  3. data/COPYING +41 -41
  4. data/README.md +24 -17
  5. data/Rakefile +21 -24
  6. data/doc/text/getting-started.md +246 -0
  7. data/doc/text/news.md +797 -56
  8. data/lib/test/unit/assertion-failed-error.rb +35 -0
  9. data/lib/test/unit/assertions.rb +542 -220
  10. data/lib/test/unit/attribute.rb +78 -4
  11. data/lib/test/unit/auto-runner-loader.rb +17 -0
  12. data/lib/test/unit/autorunner.rb +175 -78
  13. data/lib/test/unit/code-snippet-fetcher.rb +7 -7
  14. data/lib/test/unit/collector/descendant.rb +1 -0
  15. data/lib/test/unit/collector/dir.rb +4 -2
  16. data/lib/test/unit/collector/load.rb +25 -15
  17. data/lib/test/unit/collector/objectspace.rb +1 -0
  18. data/lib/test/unit/collector.rb +31 -0
  19. data/lib/test/unit/color-scheme.rb +29 -2
  20. data/lib/test/unit/data-sets.rb +127 -0
  21. data/lib/test/unit/data.rb +121 -12
  22. data/lib/test/unit/diff.rb +10 -11
  23. data/lib/test/unit/fixture.rb +77 -27
  24. data/lib/test/unit/notification.rb +9 -7
  25. data/lib/test/unit/omission.rb +34 -31
  26. data/lib/test/unit/pending.rb +12 -11
  27. data/lib/test/unit/priority.rb +7 -5
  28. data/lib/test/unit/runner/console.rb +20 -1
  29. data/lib/test/unit/test-suite-creator.rb +30 -9
  30. data/lib/test/unit/testcase.rb +349 -196
  31. data/lib/test/unit/testresult.rb +7 -0
  32. data/lib/test/unit/testsuite.rb +1 -1
  33. data/lib/test/unit/ui/console/testrunner.rb +171 -60
  34. data/lib/test/unit/ui/emacs/testrunner.rb +5 -5
  35. data/lib/test/unit/ui/testrunnermediator.rb +9 -7
  36. data/lib/test/unit/util/backtracefilter.rb +17 -5
  37. data/lib/test/unit/util/memory-usage.rb +47 -0
  38. data/lib/test/unit/util/observable.rb +2 -2
  39. data/lib/test/unit/util/output.rb +5 -4
  40. data/lib/test/unit/util/procwrapper.rb +4 -4
  41. data/lib/test/unit/version.rb +1 -1
  42. data/lib/test/unit/warning.rb +3 -0
  43. data/lib/test/unit.rb +177 -161
  44. data/lib/test-unit.rb +2 -17
  45. metadata +20 -94
  46. data/GPL +0 -339
  47. data/LGPL +0 -502
  48. data/test/collector/test-descendant.rb +0 -178
  49. data/test/collector/test-load.rb +0 -442
  50. data/test/collector/test_dir.rb +0 -406
  51. data/test/collector/test_objectspace.rb +0 -100
  52. data/test/fixtures/header-label.csv +0 -3
  53. data/test/fixtures/header-label.tsv +0 -3
  54. data/test/fixtures/header.csv +0 -3
  55. data/test/fixtures/header.tsv +0 -3
  56. data/test/fixtures/no-header.csv +0 -2
  57. data/test/fixtures/no-header.tsv +0 -2
  58. data/test/fixtures/plus.csv +0 -3
  59. data/test/run-test.rb +0 -22
  60. data/test/test-assertions.rb +0 -2157
  61. data/test/test-attribute-matcher.rb +0 -38
  62. data/test/test-attribute.rb +0 -123
  63. data/test/test-code-snippet.rb +0 -37
  64. data/test/test-color-scheme.rb +0 -82
  65. data/test/test-color.rb +0 -47
  66. data/test/test-data.rb +0 -281
  67. data/test/test-diff.rb +0 -518
  68. data/test/test-emacs-runner.rb +0 -60
  69. data/test/test-error.rb +0 -26
  70. data/test/test-failure.rb +0 -33
  71. data/test/test-fault-location-detector.rb +0 -163
  72. data/test/test-fixture.rb +0 -659
  73. data/test/test-notification.rb +0 -33
  74. data/test/test-omission.rb +0 -81
  75. data/test/test-pending.rb +0 -70
  76. data/test/test-priority.rb +0 -173
  77. data/test/test-test-case.rb +0 -1171
  78. data/test/test-test-result.rb +0 -113
  79. data/test/test-test-suite-creator.rb +0 -97
  80. data/test/test-test-suite.rb +0 -150
  81. data/test/testunit-test-util.rb +0 -31
  82. data/test/ui/test_testrunmediator.rb +0 -20
  83. data/test/util/test-method-owner-finder.rb +0 -38
  84. data/test/util/test-output.rb +0 -11
  85. data/test/util/test_backtracefilter.rb +0 -41
  86. data/test/util/test_observable.rb +0 -102
  87. data/test/util/test_procwrapper.rb +0 -36
@@ -1,442 +0,0 @@
1
- require 'tmpdir'
2
- require 'pathname'
3
-
4
- require 'test/unit'
5
- require 'test/unit/collector/load'
6
-
7
- class TestUnitCollectorLoad < Test::Unit::TestCase
8
- def setup
9
- @previous_descendants = Test::Unit::TestCase::DESCENDANTS.dup
10
- Test::Unit::TestCase::DESCENDANTS.clear
11
-
12
- @temporary_test_cases_module_name = "TempTestCases"
13
- ::Object.const_set(@temporary_test_cases_module_name, Module.new)
14
-
15
- @test_dir = Pathname(Dir.tmpdir) + "test-unit"
16
- @extra_test_dir = Pathname(Dir.tmpdir) + "test-unit-extra"
17
- ensure_clean_directory(@test_dir)
18
- ensure_clean_directory(@extra_test_dir)
19
- end
20
-
21
- setup
22
- def setup_top_level_test_cases
23
- @test_case1 = @test_dir + "test_case1.rb"
24
- @test_case2 = @test_dir + "test_case2.rb"
25
- @no_load_test_case3 = @test_dir + "case3.rb"
26
-
27
- @test_case1.open("w") do |test_case|
28
- test_case.puts(<<-EOT)
29
- module #{@temporary_test_cases_module_name}
30
- class TestCase1 < Test::Unit::TestCase
31
- def test1_1
32
- end
33
-
34
- def test1_2
35
- end
36
- end
37
- end
38
- EOT
39
- end
40
-
41
- @test_case2.open("w") do |test_case|
42
- test_case.puts(<<-EOT)
43
- module #{@temporary_test_cases_module_name}
44
- class TestCase2 < Test::Unit::TestCase
45
- def test2
46
- end
47
- end
48
- end
49
- EOT
50
- end
51
-
52
- @no_load_test_case3.open("w") do |test_case|
53
- test_case.puts(<<-EOT)
54
- module #{@temporary_test_cases_module_name}
55
- class NoLoadTestCase3 < Test::Unit::TestCase
56
- def test3
57
- end
58
- end
59
- end
60
- EOT
61
- end
62
- end
63
-
64
- setup
65
- def setup_sub_level_test_cases
66
- @sub_test_dir = @test_dir + "sub"
67
- @sub_test_dir.mkpath
68
-
69
- @sub_test_case4 = @sub_test_dir + "test_case4.rb"
70
- @no_load_sub_test_case5 = @sub_test_dir + "case5.rb"
71
- @sub_test_case6 = @sub_test_dir + "test_case6.rb"
72
-
73
- @sub_test_case4.open("w") do |test_case|
74
- test_case.puts(<<-EOT)
75
- module #{@temporary_test_cases_module_name}
76
- class SubTestCase4 < Test::Unit::TestCase
77
- def test4_1
78
- end
79
-
80
- def test4_2
81
- end
82
- end
83
- end
84
- EOT
85
- end
86
-
87
- @no_load_sub_test_case5.open("w") do |test_case|
88
- test_case.puts(<<-EOT)
89
- module #{@temporary_test_cases_module_name}
90
- class NoLoadSubTestCase5 < Test::Unit::TestCase
91
- def test5_1
92
- end
93
-
94
- def test5_2
95
- end
96
- end
97
- end
98
- EOT
99
- end
100
-
101
- @sub_test_case6.open("w") do |test_case|
102
- test_case.puts(<<-EOT)
103
- module #{@temporary_test_cases_module_name}
104
- class SubTestCase6 < Test::Unit::TestCase
105
- def test6
106
- end
107
- end
108
- end
109
- EOT
110
- end
111
- end
112
-
113
- setup
114
- def setup_sub_level_test_cases2
115
- @sub2_test_dir = @test_dir + "sub2"
116
- @sub2_test_dir.mkpath
117
-
118
- @no_load_sub2_test_case7 = @sub2_test_dir + "case7.rb"
119
- @sub2_test_case8 = @sub2_test_dir + "test_case8.rb"
120
- @sub2_test_case9 = @sub2_test_dir + "test_case9.rb"
121
-
122
- @no_load_sub2_test_case7.open("w") do |test_case|
123
- test_case.puts(<<-EOT)
124
- module #{@temporary_test_cases_module_name}
125
- class NoLoadSub2TestCase7 < Test::Unit::TestCase
126
- def test7_1
127
- end
128
-
129
- def test7_2
130
- end
131
- end
132
- end
133
- EOT
134
- end
135
-
136
- @sub2_test_case8.open("w") do |test_case|
137
- test_case.puts(<<-EOT)
138
- module #{@temporary_test_cases_module_name}
139
- class Sub2TestCase8 < Test::Unit::TestCase
140
- def test8_1
141
- end
142
-
143
- def test8_2
144
- end
145
- end
146
- end
147
- EOT
148
- end
149
-
150
- @sub2_test_case9.open("w") do |test_case|
151
- test_case.puts(<<-EOT)
152
- module #{@temporary_test_cases_module_name}
153
- class Sub2TestCase9 < Test::Unit::TestCase
154
- def test9
155
- end
156
- end
157
- end
158
- EOT
159
- end
160
- end
161
-
162
- setup
163
- def setup_svn_test_cases
164
- @svn_test_dir = @test_dir + ".svn"
165
- @svn_test_dir.mkpath
166
-
167
- @svn_test_case10 = @svn_test_dir + "test_case10.rb"
168
-
169
- @svn_test_case10.open("w") do |test_case|
170
- test_case.puts(<<-EOT)
171
- module #{@temporary_test_cases_module_name}
172
- class SvnTestCase10 < Test::Unit::TestCase
173
- def test7
174
- end
175
- end
176
- end
177
- EOT
178
- end
179
- end
180
-
181
- setup
182
- def setup_sub_cvs_test_cases
183
- @sub_cvs_test_dir = @sub_test_dir + "CVS"
184
- @sub_cvs_test_dir.mkpath
185
-
186
- @sub_cvs_test_case11 = @sub_cvs_test_dir + "test_case11.rb"
187
-
188
- @sub_cvs_test_case11.open("w") do |test_case|
189
- test_case.puts(<<-EOT)
190
- module #{@temporary_test_cases_module_name}
191
- class SubCVSTestCase11 < Test::Unit::TestCase
192
- def test11
193
- end
194
- end
195
- end
196
- EOT
197
- end
198
- end
199
-
200
- setup
201
- def setup_sub_git_test_cases
202
- @sub_git_test_dir = @sub_test_dir + ".git"
203
- @sub_git_test_dir.mkpath
204
-
205
- @sub_git_test_case11 = @sub_git_test_dir + "test_case11.rb"
206
-
207
- @sub_git_test_case11.open("w") do |test_case|
208
- test_case.puts(<<-EOT)
209
- module #{@temporary_test_cases_module_name}
210
- class SubGitTestCase11 < Test::Unit::TestCase
211
- def test11
212
- end
213
- end
214
- end
215
- EOT
216
- end
217
- end
218
-
219
- setup
220
- def setup_extra_top_level_test_cases
221
- @test_cases12 = @extra_test_dir + "test_cases12.rb"
222
- @test_cases12.open("w") do |test_case|
223
- test_case.puts(<<-EOT)
224
- module #{@temporary_test_cases_module_name}
225
- class TestCase121 < Test::Unit::TestCase
226
- def test121_1
227
- end
228
-
229
- def test121_2
230
- end
231
- end
232
-
233
- class TestCase122 < Test::Unit::TestCase
234
- def test122_1
235
- end
236
-
237
- def test122_2
238
- end
239
- end
240
- end
241
- EOT
242
- end
243
- end
244
-
245
- setup
246
- def setup_sub_level_extra_test_cases
247
- @sub_extra_test_dir = @extra_test_dir + "sub"
248
- @sub_extra_test_dir.mkpath
249
-
250
- @cases13_test = @sub_extra_test_dir + "13cases_test.rb"
251
- @cases13_test.open("w") do |test_case|
252
- test_case.puts(<<-EOT)
253
- module #{@temporary_test_cases_module_name}
254
- class SubTestCase13 < Test::Unit::TestCase
255
- def test13_1
256
- end
257
-
258
- def test13_2
259
- end
260
- end
261
- end
262
- EOT
263
- end
264
- end
265
-
266
- def teardown
267
- @test_dir.rmtree if @test_dir.exist?
268
- ::Object.send(:remove_const, @temporary_test_cases_module_name)
269
- Test::Unit::TestCase::DESCENDANTS.replace(@previous_descendants)
270
- end
271
-
272
- def test_simple_collect
273
- assert_collect([:suite, {:name => @sub_test_dir.basename.to_s},
274
- [:suite, {:name => _test_case_name("SubTestCase4")},
275
- [:test, {:name => "test4_1"}],
276
- [:test, {:name => "test4_2"}]],
277
- [:suite, {:name => _test_case_name("SubTestCase6")},
278
- [:test, {:name => "test6"}]]],
279
- @sub_test_dir.to_s)
280
- end
281
-
282
- def test_simple_collect_test_suffix
283
- assert_collect([:suite, {:name => @extra_test_dir.basename.to_s},
284
- [:suite, {:name => _test_case_name("TestCase121")},
285
- [:test, {:name => "test121_1"}],
286
- [:test, {:name => "test121_2"}]],
287
- [:suite, {:name => _test_case_name("TestCase122")},
288
- [:test, {:name => "test122_1"}],
289
- [:test, {:name => "test122_2"}]],
290
- [:suite, {:name => @sub_extra_test_dir.basename.to_s},
291
- [:suite, {:name => _test_case_name("SubTestCase13")},
292
- [:test, {:name => "test13_1"}],
293
- [:test, {:name => "test13_2"}]]]],
294
- @extra_test_dir.to_s)
295
- end
296
-
297
- def test_multilevel_collect
298
- assert_collect([:suite, {:name => "."},
299
- [:suite, {:name => _test_case_name("TestCase1")},
300
- [:test, {:name => "test1_1"}],
301
- [:test, {:name => "test1_2"}]],
302
- [:suite, {:name => _test_case_name("TestCase2")},
303
- [:test, {:name => "test2"}]],
304
- [:suite, {:name => @sub_test_dir.basename.to_s},
305
- [:suite, {:name => _test_case_name("SubTestCase4")},
306
- [:test, {:name => "test4_1"}],
307
- [:test, {:name => "test4_2"}]],
308
- [:suite, {:name => _test_case_name("SubTestCase6")},
309
- [:test, {:name => "test6"}]]],
310
- [:suite, {:name => @sub2_test_dir.basename.to_s},
311
- [:suite, {:name => _test_case_name("Sub2TestCase8")},
312
- [:test, {:name => "test8_1"}],
313
- [:test, {:name => "test8_2"}]],
314
- [:suite, {:name => _test_case_name("Sub2TestCase9")},
315
- [:test, {:name => "test9"}]]]])
316
- end
317
-
318
- def test_collect_file
319
- assert_collect([:suite, {:name => _test_case_name("TestCase1")},
320
- [:test, {:name => "test1_1"}],
321
- [:test, {:name => "test1_2"}]],
322
- @test_case1.to_s)
323
- end
324
-
325
- def test_collect_file_no_pattern_match_file_name
326
- assert_collect([:suite, {:name => _test_case_name("NoLoadSubTestCase5")},
327
- [:test, {:name => "test5_1"}],
328
- [:test, {:name => "test5_2"}]],
329
- @no_load_sub_test_case5.to_s)
330
- end
331
-
332
- def test_collect_file_test_cases
333
- assert_collect([:suite, {:name => "[#{@test_cases12}]"},
334
- [:suite, {:name => _test_case_name("TestCase121")},
335
- [:test, {:name => "test121_1"}],
336
- [:test, {:name => "test121_2"}]],
337
- [:suite, {:name => _test_case_name("TestCase122")},
338
- [:test, {:name => "test122_1"}],
339
- [:test, {:name => "test122_2"}]]],
340
- @test_cases12.to_s)
341
- end
342
-
343
- def test_collect_files
344
- assert_collect([:suite,
345
- {:name => "[#{@test_case1}, #{@test_case2}]"},
346
- [:suite, {:name => _test_case_name("TestCase1")},
347
- [:test, {:name => "test1_1"}],
348
- [:test, {:name => "test1_2"}]],
349
- [:suite, {:name => _test_case_name("TestCase2")},
350
- [:test, {:name => "test2"}]]],
351
- @test_case1.to_s, @test_case2.to_s)
352
- end
353
-
354
- def test_nil_pattern
355
- assert_collect([:suite, {:name => @sub_test_dir.basename.to_s},
356
- [:suite, {:name => _test_case_name("NoLoadSubTestCase5")},
357
- [:test, {:name => "test5_1"}],
358
- [:test, {:name => "test5_2"}]],
359
- [:suite, {:name => _test_case_name("SubTestCase4")},
360
- [:test, {:name => "test4_1"}],
361
- [:test, {:name => "test4_2"}]],
362
- [:suite, {:name => _test_case_name("SubTestCase6")},
363
- [:test, {:name => "test6"}]]],
364
- @sub_test_dir.to_s) do |collector|
365
- collector.patterns.clear
366
- end
367
- end
368
-
369
- def test_filtering
370
- assert_collect([:suite, {:name => "."},
371
- [:suite, {:name => _test_case_name("TestCase1")},
372
- [:test, {:name => "test1_1"}],
373
- [:test, {:name => "test1_2"}]]]) do |collector|
374
- collector.filter = Proc.new do |test|
375
- !/\Atest1/.match(test.method_name).nil?
376
- end
377
- end
378
- end
379
-
380
- def test_collect_multi
381
- test_dirs = [@sub_test_dir.to_s, @sub2_test_dir.to_s]
382
- assert_collect([:suite, {:name => "[#{test_dirs.join(', ')}]"},
383
- [:suite, {:name => @sub_test_dir.basename.to_s},
384
- [:suite, {:name => _test_case_name("SubTestCase4")},
385
- [:test, {:name => "test4_1"}],
386
- [:test, {:name => "test4_2"}]],
387
- [:suite, {:name => _test_case_name("SubTestCase6")},
388
- [:test, {:name => "test6"}]]],
389
- [:suite, {:name => @sub2_test_dir.basename.to_s},
390
- [:suite, {:name => _test_case_name("Sub2TestCase8")},
391
- [:test, {:name => "test8_1"}],
392
- [:test, {:name => "test8_2"}]],
393
- [:suite, {:name => _test_case_name("Sub2TestCase9")},
394
- [:test, {:name => "test9"}]]]],
395
- *test_dirs)
396
- end
397
-
398
- private
399
- def assert_collect(expected, *collect_args)
400
- keep_required_files do
401
- Dir.chdir(@test_dir.to_s) do
402
- collector = Test::Unit::Collector::Load.new
403
- yield(collector) if block_given?
404
- actual = inspect_test_object(collector.send(:collect, *collect_args))
405
- assert_equal(expected, actual)
406
- end
407
- end
408
- end
409
-
410
- def ensure_clean_directory(directory)
411
- directory.rmtree if directory.exist?
412
- directory.mkpath
413
- end
414
-
415
- def keep_required_files
416
- required_files = $".dup
417
- yield
418
- ensure
419
- $".replace(required_files)
420
- end
421
-
422
- def _test_case_name(test_case_class_name)
423
- "#{@temporary_test_cases_module_name}::#{test_case_class_name}"
424
- end
425
-
426
- def inspect_test_object(test_object)
427
- return nil if test_object.nil?
428
- case test_object
429
- when Test::Unit::TestSuite
430
- sub_tests = test_object.tests.collect do |test|
431
- inspect_test_object(test)
432
- end.sort_by do |type, attributes, *children|
433
- attributes[:name]
434
- end
435
- [:suite, {:name => test_object.name}, *sub_tests]
436
- when Test::Unit::TestCase
437
- [:test, {:name => test_object.method_name}]
438
- else
439
- raise "unexpected test object: #{test_object.inspect}"
440
- end
441
- end
442
- end