test-unit 3.0.3 → 3.0.4
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/doc/text/news.md +14 -0
- data/lib/test/unit/assertions.rb +4 -3
- data/lib/test/unit/util/backtracefilter.rb +4 -16
- data/lib/test/unit/version.rb +1 -1
- data/test/test-assertions.rb +3 -3
- data/test/test-test-case.rb +153 -76
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf2bacf30a66a56af147ea9e94da6e0494a2651d
|
4
|
+
data.tar.gz: dc496f0ff48c039ce45d31d9b0aeda8c8fe3207c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea2f7f667dbc1ebb99e234c2634f2b8ed4651d1d56704a5ab800d4f0fd285d97309a4ed4920020ef37cdc4eb8316c114d75045e33ba20652ee04e4d565ae519b
|
7
|
+
data.tar.gz: c8301808c3e979ee04682074550643a7b0ae214bba5eb60f4c9808be7d86ff2faa7eaded9829e47e9f841fd76257d37bdb1b294163faad401bc9150fe4c1a671
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 3.0.4 - 2014-11-01 {#version-3-0-4}
|
4
|
+
|
5
|
+
It's a minor update release.
|
6
|
+
|
7
|
+
### Improvements
|
8
|
+
|
9
|
+
* Stopped to remove JRuby and Rubinius internal backtrace entries from
|
10
|
+
backtrace on failure/error.
|
11
|
+
[GitHub#82][Patch by Charles Oliver Nutter]
|
12
|
+
|
13
|
+
### Thanks
|
14
|
+
|
15
|
+
* Charles Oliver Nutter
|
16
|
+
|
3
17
|
## 3.0.3 - 2014-10-29 {#version-3-0-3}
|
4
18
|
|
5
19
|
It's a minor update release.
|
data/lib/test/unit/assertions.rb
CHANGED
@@ -525,7 +525,7 @@ EOT
|
|
525
525
|
alias_method :refute_respond_to, :assert_not_respond_to
|
526
526
|
|
527
527
|
##
|
528
|
-
# Passes if +
|
528
|
+
# Passes if +pattern+ =~ +string+.
|
529
529
|
#
|
530
530
|
# @example
|
531
531
|
# assert_match(/\d+/, 'five, 6, seven')
|
@@ -537,8 +537,9 @@ EOT
|
|
537
537
|
else
|
538
538
|
pattern
|
539
539
|
end
|
540
|
-
full_message = build_message(message, "<?> expected to be =~\n<?>.",
|
541
|
-
|
540
|
+
full_message = build_message(message, "<?> expected to be =~\n<?>.",
|
541
|
+
pattern, string)
|
542
|
+
assert_block(full_message) { pattern =~ string }
|
542
543
|
end
|
543
544
|
end
|
544
545
|
|
@@ -23,31 +23,19 @@ module Test
|
|
23
23
|
split_entry[-1].sub(TESTUNIT_RB_FILE, '') == split_prefix[-1]
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
entry.start_with?("org/jruby/")
|
28
|
-
end
|
29
|
-
|
30
|
-
rubinius_internal_p = lambda do |entry|
|
31
|
-
entry.start_with?("kernel/")
|
32
|
-
end
|
33
|
-
|
34
|
-
found_prefix = false
|
26
|
+
in_user_code = false
|
35
27
|
new_backtrace = backtrace.reverse.reject do |entry|
|
36
28
|
if test_unit_internal_p.call(entry)
|
37
|
-
|
29
|
+
in_user_code = true
|
38
30
|
true
|
39
|
-
elsif found_prefix
|
40
|
-
jruby_internal_p.call(entry) or rubinius_internal_p.call(entry)
|
41
31
|
else
|
42
|
-
|
32
|
+
not in_user_code
|
43
33
|
end
|
44
34
|
end.reverse
|
45
35
|
|
46
36
|
if new_backtrace.empty?
|
47
37
|
new_backtrace = backtrace.reject do |entry|
|
48
|
-
test_unit_internal_p.call(entry)
|
49
|
-
jruby_internal_p.call(entry) or
|
50
|
-
rubinius_internal_p.call(entry)
|
38
|
+
test_unit_internal_p.call(entry)
|
51
39
|
end
|
52
40
|
new_backtrace = backtrace if new_backtrace.empty?
|
53
41
|
end
|
data/lib/test/unit/version.rb
CHANGED
data/test/test-assertions.rb
CHANGED
@@ -772,13 +772,13 @@ EOM
|
|
772
772
|
check_nothing_fails {
|
773
773
|
assert_match(/strin./, "string", "successful assert_match")
|
774
774
|
}
|
775
|
-
check_fail(%Q{
|
775
|
+
check_fail(%Q{</slin./> expected to be =~\n<"string">.}) {
|
776
776
|
assert_match(/slin./, "string")
|
777
777
|
}
|
778
|
-
check_fail(%Q{
|
778
|
+
check_fail(%Q{</strin\\./> expected to be =~\n<"string">.}) {
|
779
779
|
assert_match("strin.", "string")
|
780
780
|
}
|
781
|
-
check_fail(%Q{failed assert_match.\n
|
781
|
+
check_fail(%Q{failed assert_match.\n</slin./> expected to be =~\n<"string">.}) {
|
782
782
|
assert_match(/slin./, "string", "failed assert_match")
|
783
783
|
}
|
784
784
|
end
|
data/test/test-test-case.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Author:: Nathaniel Talbott.
|
2
|
-
# Copyright:: Copyright (c) 2008-
|
2
|
+
# Copyright:: Copyright (c) 2008-2014 Kouhei Sutou <kou@clear-code.com>
|
3
3
|
# Copyright:: Copyright (c) 2011 Haruka Yoshihara <yoshihara@clear-code.com>
|
4
4
|
# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott
|
5
5
|
# License:: Ruby license.
|
@@ -28,7 +28,9 @@ module Test
|
|
28
28
|
def setup
|
29
29
|
@tc_failure_error = Class.new(TestCase) do
|
30
30
|
def test_failure
|
31
|
-
assert_block("failure")
|
31
|
+
assert_block("failure") do
|
32
|
+
false
|
33
|
+
end
|
32
34
|
end
|
33
35
|
def test_error
|
34
36
|
1 / 0
|
@@ -37,7 +39,9 @@ module Test
|
|
37
39
|
nested
|
38
40
|
end
|
39
41
|
def nested
|
40
|
-
assert_block("nested")
|
42
|
+
assert_block("nested") do
|
43
|
+
false
|
44
|
+
end
|
41
45
|
end
|
42
46
|
def return_passed?
|
43
47
|
return passed?
|
@@ -49,82 +53,157 @@ module Test
|
|
49
53
|
end
|
50
54
|
end
|
51
55
|
|
56
|
+
def jruby_backtrace_entry?(entry)
|
57
|
+
entry.start_with?("org/jruby/")
|
58
|
+
end
|
59
|
+
|
60
|
+
def rubinius_backtrace_entry?(entry)
|
61
|
+
entry.start_with?("kernel/")
|
62
|
+
end
|
63
|
+
|
64
|
+
def normalize_location(location)
|
65
|
+
filtered_location = location.reject do |entry|
|
66
|
+
jruby_backtrace_entry?(entry) or
|
67
|
+
rubinius_backtrace_entry?(entry)
|
68
|
+
end
|
69
|
+
filtered_location.collect do |entry|
|
70
|
+
entry.sub(/:\d+:/, ":0:")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
52
74
|
def test_add_failed_assertion
|
53
75
|
test_case = @tc_failure_error.new(:test_failure)
|
54
|
-
|
76
|
+
assert do
|
77
|
+
test_case.passed?
|
78
|
+
end
|
79
|
+
|
55
80
|
result = TestResult.new
|
56
|
-
|
57
|
-
result.add_listener(TestResult::FAULT)
|
58
|
-
|
59
|
-
|
60
|
-
check("The Failure should have the correct message", "failure" == fault.message)
|
61
|
-
check("The Failure should have the correct test_name (was <#{fault.test_name}>)", fault.test_name == "test_failure(TC_FailureError)")
|
62
|
-
r = /\A.*#{Regexp.escape(File.basename(__FILE__))}:\d+:in `test_failure'\Z/
|
63
|
-
|
64
|
-
location = fault.location
|
65
|
-
check("The location should be an array", location.kind_of?(Array))
|
66
|
-
check("The location should have two lines (was: <#{location.inspect}>)", location.size == 2)
|
67
|
-
check("The Failure should have the correct location (was <#{location[0].inspect}>, expected <#{r.inspect}>)", r =~ location[0])
|
68
|
-
called = true
|
69
|
-
}
|
81
|
+
faults = []
|
82
|
+
result.add_listener(TestResult::FAULT) do |fault|
|
83
|
+
faults << fault
|
84
|
+
end
|
70
85
|
progress = []
|
71
|
-
test_case.run(result)
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
86
|
+
test_case.run(result) do |*arguments|
|
87
|
+
progress << arguments
|
88
|
+
end
|
89
|
+
fault_details = faults.collect do |fault|
|
90
|
+
{
|
91
|
+
:class => fault.class,
|
92
|
+
:message => fault.message,
|
93
|
+
:test_name => fault.test_name,
|
94
|
+
:location => normalize_location(fault.location),
|
95
|
+
}
|
96
|
+
end
|
97
|
+
assert_equal([
|
98
|
+
{
|
99
|
+
:class => Failure,
|
100
|
+
:message => "failure",
|
101
|
+
:test_name => "test_failure(TC_FailureError)",
|
102
|
+
:location => [
|
103
|
+
"#{__FILE__}:0:in `test_failure'",
|
104
|
+
"#{__FILE__}:0:in `#{__method__}'",
|
105
|
+
],
|
106
|
+
},
|
107
|
+
],
|
108
|
+
fault_details)
|
109
|
+
|
110
|
+
assert do
|
111
|
+
not test_case.passed?
|
112
|
+
end
|
113
|
+
assert_equal([
|
114
|
+
[TestCase::STARTED, test_case.name],
|
115
|
+
[TestCase::STARTED_OBJECT, test_case],
|
116
|
+
[TestCase::FINISHED, test_case.name],
|
117
|
+
[TestCase::FINISHED_OBJECT, test_case],
|
118
|
+
],
|
119
|
+
progress)
|
79
120
|
end
|
80
121
|
|
81
122
|
def test_add_failure_nested
|
82
123
|
test_case = @tc_failure_error.new(:test_nested_failure)
|
83
|
-
|
124
|
+
assert do
|
125
|
+
test_case.passed?
|
126
|
+
end
|
84
127
|
|
85
128
|
result = TestResult.new
|
86
|
-
|
87
|
-
result.add_listener(TestResult::FAULT)
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
129
|
+
faults = []
|
130
|
+
result.add_listener(TestResult::FAULT) do |fault|
|
131
|
+
faults << fault
|
132
|
+
end
|
133
|
+
test_case.run(result) do
|
134
|
+
end
|
135
|
+
fault_details = faults.collect do |fault|
|
136
|
+
{
|
137
|
+
:class => fault.class,
|
138
|
+
:message => fault.message,
|
139
|
+
:test_name => fault.test_name,
|
140
|
+
:location => normalize_location(fault.location),
|
141
|
+
}
|
142
|
+
end
|
143
|
+
assert_equal([
|
144
|
+
{
|
145
|
+
:class => Failure,
|
146
|
+
:message => "nested",
|
147
|
+
:test_name => "test_nested_failure(TC_FailureError)",
|
148
|
+
:location => [
|
149
|
+
"#{__FILE__}:0:in `nested'",
|
150
|
+
"#{__FILE__}:0:in `test_nested_failure'",
|
151
|
+
"#{__FILE__}:0:in `#{__method__}'",
|
152
|
+
],
|
153
|
+
},
|
154
|
+
],
|
155
|
+
fault_details)
|
156
|
+
|
157
|
+
assert do
|
158
|
+
not test_case.passed?
|
159
|
+
end
|
102
160
|
end
|
103
|
-
|
161
|
+
|
104
162
|
def test_add_error
|
105
163
|
test_case = @tc_failure_error.new(:test_error)
|
106
|
-
|
164
|
+
assert do
|
165
|
+
test_case.passed?
|
166
|
+
end
|
167
|
+
|
107
168
|
result = TestResult.new
|
108
|
-
|
109
|
-
result.add_listener(TestResult::FAULT)
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
169
|
+
faults = []
|
170
|
+
result.add_listener(TestResult::FAULT) do |fault|
|
171
|
+
faults << fault
|
172
|
+
end
|
173
|
+
test_case.run(result) do
|
174
|
+
end
|
175
|
+
fault_details = faults.collect do |fault|
|
176
|
+
{
|
177
|
+
:class => fault.class,
|
178
|
+
:message => fault.message,
|
179
|
+
:test_name => fault.test_name,
|
180
|
+
:location => normalize_location(fault.location),
|
181
|
+
}
|
182
|
+
end
|
183
|
+
assert_equal([
|
184
|
+
{
|
185
|
+
:class => Error,
|
186
|
+
:message => "ZeroDivisionError: divided by 0",
|
187
|
+
:test_name => "test_error(TC_FailureError)",
|
188
|
+
:location => [
|
189
|
+
"#{__FILE__}:0:in `test_error'",
|
190
|
+
"#{__FILE__}:0:in `#{__method__}'",
|
191
|
+
],
|
192
|
+
},
|
193
|
+
],
|
194
|
+
fault_details)
|
195
|
+
|
196
|
+
assert do
|
197
|
+
not test_case.passed?
|
198
|
+
end
|
120
199
|
end
|
121
200
|
|
122
|
-
def test_no_tests
|
201
|
+
def test_no_tests
|
123
202
|
suite = TestCase.suite
|
124
203
|
check("Should have a test suite", suite.instance_of?(TestSuite))
|
125
204
|
check("Should have one test", suite.size == 1)
|
126
205
|
check("Should have the default test", suite.tests.first.name == "default_test(Test::Unit::TestCase)")
|
127
|
-
|
206
|
+
|
128
207
|
result = TestResult.new
|
129
208
|
suite.run(result) {}
|
130
209
|
check("Should have had one test run", result.run_count == 1)
|
@@ -153,19 +232,18 @@ module Test
|
|
153
232
|
assert_block {true}
|
154
233
|
end
|
155
234
|
end
|
156
|
-
|
235
|
+
|
157
236
|
suite = tc.suite
|
158
237
|
check("Should have a test suite", suite.instance_of?(TestSuite))
|
159
238
|
check("Should have three tests", suite.size == 3)
|
160
|
-
|
239
|
+
|
161
240
|
result = TestResult.new
|
162
241
|
suite.run(result) {}
|
163
242
|
check("Should have had three test runs", result.run_count == 3)
|
164
243
|
check("Should have had one test failure", result.failure_count == 1)
|
165
244
|
check("Should have had one test error", result.error_count == 1)
|
166
245
|
end
|
167
|
-
|
168
|
-
|
246
|
+
|
169
247
|
def test_setup_teardown
|
170
248
|
tc = Class.new(TestCase) do
|
171
249
|
attr_reader(:setup_called, :teardown_called)
|
@@ -191,34 +269,34 @@ module Test
|
|
191
269
|
end
|
192
270
|
end
|
193
271
|
result = TestResult.new
|
194
|
-
|
272
|
+
|
195
273
|
test = tc.new(:test_succeed)
|
196
274
|
test.run(result) {}
|
197
275
|
check("Should have called setup the correct number of times", test.setup_called)
|
198
276
|
check("Should have called teardown the correct number of times", test.teardown_called)
|
199
|
-
|
277
|
+
|
200
278
|
test = tc.new(:test_fail)
|
201
279
|
test.run(result) {}
|
202
280
|
check("Should have called setup the correct number of times", test.setup_called)
|
203
281
|
check("Should have called teardown the correct number of times", test.teardown_called)
|
204
|
-
|
282
|
+
|
205
283
|
test = tc.new(:test_error)
|
206
284
|
test.run(result) {}
|
207
285
|
check("Should have called setup the correct number of times", test.setup_called)
|
208
286
|
check("Should have called teardown the correct number of times", test.teardown_called)
|
209
|
-
|
287
|
+
|
210
288
|
check("Should have had two test runs", result.run_count == 3)
|
211
289
|
check("Should have had a test failure", result.failure_count == 1)
|
212
290
|
check("Should have had a test error", result.error_count == 1)
|
213
291
|
end
|
214
|
-
|
292
|
+
|
215
293
|
def test_assertion_failed_not_called
|
216
294
|
tc = Class.new(TestCase) do
|
217
295
|
def test_thing
|
218
296
|
raise AssertionFailedError.new
|
219
297
|
end
|
220
298
|
end
|
221
|
-
|
299
|
+
|
222
300
|
suite = tc.suite
|
223
301
|
check("Should have one test", suite.size == 1)
|
224
302
|
result = TestResult.new
|
@@ -227,7 +305,7 @@ module Test
|
|
227
305
|
check("Should have had one assertion failure", result.failure_count == 1)
|
228
306
|
check("Should not have any assertion errors but had #{result.error_count}", result.error_count == 0)
|
229
307
|
end
|
230
|
-
|
308
|
+
|
231
309
|
def test_equality
|
232
310
|
tc1 = Class.new(TestCase) do
|
233
311
|
def test_1
|
@@ -235,31 +313,30 @@ module Test
|
|
235
313
|
def test_2
|
236
314
|
end
|
237
315
|
end
|
238
|
-
|
316
|
+
|
239
317
|
tc2 = Class.new(TestCase) do
|
240
318
|
def test_1
|
241
319
|
end
|
242
320
|
end
|
243
|
-
|
321
|
+
|
244
322
|
test1 = tc1.new('test_1')
|
245
323
|
test2 = tc1.new('test_1')
|
246
324
|
check("Should be equal", test1 == test2)
|
247
325
|
check("Should be equal", test2 == test1)
|
248
|
-
|
326
|
+
|
249
327
|
test1 = tc1.new('test_2')
|
250
328
|
check("Should not be equal", test1 != test2)
|
251
329
|
check("Should not be equal", test2 != test1)
|
252
|
-
|
330
|
+
|
253
331
|
test2 = tc1.new('test_2')
|
254
332
|
check("Should be equal", test1 == test2)
|
255
333
|
check("Should be equal", test2 == test1)
|
256
|
-
|
334
|
+
|
257
335
|
test1 = tc1.new('test_1')
|
258
336
|
test2 = tc2.new('test_1')
|
259
337
|
check("Should not be equal", test1 != test2)
|
260
338
|
check("Should not be equal", test2 != test1)
|
261
339
|
|
262
|
-
|
263
340
|
check("Should not be equal", test1 != Object.new)
|
264
341
|
check("Should not be equal", Object.new != test1)
|
265
342
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-unit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-11-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: power_assert
|