test-unit 1.2.3 → 2.0.0
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.
- data/History.txt +27 -0
- data/Manifest.txt +30 -8
- data/README.txt +9 -4
- data/Rakefile +16 -1
- data/bin/testrb +0 -0
- data/lib/test/unit/assertions.rb +148 -48
- data/lib/test/unit/attribute.rb +125 -0
- data/lib/test/unit/autorunner.rb +101 -71
- data/lib/test/unit/collector/descendant.rb +23 -0
- data/lib/test/unit/collector/dir.rb +1 -1
- data/lib/test/unit/collector/load.rb +135 -0
- data/lib/test/unit/color.rb +61 -0
- data/lib/test/unit/diff.rb +524 -0
- data/lib/test/unit/error.rb +70 -2
- data/lib/test/unit/exceptionhandler.rb +39 -0
- data/lib/test/unit/failure.rb +63 -4
- data/lib/test/unit/fixture.rb +185 -0
- data/lib/test/unit/notification.rb +125 -0
- data/lib/test/unit/omission.rb +143 -0
- data/lib/test/unit/pending.rb +146 -0
- data/lib/test/unit/priority.rb +146 -0
- data/lib/test/unit/runner/console.rb +46 -0
- data/lib/test/unit/runner/emacs.rb +8 -0
- data/lib/test/unit/testcase.rb +193 -76
- data/lib/test/unit/testresult.rb +37 -28
- data/lib/test/unit/testsuite.rb +35 -1
- data/lib/test/unit/ui/console/outputlevel.rb +14 -0
- data/lib/test/unit/ui/console/testrunner.rb +96 -28
- data/lib/test/unit/ui/emacs/testrunner.rb +49 -0
- data/lib/test/unit/ui/testrunner.rb +20 -0
- data/lib/test/unit/ui/testrunnermediator.rb +28 -19
- data/lib/test/unit/ui/testrunnerutilities.rb +2 -7
- data/lib/test/unit/util/backtracefilter.rb +2 -1
- data/lib/test/unit/version.rb +1 -1
- data/test/collector/test_descendant.rb +135 -0
- data/test/collector/test_load.rb +333 -0
- data/test/run-test.rb +13 -0
- data/test/test_assertions.rb +221 -56
- data/test/test_attribute.rb +86 -0
- data/test/test_color.rb +37 -0
- data/test/test_diff.rb +477 -0
- data/test/test_emacs_runner.rb +60 -0
- data/test/test_fixture.rb +275 -0
- data/test/test_notification.rb +33 -0
- data/test/test_omission.rb +81 -0
- data/test/test_pending.rb +70 -0
- data/test/test_priority.rb +89 -0
- data/test/test_testcase.rb +160 -5
- data/test/test_testresult.rb +61 -52
- data/test/testunit_test_util.rb +14 -0
- data/test/ui/test_testrunmediator.rb +20 -0
- metadata +53 -23
- data/lib/test/unit/ui/fox/testrunner.rb +0 -268
- data/lib/test/unit/ui/gtk/testrunner.rb +0 -416
- data/lib/test/unit/ui/gtk2/testrunner.rb +0 -465
- data/lib/test/unit/ui/tk/testrunner.rb +0 -260
- data/test/runit/test_assert.rb +0 -402
- data/test/runit/test_testcase.rb +0 -91
- data/test/runit/test_testresult.rb +0 -144
- data/test/runit/test_testsuite.rb +0 -49
data/test/run-test.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$VERBOSE = true
|
4
|
+
|
5
|
+
base_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
6
|
+
lib_dir = File.join(base_dir, "lib")
|
7
|
+
test_dir = File.join(base_dir, "test")
|
8
|
+
|
9
|
+
$LOAD_PATH.unshift(lib_dir)
|
10
|
+
|
11
|
+
require 'test/unit'
|
12
|
+
|
13
|
+
exit Test::Unit::AutoRunner.run(true, test_dir)
|
data/test/test_assertions.rb
CHANGED
@@ -9,12 +9,11 @@ module Test
|
|
9
9
|
class TC_Assertions < TestCase
|
10
10
|
def check(value, message="")
|
11
11
|
add_assertion
|
12
|
-
|
13
|
-
raise AssertionFailedError.new(message)
|
14
|
-
end
|
12
|
+
raise AssertionFailedError.new(message) unless value
|
15
13
|
end
|
16
14
|
|
17
|
-
def check_assertions(expect_fail, expected_message="",
|
15
|
+
def check_assertions(expect_fail, expected_message="",
|
16
|
+
return_value_expected=false)
|
18
17
|
@actual_assertion_count = 0
|
19
18
|
failed = true
|
20
19
|
actual_message = nil
|
@@ -27,35 +26,65 @@ module Test
|
|
27
26
|
actual_message = error.message
|
28
27
|
end
|
29
28
|
@catch_assertions = false
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
|
30
|
+
if expect_fail
|
31
|
+
message = "Should have failed, but didn't"
|
32
|
+
else
|
33
|
+
message = "Should not have failed, but did with message\n" +
|
34
|
+
"<#{actual_message}>"
|
35
|
+
end
|
36
|
+
check(expect_fail == failed, message)
|
37
|
+
|
38
|
+
message = "Should have made one assertion but made\n" +
|
39
|
+
"<#{@actual_assertion_count}>"
|
40
|
+
check(1 == @actual_assertion_count, message)
|
41
|
+
|
42
|
+
if expect_fail
|
33
43
|
case expected_message
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
44
|
+
when String
|
45
|
+
check(actual_message == expected_message,
|
46
|
+
"Should have the correct message.\n" +
|
47
|
+
"<#{expected_message.inspect}> expected but was\n" +
|
48
|
+
"<#{actual_message.inspect}>")
|
49
|
+
when Regexp
|
50
|
+
check(actual_message =~ expected_message,
|
51
|
+
"The message should match correctly.\n" +
|
52
|
+
"</#{expected_message.source}/> expected to match\n" +
|
53
|
+
"<#{actual_message.inspect}>")
|
54
|
+
else
|
55
|
+
check(false,
|
56
|
+
"Incorrect expected message type in assert_nothing_failed")
|
40
57
|
end
|
41
58
|
else
|
42
|
-
if
|
43
|
-
check(return_value.nil?, "Should not return a value but returned <#{return_value}>")
|
44
|
-
else
|
59
|
+
if return_value_expected
|
45
60
|
check(!return_value.nil?, "Should return a value")
|
61
|
+
else
|
62
|
+
check(return_value.nil?,
|
63
|
+
"Should not return a value but returned <#{return_value}>")
|
46
64
|
end
|
47
65
|
end
|
48
|
-
|
66
|
+
|
67
|
+
return_value
|
49
68
|
end
|
50
|
-
|
69
|
+
|
51
70
|
def check_nothing_fails(return_value_expected=false, &proc)
|
52
71
|
check_assertions(false, "", return_value_expected, &proc)
|
53
72
|
end
|
54
|
-
|
73
|
+
|
55
74
|
def check_fails(expected_message="", &proc)
|
56
75
|
check_assertions(true, expected_message, &proc)
|
57
76
|
end
|
58
|
-
|
77
|
+
|
78
|
+
def inspect_tag(tag)
|
79
|
+
begin
|
80
|
+
throw tag
|
81
|
+
rescue NameError
|
82
|
+
tag.to_s.inspect
|
83
|
+
rescue ArgumentError
|
84
|
+
tag.inspect
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
59
88
|
def test_assert_block
|
60
89
|
check_nothing_fails {
|
61
90
|
assert_block {true}
|
@@ -93,17 +122,87 @@ module Test
|
|
93
122
|
check_nothing_fails {
|
94
123
|
assert_equal("string1", "string1", "successful assert_equal")
|
95
124
|
}
|
96
|
-
|
125
|
+
|
126
|
+
message = <<-EOM.chomp
|
127
|
+
<"string1"> expected but was
|
128
|
+
<"string2">.
|
129
|
+
|
130
|
+
diff:
|
131
|
+
- string1
|
132
|
+
? ^
|
133
|
+
+ string2
|
134
|
+
? ^
|
135
|
+
EOM
|
136
|
+
check_fails(message) {
|
97
137
|
assert_equal("string1", "string2")
|
98
138
|
}
|
99
|
-
|
139
|
+
|
140
|
+
message = <<-EOM.chomp
|
141
|
+
failed assert_equal.
|
142
|
+
<"string1"> expected but was
|
143
|
+
<"string2">.
|
144
|
+
|
145
|
+
diff:
|
146
|
+
- string1
|
147
|
+
? ^
|
148
|
+
+ string2
|
149
|
+
? ^
|
150
|
+
EOM
|
151
|
+
check_fails(message) {
|
100
152
|
assert_equal("string1", "string2", "failed assert_equal")
|
101
153
|
}
|
102
|
-
|
103
|
-
|
154
|
+
|
155
|
+
message = <<-EOM.chomp
|
156
|
+
<"111111"> expected but was
|
157
|
+
<111111>.
|
158
|
+
|
159
|
+
diff:
|
160
|
+
- "111111"
|
161
|
+
? - -
|
162
|
+
+ 111111
|
163
|
+
EOM
|
164
|
+
check_fails(message) do
|
165
|
+
assert_equal("111111", 111111)
|
104
166
|
end
|
105
167
|
end
|
106
|
-
|
168
|
+
|
169
|
+
def test_assert_equal_for_too_small_difference
|
170
|
+
message = <<-EOM.chomp
|
171
|
+
<1> expected but was
|
172
|
+
<2>.
|
173
|
+
EOM
|
174
|
+
check_fails(message) do
|
175
|
+
assert_equal(1, 2)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_assert_equal_for_same_inspected_objects
|
180
|
+
now = Time.now
|
181
|
+
now_without_usec = Time.at(now.to_i)
|
182
|
+
message = <<-EOM.chomp
|
183
|
+
<#{now.inspect}> expected but was
|
184
|
+
<#{now.inspect}>.
|
185
|
+
EOM
|
186
|
+
check_fails(message) do
|
187
|
+
assert_equal(now, now_without_usec)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_assert_equal_with_multi_lines_result
|
192
|
+
message = <<-EOM.chomp
|
193
|
+
<#{"a\nb".inspect}> expected but was
|
194
|
+
<#{"x".inspect}>.
|
195
|
+
|
196
|
+
diff:
|
197
|
+
+ x
|
198
|
+
- a
|
199
|
+
- b
|
200
|
+
EOM
|
201
|
+
check_fails(message) do
|
202
|
+
assert_equal("a\nb", "x")
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
107
206
|
def test_assert_raise
|
108
207
|
return_value = nil
|
109
208
|
check_nothing_fails(true) {
|
@@ -211,10 +310,10 @@ Message: <"Error">
|
|
211
310
|
check_nothing_fails {
|
212
311
|
assert_nil(nil, "successful assert_nil")
|
213
312
|
}
|
214
|
-
check_fails(%Q{<
|
313
|
+
check_fails(%Q{<"string"> expected to be nil.}) {
|
215
314
|
assert_nil("string")
|
216
315
|
}
|
217
|
-
check_fails(%Q{failed assert_nil.\n<
|
316
|
+
check_fails(%Q{failed assert_nil.\n<"string"> expected to be nil.}) {
|
218
317
|
assert_nil("string", "failed assert_nil")
|
219
318
|
}
|
220
319
|
end
|
@@ -398,34 +497,43 @@ Message: <"Error">
|
|
398
497
|
end
|
399
498
|
|
400
499
|
def test_assert_throws
|
401
|
-
check_nothing_fails
|
402
|
-
assert_throws(:thing, "message")
|
500
|
+
check_nothing_fails do
|
501
|
+
assert_throws(:thing, "message") do
|
403
502
|
throw :thing
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
503
|
+
end
|
504
|
+
end
|
505
|
+
|
506
|
+
tag = :thing2
|
507
|
+
check_fails("message.\n" +
|
508
|
+
"<:thing> expected to be thrown but\n" +
|
509
|
+
"<#{inspect_tag(tag)}> was thrown.") do
|
510
|
+
assert_throws(:thing, "message") do
|
408
511
|
throw :thing2
|
409
|
-
|
410
|
-
|
411
|
-
check_fails("message.\n
|
412
|
-
|
512
|
+
end
|
513
|
+
end
|
514
|
+
check_fails("message.\n" +
|
515
|
+
"<:thing> should have been thrown.") do
|
516
|
+
assert_throws(:thing, "message") do
|
413
517
|
1 + 1
|
414
|
-
|
415
|
-
|
518
|
+
end
|
519
|
+
end
|
416
520
|
end
|
417
521
|
|
418
522
|
def test_assert_nothing_thrown
|
419
|
-
check_nothing_fails
|
420
|
-
assert_nothing_thrown("message")
|
523
|
+
check_nothing_fails do
|
524
|
+
assert_nothing_thrown("message") do
|
421
525
|
1 + 1
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
526
|
+
end
|
527
|
+
end
|
528
|
+
|
529
|
+
tag = :thing
|
530
|
+
inspected = inspect_tag(tag)
|
531
|
+
check_fails("message.\n" +
|
532
|
+
"<#{inspected}> was thrown when nothing was expected.") do
|
533
|
+
assert_nothing_thrown("message") do
|
534
|
+
throw tag
|
535
|
+
end
|
536
|
+
end
|
429
537
|
end
|
430
538
|
|
431
539
|
def test_assert_operator
|
@@ -505,22 +613,79 @@ Message: <"Error">
|
|
505
613
|
@changed ||= false
|
506
614
|
return (!@changed)
|
507
615
|
end
|
508
|
-
check_nothing_fails
|
616
|
+
check_nothing_fails do
|
509
617
|
assert_equal(object, object, "message")
|
510
|
-
|
618
|
+
end
|
619
|
+
end
|
620
|
+
|
621
|
+
def test_assert_boolean
|
622
|
+
check_nothing_fails do
|
623
|
+
assert_boolean(true)
|
624
|
+
end
|
625
|
+
check_nothing_fails do
|
626
|
+
assert_boolean(false)
|
627
|
+
end
|
628
|
+
|
629
|
+
check_fails("<true> or <false> expected but was\n<1>") do
|
630
|
+
assert_boolean(1)
|
631
|
+
end
|
632
|
+
|
633
|
+
check_fails("<true> or <false> expected but was\n<nil>") do
|
634
|
+
assert_boolean(nil)
|
635
|
+
end
|
636
|
+
|
637
|
+
check_fails("message.\n<true> or <false> expected but was\n<\"XXX\">") do
|
638
|
+
assert_boolean("XXX", "message")
|
639
|
+
end
|
511
640
|
end
|
512
|
-
|
641
|
+
|
642
|
+
def test_assert_true
|
643
|
+
check_nothing_fails do
|
644
|
+
assert_true(true)
|
645
|
+
end
|
646
|
+
|
647
|
+
check_fails("<true> expected but was\n<false>") do
|
648
|
+
assert_true(false)
|
649
|
+
end
|
650
|
+
|
651
|
+
check_fails("<true> expected but was\n<1>") do
|
652
|
+
assert_true(1)
|
653
|
+
end
|
654
|
+
|
655
|
+
check_fails("message.\n<true> expected but was\n<nil>") do
|
656
|
+
assert_true(nil, "message")
|
657
|
+
end
|
658
|
+
end
|
659
|
+
|
660
|
+
def test_assert_false
|
661
|
+
check_nothing_fails do
|
662
|
+
assert_false(false)
|
663
|
+
end
|
664
|
+
|
665
|
+
check_fails("<false> expected but was\n<true>") do
|
666
|
+
assert_false(true)
|
667
|
+
end
|
668
|
+
|
669
|
+
check_fails("<false> expected but was\n<nil>") do
|
670
|
+
assert_false(nil)
|
671
|
+
end
|
672
|
+
|
673
|
+
check_fails("message.\n<false> expected but was\n<:false>") do
|
674
|
+
assert_false(:false, "message")
|
675
|
+
end
|
676
|
+
end
|
677
|
+
|
513
678
|
def add_failure(message, location=caller)
|
514
|
-
|
679
|
+
unless @catch_assertions
|
515
680
|
super
|
516
681
|
end
|
517
682
|
end
|
518
|
-
|
683
|
+
|
519
684
|
def add_assertion
|
520
|
-
if
|
521
|
-
super
|
522
|
-
else
|
685
|
+
if @catch_assertions
|
523
686
|
@actual_assertion_count += 1
|
687
|
+
else
|
688
|
+
super
|
524
689
|
end
|
525
690
|
end
|
526
691
|
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
class TestUnitAttribute < Test::Unit::TestCase
|
2
|
+
class TestStack < Test::Unit::TestCase
|
3
|
+
class << self
|
4
|
+
def suite
|
5
|
+
Test::Unit::TestSuite.new(name)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class Stack
|
10
|
+
def initialize
|
11
|
+
@data = []
|
12
|
+
end
|
13
|
+
|
14
|
+
def push(data)
|
15
|
+
@data.push(data)
|
16
|
+
end
|
17
|
+
|
18
|
+
def peek
|
19
|
+
@data[-2]
|
20
|
+
end
|
21
|
+
|
22
|
+
def empty?
|
23
|
+
@data.empty?
|
24
|
+
end
|
25
|
+
|
26
|
+
def size
|
27
|
+
@data.size + 11
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def setup
|
32
|
+
@stack = Stack.new
|
33
|
+
end
|
34
|
+
|
35
|
+
attribute :category, :accessor
|
36
|
+
def test_peek
|
37
|
+
@stack.push(1)
|
38
|
+
@stack.push(2)
|
39
|
+
assert_equal(2, @stack.peek)
|
40
|
+
end
|
41
|
+
|
42
|
+
attribute :bug, 1234
|
43
|
+
def test_bug_1234
|
44
|
+
assert_equal(0, @stack.size)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_no_attributes
|
48
|
+
assert(@stack.empty?)
|
49
|
+
@stack.push(1)
|
50
|
+
assert(!@stack.empty?)
|
51
|
+
assert_equal(1, @stack.size)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_set_attributes
|
56
|
+
test_for_accessor_category = TestStack.new("test_peek")
|
57
|
+
assert_equal({"category" => :accessor},
|
58
|
+
test_for_accessor_category.attributes)
|
59
|
+
|
60
|
+
test_for_bug_1234 = TestStack.new("test_bug_1234")
|
61
|
+
assert_equal({"bug" => 1234}, test_for_bug_1234.attributes)
|
62
|
+
|
63
|
+
test_no_attributes = TestStack.new("test_no_attributes")
|
64
|
+
assert_equal({}, test_no_attributes.attributes)
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_callback
|
68
|
+
changed_attributes = []
|
69
|
+
observer = Proc.new do |test_case, key, old_value, value, method_name|
|
70
|
+
changed_attributes << [test_case, key, old_value, value, method_name]
|
71
|
+
end
|
72
|
+
|
73
|
+
test_case = Class.new(TestStack) do
|
74
|
+
register_attribute_observer(:bug, &observer)
|
75
|
+
attribute("bug", 9876, "test_bug_1234")
|
76
|
+
attribute(:description, "Test for peek", "test_peek")
|
77
|
+
attribute(:bug, 29, "test_peek")
|
78
|
+
end
|
79
|
+
|
80
|
+
assert_equal([
|
81
|
+
[test_case, "bug", 1234, 9876, "test_bug_1234"],
|
82
|
+
[test_case, "bug", nil, 29, "test_peek"],
|
83
|
+
],
|
84
|
+
changed_attributes)
|
85
|
+
end
|
86
|
+
end
|