test-unit 3.4.2 → 3.4.3
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 +10 -0
- data/lib/test/unit/assertions.rb +112 -0
- data/lib/test/unit/testcase.rb +2 -1
- data/lib/test/unit/version.rb +1 -1
- data/test/test-assertions.rb +95 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '096e65b8d56779e795090f5e56e10a10bcef4f666f45702da71acb1e0e0e769e'
|
4
|
+
data.tar.gz: 31402966d552fe2c7cd960185929963e7358296e9ff5727be4c7a72781d070b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e46ad14d93dadac17224d10ab58617acc4dfaae61f06067c400308d9c1b3ad060201e88a7fd097d94d93c053a1d5bed0a9f56e765bb573fe960c7086251a891c
|
7
|
+
data.tar.gz: cfa5f1b593e993ff2643cab4989428817fdae1258a357797b2e42d0d563022351349eb3648056305df8ddb6f5e9847a1084646f2edec93b7a1c519bba96c9d11
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 3.4.3 - 2021-06-04 {#version-3-4-3}
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* Stopped to change result value of `Test::Unit::TestCase#include`.
|
8
|
+
|
9
|
+
* Added `assert_all?`.
|
10
|
+
|
11
|
+
* Added support for `assert_raise_with_message`.
|
12
|
+
|
3
13
|
## 3.4.2 - 2021-05-30 {#version-3-4-2}
|
4
14
|
|
5
15
|
### Improvements
|
data/lib/test/unit/assertions.rb
CHANGED
@@ -289,6 +289,71 @@ EOT
|
|
289
289
|
# Just for minitest compatibility. :<
|
290
290
|
alias_method :assert_raises, :assert_raise
|
291
291
|
|
292
|
+
# Passes if the block raises `expected_exception` with
|
293
|
+
# `expected_message`. `expected_message` can be a `String` or
|
294
|
+
# `Regexp`.
|
295
|
+
#
|
296
|
+
# @example Pass pattern: String
|
297
|
+
# assert_raise_with_message(RuntimeError, "Boom!!!") do
|
298
|
+
# raise "Boom!!!"
|
299
|
+
# end # -> pass
|
300
|
+
#
|
301
|
+
# @example Pass pattern: Regexp
|
302
|
+
# assert_raise_with_message(RuntimeError, /!!!/) do
|
303
|
+
# raise "Boom!!!"
|
304
|
+
# end # -> pass
|
305
|
+
#
|
306
|
+
# @example Failure pattern: Exception class isn't matched
|
307
|
+
# assert_raise_with_message(RuntimeError, "Boom!!!") do
|
308
|
+
# raise ArgumentError, "Boom!!!"
|
309
|
+
# end # -> failure
|
310
|
+
#
|
311
|
+
# @example Failure pattern: Exception message isn't matched
|
312
|
+
# assert_raise_with_message(RuntimeError, "Boom!!!") do
|
313
|
+
# raise "Hello"
|
314
|
+
# end # -> failure
|
315
|
+
#
|
316
|
+
# @since 3.4.3
|
317
|
+
def assert_raise_with_message(expected_exception_class,
|
318
|
+
expected_message,
|
319
|
+
message=nil,
|
320
|
+
&block)
|
321
|
+
assert_expected_exception = Proc.new do |*_args|
|
322
|
+
_message, assert_exception_helper, actual_exception = _args
|
323
|
+
diff = AssertionMessage.delayed_diff([
|
324
|
+
expected_exception_class,
|
325
|
+
expected_message,
|
326
|
+
],
|
327
|
+
[
|
328
|
+
actual_exception.class,
|
329
|
+
actual_exception.message,
|
330
|
+
])
|
331
|
+
full_message = build_message(message,
|
332
|
+
"<?>(<?>) exception expected but was\n" +
|
333
|
+
"<?>(<?>).?",
|
334
|
+
expected_exception_class,
|
335
|
+
expected_message,
|
336
|
+
actual_exception.class,
|
337
|
+
actual_exception.message,
|
338
|
+
diff)
|
339
|
+
begin
|
340
|
+
assert_block(full_message) do
|
341
|
+
assert_exception_helper.expected?(actual_exception) and
|
342
|
+
expected_message === actual_exception.message
|
343
|
+
end
|
344
|
+
rescue AssertionFailedError => failure
|
345
|
+
_set_failed_information(failure,
|
346
|
+
expected_exception_class,
|
347
|
+
actual_exception)
|
348
|
+
raise failure # For JRuby. :<
|
349
|
+
end
|
350
|
+
actual_exception
|
351
|
+
end
|
352
|
+
args = [expected_exception_class]
|
353
|
+
args << message if message
|
354
|
+
_assert_raise(assert_expected_exception, *args, &block)
|
355
|
+
end
|
356
|
+
|
292
357
|
##
|
293
358
|
# Passes if the block raises one of the given
|
294
359
|
# exceptions or sub exceptions of the given exceptions.
|
@@ -1612,6 +1677,53 @@ EOT
|
|
1612
1677
|
# @since 3.0.0
|
1613
1678
|
alias_method :refute_empty, :assert_not_empty
|
1614
1679
|
|
1680
|
+
# @overload assert_all?(collection, message=nil, &block)
|
1681
|
+
#
|
1682
|
+
# Asserts that all `block.call(item)` where `item` is each
|
1683
|
+
# item in `collection` are not false nor nil.
|
1684
|
+
#
|
1685
|
+
# If `collection` is empty, this assertion is always passed
|
1686
|
+
# with any `block`.
|
1687
|
+
#
|
1688
|
+
# @example Pass patterns
|
1689
|
+
# assert_all?([1, 2, 3]) {|item| item > 0} # => pass
|
1690
|
+
# assert_all?([1, 2, 3], &:positive?) # => pass
|
1691
|
+
# assert_all?([]) {|item| false} # => pass
|
1692
|
+
#
|
1693
|
+
# @example Failure pattern
|
1694
|
+
# assert_all?([0, 1, 2], &:zero?) # => failure
|
1695
|
+
#
|
1696
|
+
# @param [#each] collection The check target.
|
1697
|
+
# @param [String] message The additional user message. It is
|
1698
|
+
# showed when the assertion is failed.
|
1699
|
+
# @yield [Object] Give each item in `collection` to the block.
|
1700
|
+
# @yieldreturn [Object] The checked object.
|
1701
|
+
# @return [void]
|
1702
|
+
#
|
1703
|
+
# @since 3.4.3
|
1704
|
+
def assert_all?(collection, message=nil)
|
1705
|
+
_wrap_assertion do
|
1706
|
+
failed = false
|
1707
|
+
result = {}
|
1708
|
+
collection.each do |item|
|
1709
|
+
element_result = yield(item)
|
1710
|
+
failed = true unless element_result
|
1711
|
+
result[item] = element_result
|
1712
|
+
end
|
1713
|
+
format = <<-FORMAT
|
1714
|
+
<?> was expected to be all true values with the given block but was
|
1715
|
+
<?>
|
1716
|
+
FORMAT
|
1717
|
+
full_message = build_message(message,
|
1718
|
+
format,
|
1719
|
+
collection,
|
1720
|
+
result)
|
1721
|
+
assert_block(full_message) do
|
1722
|
+
not failed
|
1723
|
+
end
|
1724
|
+
end
|
1725
|
+
end
|
1726
|
+
|
1615
1727
|
##
|
1616
1728
|
# Builds a failure message. `user_message` is added before the
|
1617
1729
|
# `template` and `arguments` replaces the '?'s positionally in
|
data/lib/test/unit/testcase.rb
CHANGED
@@ -131,12 +131,13 @@ module Test
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def include(*modules, &block) # :nodoc:
|
134
|
-
super
|
134
|
+
result = super
|
135
135
|
modules.each do |mod|
|
136
136
|
mod.public_instance_methods(false).each do |method_name|
|
137
137
|
AutoRunnerLoader.check(self, method_name.to_s)
|
138
138
|
end
|
139
139
|
end
|
140
|
+
result
|
140
141
|
end
|
141
142
|
|
142
143
|
@@added_method_names = {}
|
data/lib/test/unit/version.rb
CHANGED
data/test/test-assertions.rb
CHANGED
@@ -98,7 +98,8 @@ module Test
|
|
98
98
|
|
99
99
|
def check_fail_exception(expected_message, options={}, &proc)
|
100
100
|
normalizer = lambda do |actual_message|
|
101
|
-
actual_message.gsub(/^(
|
101
|
+
actual_message.gsub(/^(?:[a-zA-Z]:|<internal:core> )?[^:\n]+:\d+:.+\n/,
|
102
|
+
"")
|
102
103
|
end
|
103
104
|
check_assertions(true,
|
104
105
|
options.merge(:expected_message => expected_message,
|
@@ -1606,6 +1607,66 @@ MESSAGE
|
|
1606
1607
|
end
|
1607
1608
|
end
|
1608
1609
|
|
1610
|
+
class TestAssertRaiseWithMessage < Test::Unit::TestCase
|
1611
|
+
include AssertionCheckable
|
1612
|
+
|
1613
|
+
def test_pass_string
|
1614
|
+
check_nothing_fails(true) do
|
1615
|
+
assert_raise_with_message(RuntimeError, "Boom!!!") do
|
1616
|
+
raise "Boom!!!"
|
1617
|
+
end
|
1618
|
+
end
|
1619
|
+
end
|
1620
|
+
|
1621
|
+
def test_pass_regexp
|
1622
|
+
check_nothing_fails(true) do
|
1623
|
+
assert_raise_with_message(RuntimeError, /!!!/) do
|
1624
|
+
raise "Boom!!!"
|
1625
|
+
end
|
1626
|
+
end
|
1627
|
+
end
|
1628
|
+
|
1629
|
+
def test_pass_message
|
1630
|
+
check_nothing_fails(true) do
|
1631
|
+
assert_raise_with_message(RuntimeError, "Boom!!!", "message") do
|
1632
|
+
raise "Boom!!!"
|
1633
|
+
end
|
1634
|
+
end
|
1635
|
+
end
|
1636
|
+
|
1637
|
+
def test_fail_unmatch_class
|
1638
|
+
expected_message = <<-MESSAGE.chomp
|
1639
|
+
message.
|
1640
|
+
<LoadError>(<"Boom!!!">) exception expected but was
|
1641
|
+
<RuntimeError>(<"Boom!!!">).
|
1642
|
+
|
1643
|
+
diff:
|
1644
|
+
- [LoadError, "Boom!!!"]
|
1645
|
+
? ^^^^
|
1646
|
+
+ [RuntimeError, "Boom!!!"]
|
1647
|
+
? ^^^^^^^
|
1648
|
+
MESSAGE
|
1649
|
+
check_fail(expected_message) do
|
1650
|
+
assert_raise_with_message(LoadError, "Boom!!!", "message") do
|
1651
|
+
raise "Boom!!!"
|
1652
|
+
end
|
1653
|
+
end
|
1654
|
+
end
|
1655
|
+
|
1656
|
+
def test_fail_unmatch_message
|
1657
|
+
expected_message = <<-MESSAGE.chomp
|
1658
|
+
message.
|
1659
|
+
<RuntimeError>(</Hello/>) exception expected but was
|
1660
|
+
<RuntimeError>(<"Boom!!!">).
|
1661
|
+
MESSAGE
|
1662
|
+
check_fail(expected_message) do
|
1663
|
+
assert_raise_with_message(RuntimeError, /Hello/, "message") do
|
1664
|
+
raise "Boom!!!"
|
1665
|
+
end
|
1666
|
+
end
|
1667
|
+
end
|
1668
|
+
end
|
1669
|
+
|
1609
1670
|
class TestAssertInDelta < TestCase
|
1610
1671
|
include AssertionCheckable
|
1611
1672
|
|
@@ -2169,6 +2230,39 @@ EOM
|
|
2169
2230
|
end
|
2170
2231
|
end
|
2171
2232
|
|
2233
|
+
class TestAssertAll < Test::Unit::TestCase
|
2234
|
+
include AssertionCheckable
|
2235
|
+
|
2236
|
+
def test_pass
|
2237
|
+
check_nothing_fails do
|
2238
|
+
assert_all?([1, 2]) {|item| item > 0}
|
2239
|
+
end
|
2240
|
+
end
|
2241
|
+
|
2242
|
+
def test_pass_message
|
2243
|
+
check_nothing_fails do
|
2244
|
+
assert_all?([1, 2], "positive") {|item| item > 0}
|
2245
|
+
end
|
2246
|
+
end
|
2247
|
+
|
2248
|
+
def test_pass_empty
|
2249
|
+
check_nothing_fails do
|
2250
|
+
assert_all?([]) {|item| false}
|
2251
|
+
end
|
2252
|
+
end
|
2253
|
+
|
2254
|
+
def test_fail
|
2255
|
+
expected_message = <<-EOM
|
2256
|
+
message.
|
2257
|
+
<[0, 1]> was expected to be all true values with the given block but was
|
2258
|
+
<{0=>true, 1=>false}>
|
2259
|
+
EOM
|
2260
|
+
check_fail(expected_message.chomp) do
|
2261
|
+
assert_all?([0, 1], "message", &:zero?)
|
2262
|
+
end
|
2263
|
+
end
|
2264
|
+
end
|
2265
|
+
|
2172
2266
|
class TestTemplate < Test::Unit::TestCase
|
2173
2267
|
def test_incompatible_encoding_by_diff
|
2174
2268
|
need_encoding
|
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.4.
|
4
|
+
version: 3.4.3
|
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: 2021-
|
12
|
+
date: 2021-06-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: power_assert
|