minitest 5.27.0 → 6.0.0.a1
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
- checksums.yaml.gz.sig +0 -0
- data/History.rdoc +80 -0
- data/Manifest.txt +13 -4
- data/README.rdoc +5 -88
- data/Rakefile +5 -16
- data/bin/minitest +5 -0
- data/lib/minitest/assertions.rb +24 -56
- data/lib/minitest/autorun.rb +0 -1
- data/lib/minitest/bisect.rb +306 -0
- data/lib/minitest/complete.rb +56 -0
- data/lib/minitest/find_minimal_combination.rb +127 -0
- data/lib/minitest/manual_plugins.rb +4 -16
- data/lib/minitest/parallel.rb +3 -3
- data/lib/minitest/path_expander.rb +418 -0
- data/lib/minitest/pride.rb +1 -1
- data/lib/minitest/server.rb +45 -0
- data/lib/minitest/server_plugin.rb +84 -0
- data/lib/minitest/spec.rb +2 -31
- data/lib/minitest/sprint.rb +104 -0
- data/lib/minitest/sprint_plugin.rb +39 -0
- data/lib/minitest/test.rb +6 -11
- data/lib/minitest/test_task.rb +4 -6
- data/lib/minitest.rb +56 -84
- data/test/minitest/metametameta.rb +1 -1
- data/test/minitest/test_bisect.rb +235 -0
- data/test/minitest/test_find_minimal_combination.rb +138 -0
- data/test/minitest/test_minitest_assertions.rb +33 -47
- data/test/minitest/test_minitest_spec.rb +38 -102
- data/test/minitest/test_minitest_test.rb +20 -99
- data/test/minitest/test_path_expander.rb +229 -0
- data/test/minitest/test_server.rb +149 -0
- data.tar.gz.sig +0 -0
- metadata +47 -27
- metadata.gz.sig +0 -0
- data/.autotest +0 -34
- data/lib/minitest/mock.rb +0 -327
- data/lib/minitest/unit.rb +0 -42
- data/test/minitest/test_minitest_mock.rb +0 -1213
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a01b47e47e72a229e83d2809ca755928bdd25f359c933e22c72b5ac8a171755f
|
|
4
|
+
data.tar.gz: 66fa45d45a03fb1432654237fa2dc74d955667223e22b11c81b589aafce07289
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7469ea92dcfe5adfe2ffe53178ad0acd4f5fc699359e52c7cfcb7519ce322294a0cd29c171bef2226618cb5d64f4f73069a2ef54fde664e78a31404e53d9b6bc
|
|
7
|
+
data.tar.gz: b12bf7908a6fcf0e22fbac91e2d68b7a30ba86a8cdb87dbe9b55adf617df6275afc6cbb97f0c4e197f762bd836aafe1c7f6e2fe22262eec5aa3eb1bae5e5699d
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/History.rdoc
CHANGED
|
@@ -1,3 +1,83 @@
|
|
|
1
|
+
=== 6.0.0.a.1 / 2025-12-15
|
|
2
|
+
|
|
3
|
+
This is an alpha level release in order to get feedback. I'm pretty
|
|
4
|
+
settled on integrating minitest-sprint's minitest cmdline but less
|
|
5
|
+
sold on having bisect+server integrated.
|
|
6
|
+
|
|
7
|
+
Please give me feedback here: https://github.com/minitest/minitest/issues/1040
|
|
8
|
+
|
|
9
|
+
Oh god... here we go... (again)
|
|
10
|
+
|
|
11
|
+
* 8 deaths in the family(!!):
|
|
12
|
+
|
|
13
|
+
* Deleted MiniTest and MiniTest::Unit::TestCase compatibility namespaces.
|
|
14
|
+
* Deleted all use of Marshal for serialization.
|
|
15
|
+
* Deleted maglev? and rubinius? guard methods. LOL.
|
|
16
|
+
* Deleted all minitest/spec expectations from Object. Use _/value/expect.
|
|
17
|
+
* Dropped minitest/mock.rb. This has been extracted to the minitest-mock gem.
|
|
18
|
+
* assert_equal(nil, value) no longer allowed. Use assert_nil to be explicit.
|
|
19
|
+
* Removed assert_send. Use assert_predicate or assert_operator.
|
|
20
|
+
* Removed Minitest::Test#class_name.
|
|
21
|
+
|
|
22
|
+
* 7 major (oft incompatible) changes:
|
|
23
|
+
|
|
24
|
+
* Big: Major refactored MT6's run path!
|
|
25
|
+
* Minitest.__run -> Minitest.run_all_suites
|
|
26
|
+
* Runnable.run -> Runnable.run_suite & Runnable.filter_runnable_methods
|
|
27
|
+
* Runnable.run_one_method -> Runnable.run
|
|
28
|
+
* Removed Minitest.run_one_method (might bring it back to raise?)
|
|
29
|
+
* Removed deprecated ENV["N"] to specify number of parallel tests. Use MT_CPU.
|
|
30
|
+
* Renamed options[:filter] to options[:include], added --include cmdline option.
|
|
31
|
+
* --name is still handled, but that will be removed in the future.
|
|
32
|
+
* Renamed Minitest::Runnable#test_order to #run_order.
|
|
33
|
+
* If message is passed a proc then that proc overrides all other output.
|
|
34
|
+
* They are no longer chained!
|
|
35
|
+
* And it does less for formatting of your output.
|
|
36
|
+
* Removed reporter arg from with_info_handler as it has never(?) been used. (HACK?)
|
|
37
|
+
* Plugin loading is now opt-in!
|
|
38
|
+
* Require the plugin in your test_helper.
|
|
39
|
+
* Or use Minitest.load :x
|
|
40
|
+
* Or call Minitest.load_plugins for the old autoloading behavior.
|
|
41
|
+
|
|
42
|
+
* 5 additions:
|
|
43
|
+
|
|
44
|
+
* Added minitest-sprint's minitest cmdline, now with line support.
|
|
45
|
+
* Added minitest-bisect. Run with minitest --bisect or -b.
|
|
46
|
+
* Added minitest-server.
|
|
47
|
+
* Added minitest/complete to help with shell's tab-completion of tests.
|
|
48
|
+
* Vendored latest version of path_expander.
|
|
49
|
+
|
|
50
|
+
* 5 other:
|
|
51
|
+
|
|
52
|
+
* Bumped to ruby 3.2+.
|
|
53
|
+
* Removed obsolete conditional for CompositeReporter#prerecord.
|
|
54
|
+
* Removed obsolete version guards around Minitest::Result in reporters.
|
|
55
|
+
* assert_operator and assert_predicate both call assert_respond_to first.
|
|
56
|
+
* Assertions reuse themselves a lot more. Bumps assertion count in some places.
|
|
57
|
+
|
|
58
|
+
* 1 voodoo:
|
|
59
|
+
|
|
60
|
+
* HACK: does anyone require minitest/test w/o minitest? that's crazy right?
|
|
61
|
+
|
|
62
|
+
=== 5.27.0 / 2025-12-11
|
|
63
|
+
|
|
64
|
+
* 1 major enhancement:
|
|
65
|
+
|
|
66
|
+
* Adding post install message announcing the EOL for minitest 5!
|
|
67
|
+
|
|
68
|
+
* 2 minor enhancements:
|
|
69
|
+
|
|
70
|
+
* Removed TestTask::Work#initialize since Queue can now initialize with an Enumerable! AMAZING!
|
|
71
|
+
* Use Kernel#warn uplevel argument for nicer warnings. (byroot)
|
|
72
|
+
|
|
73
|
+
* 5 bug fixes:
|
|
74
|
+
|
|
75
|
+
* Cleaned up option aliasing a tad.
|
|
76
|
+
* Removed obsolete conditional for prerecord
|
|
77
|
+
* Removed obsolete guards around Warning.
|
|
78
|
+
* Removed obsolete version guards for pattern matching assertions.
|
|
79
|
+
* Switched all internal requires to require_relative.
|
|
80
|
+
|
|
1
81
|
=== 5.26.2 / 2025-11-17
|
|
2
82
|
|
|
3
83
|
* 5 bug fixes:
|
data/Manifest.txt
CHANGED
|
@@ -1,32 +1,41 @@
|
|
|
1
|
-
.autotest
|
|
2
1
|
History.rdoc
|
|
3
2
|
Manifest.txt
|
|
4
3
|
README.rdoc
|
|
5
4
|
Rakefile
|
|
5
|
+
bin/minitest
|
|
6
6
|
design_rationale.rb
|
|
7
7
|
lib/hoe/minitest.rb
|
|
8
8
|
lib/minitest.rb
|
|
9
9
|
lib/minitest/assertions.rb
|
|
10
10
|
lib/minitest/autorun.rb
|
|
11
11
|
lib/minitest/benchmark.rb
|
|
12
|
+
lib/minitest/bisect.rb
|
|
13
|
+
lib/minitest/complete.rb
|
|
12
14
|
lib/minitest/compress.rb
|
|
13
15
|
lib/minitest/error_on_warning.rb
|
|
14
16
|
lib/minitest/expectations.rb
|
|
17
|
+
lib/minitest/find_minimal_combination.rb
|
|
15
18
|
lib/minitest/hell.rb
|
|
16
19
|
lib/minitest/manual_plugins.rb
|
|
17
|
-
lib/minitest/mock.rb
|
|
18
20
|
lib/minitest/parallel.rb
|
|
21
|
+
lib/minitest/path_expander.rb
|
|
19
22
|
lib/minitest/pride.rb
|
|
20
23
|
lib/minitest/pride_plugin.rb
|
|
24
|
+
lib/minitest/server.rb
|
|
25
|
+
lib/minitest/server_plugin.rb
|
|
21
26
|
lib/minitest/spec.rb
|
|
27
|
+
lib/minitest/sprint.rb
|
|
28
|
+
lib/minitest/sprint_plugin.rb
|
|
22
29
|
lib/minitest/test.rb
|
|
23
30
|
lib/minitest/test_task.rb
|
|
24
|
-
lib/minitest/unit.rb
|
|
25
31
|
test/minitest/metametameta.rb
|
|
32
|
+
test/minitest/test_bisect.rb
|
|
33
|
+
test/minitest/test_find_minimal_combination.rb
|
|
26
34
|
test/minitest/test_minitest_assertions.rb
|
|
27
35
|
test/minitest/test_minitest_benchmark.rb
|
|
28
|
-
test/minitest/test_minitest_mock.rb
|
|
29
36
|
test/minitest/test_minitest_reporter.rb
|
|
30
37
|
test/minitest/test_minitest_spec.rb
|
|
31
38
|
test/minitest/test_minitest_test.rb
|
|
32
39
|
test/minitest/test_minitest_test_task.rb
|
|
40
|
+
test/minitest/test_server.rb
|
|
41
|
+
test/minitest/test_path_expander.rb
|
data/README.rdoc
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
= minitest/{test,spec,
|
|
1
|
+
= minitest/{test,spec,benchmark}
|
|
2
2
|
|
|
3
3
|
home :: https://minite.st/
|
|
4
4
|
code :: https://github.com/minitest/minitest
|
|
@@ -11,7 +11,7 @@ vim :: https://github.com/vim-test/vim-test
|
|
|
11
11
|
== DESCRIPTION:
|
|
12
12
|
|
|
13
13
|
minitest provides a complete suite of testing facilities supporting
|
|
14
|
-
TDD, BDD,
|
|
14
|
+
TDD, BDD, and benchmarking.
|
|
15
15
|
|
|
16
16
|
"I had a class with Jim Weirich on testing last week and we were
|
|
17
17
|
allowed to choose our testing frameworks. Kirk Haines and I were
|
|
@@ -37,9 +37,6 @@ algorithms in a repeatable manner. Now you can assert that your newb
|
|
|
37
37
|
co-worker doesn't replace your linear algorithm with an exponential
|
|
38
38
|
one!
|
|
39
39
|
|
|
40
|
-
minitest/mock by Steven Baker, is a beautifully tiny mock (and stub)
|
|
41
|
-
object framework.
|
|
42
|
-
|
|
43
40
|
minitest/pride shows pride in testing and adds coloring to your test
|
|
44
41
|
output. I guess it is an example of how to write IO pipes too. :P
|
|
45
42
|
|
|
@@ -69,7 +66,6 @@ extract-method refactorings still apply.
|
|
|
69
66
|
* minitest/autorun - the easy and explicit way to run all your tests.
|
|
70
67
|
* minitest/test - a very fast, simple, and clean test system.
|
|
71
68
|
* minitest/spec - a very fast, simple, and clean spec system.
|
|
72
|
-
* minitest/mock - a simple and clean mock/stub system.
|
|
73
69
|
* minitest/benchmark - an awesome way to assert your algorithm's performance.
|
|
74
70
|
* minitest/pride - show your pride in testing!
|
|
75
71
|
* minitest/test_task - a full-featured and clean rake task generator.
|
|
@@ -191,85 +187,6 @@ outputs something like:
|
|
|
191
187
|
|
|
192
188
|
Output is tab-delimited to make it easy to paste into a spreadsheet.
|
|
193
189
|
|
|
194
|
-
=== Mocks
|
|
195
|
-
|
|
196
|
-
Mocks and stubs defined using terminology by Fowler & Meszaros at
|
|
197
|
-
https://www.martinfowler.com/bliki/TestDouble.html:
|
|
198
|
-
|
|
199
|
-
"Mocks are pre-programmed with expectations which form a specification
|
|
200
|
-
of the calls they are expected to receive. They can throw an exception
|
|
201
|
-
if they receive a call they don't expect and are checked during
|
|
202
|
-
verification to ensure they got all the calls they were expecting."
|
|
203
|
-
|
|
204
|
-
class MemeAsker
|
|
205
|
-
def initialize(meme)
|
|
206
|
-
@meme = meme
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
def ask(question)
|
|
210
|
-
method = question.tr(" ", "_") + "?"
|
|
211
|
-
@meme.__send__(method)
|
|
212
|
-
end
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
require "minitest/autorun"
|
|
216
|
-
|
|
217
|
-
describe MemeAsker, :ask do
|
|
218
|
-
describe "when passed an unpunctuated question" do
|
|
219
|
-
it "should invoke the appropriate predicate method on the meme" do
|
|
220
|
-
@meme = Minitest::Mock.new
|
|
221
|
-
@meme_asker = MemeAsker.new @meme
|
|
222
|
-
@meme.expect :will_it_blend?, :return_value
|
|
223
|
-
|
|
224
|
-
@meme_asker.ask "will it blend"
|
|
225
|
-
|
|
226
|
-
@meme.verify
|
|
227
|
-
end
|
|
228
|
-
end
|
|
229
|
-
end
|
|
230
|
-
|
|
231
|
-
==== Multi-threading and Mocks
|
|
232
|
-
|
|
233
|
-
Minitest mocks do not support multi-threading. If it works, fine, if it doesn't
|
|
234
|
-
you can use regular ruby patterns and facilities like local variables. Here's
|
|
235
|
-
an example of asserting that code inside a thread is run:
|
|
236
|
-
|
|
237
|
-
def test_called_inside_thread
|
|
238
|
-
called = false
|
|
239
|
-
pr = Proc.new { called = true }
|
|
240
|
-
thread = Thread.new(&pr)
|
|
241
|
-
thread.join
|
|
242
|
-
assert called, "proc not called"
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
=== Stubs
|
|
246
|
-
|
|
247
|
-
Mocks and stubs are defined using terminology by Fowler & Meszaros at
|
|
248
|
-
https://www.martinfowler.com/bliki/TestDouble.html:
|
|
249
|
-
|
|
250
|
-
"Stubs provide canned answers to calls made during the test".
|
|
251
|
-
|
|
252
|
-
Minitest's stub method overrides a single method for the duration of
|
|
253
|
-
the block.
|
|
254
|
-
|
|
255
|
-
def test_stale_eh
|
|
256
|
-
obj_under_test = Something.new
|
|
257
|
-
|
|
258
|
-
refute obj_under_test.stale?
|
|
259
|
-
|
|
260
|
-
Time.stub :now, Time.at(0) do # stub goes away once the block is done
|
|
261
|
-
assert obj_under_test.stale?
|
|
262
|
-
end
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
A note on stubbing: In order to stub a method, the method must
|
|
266
|
-
actually exist prior to stubbing. Use a singleton method to create a
|
|
267
|
-
new non-existing method:
|
|
268
|
-
|
|
269
|
-
def obj_under_test.fake_method
|
|
270
|
-
...
|
|
271
|
-
end
|
|
272
|
-
|
|
273
190
|
=== Running Your Tests
|
|
274
191
|
|
|
275
192
|
Ideally, you'll use a rake task to run your tests (see below), either
|
|
@@ -765,8 +682,8 @@ rematch :: Declutter your test files from large hardcoded da
|
|
|
765
682
|
and update them automatically when your code changes.
|
|
766
683
|
rspec2minitest :: Easily translate any RSpec matchers to Minitest
|
|
767
684
|
assertions and expectations.
|
|
768
|
-
stubberry :: Multiple stubbing 'berries', sweet and useful
|
|
769
|
-
stub helpers and assertions. ( stub_must,
|
|
685
|
+
stubberry :: Multiple stubbing 'berries', sweet and useful
|
|
686
|
+
stub helpers and assertions. ( stub_must,
|
|
770
687
|
assert_method_called, stubbing ORM objects by id )
|
|
771
688
|
|
|
772
689
|
== Unknown Extensions:
|
|
@@ -797,7 +714,7 @@ Authors... Please send me a pull request with a description of your minitest ext
|
|
|
797
714
|
|
|
798
715
|
== REQUIREMENTS:
|
|
799
716
|
|
|
800
|
-
* Ruby 2
|
|
717
|
+
* Ruby 3.2+. No magic is involved. I hope.
|
|
801
718
|
|
|
802
719
|
== INSTALL:
|
|
803
720
|
|
data/Rakefile
CHANGED
|
@@ -4,31 +4,20 @@ require "hoe"
|
|
|
4
4
|
$:.unshift "lib" # to pick up lib/minitest/test_task.rb when minitest not installed
|
|
5
5
|
|
|
6
6
|
Hoe.plugin :seattlerb
|
|
7
|
+
Hoe.plugin :isolate
|
|
7
8
|
Hoe.plugin :rdoc
|
|
9
|
+
Hoe.plugin :cov
|
|
8
10
|
|
|
9
11
|
Hoe.spec "minitest" do
|
|
10
12
|
developer "Ryan Davis", "ryand-ruby@zenspider.com"
|
|
11
13
|
|
|
12
14
|
license "MIT"
|
|
13
15
|
|
|
14
|
-
require_ruby_version ">= 3.
|
|
16
|
+
require_ruby_version ">= 3.2"
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
NOTE: minitest 5 will be the last in the minitest family to support
|
|
18
|
-
ruby 1.8 to 2.7. If you need to keep using these versions,
|
|
19
|
-
you need to pin your dependency to minitest with something
|
|
20
|
-
like "~> 5.0". See History.rdoc to locate compatible
|
|
21
|
-
versions.
|
|
18
|
+
dependency "prism", "~> 1.5"
|
|
22
19
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
+ MiniTest (it's been Minitest for >10 years)
|
|
26
|
-
+ MiniTest::Unit
|
|
27
|
-
+ MiniTest::Unit::TestCase
|
|
28
|
-
+ assert_send (unless you argue for it well)
|
|
29
|
-
+ assert_equal nil, obj
|
|
30
|
-
+ mocks and stubs: moving minitest/mock.rb to its own gem
|
|
31
|
-
EOM
|
|
20
|
+
self.cov_filter = %w[ tmp ]
|
|
32
21
|
end
|
|
33
22
|
|
|
34
23
|
desc "Find missing expectations"
|
data/bin/minitest
ADDED
data/lib/minitest/assertions.rb
CHANGED
|
@@ -186,9 +186,8 @@ module Minitest
|
|
|
186
186
|
# Fails unless +obj+ is empty.
|
|
187
187
|
|
|
188
188
|
def assert_empty obj, msg = nil
|
|
189
|
-
msg = message(msg) { "Expected #{mu_pp
|
|
190
|
-
|
|
191
|
-
assert obj.empty?, msg
|
|
189
|
+
msg = message(msg) { "Expected #{mu_pp(obj)} to be empty" }
|
|
190
|
+
assert_predicate obj, :empty?, msg
|
|
192
191
|
end
|
|
193
192
|
|
|
194
193
|
def _where # :nodoc:
|
|
@@ -196,14 +195,6 @@ module Minitest
|
|
|
196
195
|
.split(":in ", 2).first # clean up noise
|
|
197
196
|
end
|
|
198
197
|
|
|
199
|
-
def _caller_uplevel # :nodoc:
|
|
200
|
-
backtrace = caller
|
|
201
|
-
real_caller = Minitest.filter_backtrace(caller).first
|
|
202
|
-
backtrace.index(real_caller)
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
E = "" # :nodoc:
|
|
206
|
-
|
|
207
198
|
##
|
|
208
199
|
# Fails unless <tt>exp == act</tt> printing the difference between
|
|
209
200
|
# the two, if possible.
|
|
@@ -218,18 +209,11 @@ module Minitest
|
|
|
218
209
|
# See also: Minitest::Assertions.diff
|
|
219
210
|
|
|
220
211
|
def assert_equal exp, act, msg = nil
|
|
221
|
-
msg = message(msg,
|
|
222
|
-
result = assert exp == act, msg
|
|
212
|
+
msg = message(msg, nil) { diff exp, act }
|
|
223
213
|
|
|
224
|
-
if nil
|
|
225
|
-
if Minitest::VERSION >= "6" then
|
|
226
|
-
refute_nil exp, "Use assert_nil if expecting nil."
|
|
227
|
-
else
|
|
228
|
-
warn "DEPRECATED: Use assert_nil if expecting nil. This will fail in Minitest 6.", uplevel: _caller_uplevel
|
|
229
|
-
end
|
|
230
|
-
end
|
|
214
|
+
refute_nil exp, message { "Use assert_nil if expecting nil" } if exp.nil? # don't count
|
|
231
215
|
|
|
232
|
-
|
|
216
|
+
assert exp == act, msg
|
|
233
217
|
end
|
|
234
218
|
|
|
235
219
|
##
|
|
@@ -261,8 +245,7 @@ module Minitest
|
|
|
261
245
|
msg = message(msg) {
|
|
262
246
|
"Expected #{mu_pp collection} to include #{mu_pp obj}"
|
|
263
247
|
}
|
|
264
|
-
|
|
265
|
-
assert collection.include?(obj), msg
|
|
248
|
+
assert_operator collection, :include?, obj, msg
|
|
266
249
|
end
|
|
267
250
|
|
|
268
251
|
##
|
|
@@ -314,6 +297,7 @@ module Minitest
|
|
|
314
297
|
|
|
315
298
|
def assert_operator o1, op, o2 = UNDEFINED, msg = nil
|
|
316
299
|
return assert_predicate o1, op, msg if UNDEFINED == o2
|
|
300
|
+
assert_respond_to o1, op
|
|
317
301
|
msg = message(msg) { "Expected #{mu_pp o1} to be #{op} #{mu_pp o2}" }
|
|
318
302
|
assert o1.__send__(op, o2), msg
|
|
319
303
|
end
|
|
@@ -392,6 +376,7 @@ module Minitest
|
|
|
392
376
|
# str.must_be :empty?
|
|
393
377
|
|
|
394
378
|
def assert_predicate o1, op, msg = nil
|
|
379
|
+
assert_respond_to o1, op, include_all:true
|
|
395
380
|
msg = message(msg) { "Expected #{mu_pp o1} to be #{op}" }
|
|
396
381
|
assert o1.__send__(op), msg
|
|
397
382
|
end
|
|
@@ -451,9 +436,7 @@ module Minitest
|
|
|
451
436
|
# include_all defaults to false to match Object#respond_to?
|
|
452
437
|
|
|
453
438
|
def assert_respond_to obj, meth, msg = nil, include_all: false
|
|
454
|
-
msg = message(msg) {
|
|
455
|
-
"Expected #{mu_pp obj} (#{obj.class}) to respond to ##{meth}"
|
|
456
|
-
}
|
|
439
|
+
msg = message(msg) { "Expected #{mu_pp obj} (#{obj.class}) to respond to ##{meth}" }
|
|
457
440
|
assert obj.respond_to?(meth, include_all), msg
|
|
458
441
|
end
|
|
459
442
|
|
|
@@ -468,21 +451,6 @@ module Minitest
|
|
|
468
451
|
assert exp.equal?(act), msg
|
|
469
452
|
end
|
|
470
453
|
|
|
471
|
-
##
|
|
472
|
-
# +send_ary+ is a receiver, message and arguments.
|
|
473
|
-
#
|
|
474
|
-
# Fails unless the call returns a true value
|
|
475
|
-
|
|
476
|
-
def assert_send send_ary, m = nil
|
|
477
|
-
warn "DEPRECATED: assert_send.", uplevel: _caller_uplevel
|
|
478
|
-
|
|
479
|
-
recv, msg, *args = send_ary
|
|
480
|
-
m = message(m) {
|
|
481
|
-
"Expected #{mu_pp recv}.#{msg}(*#{mu_pp args}) to return true"
|
|
482
|
-
}
|
|
483
|
-
assert recv.__send__(msg, *args), m
|
|
484
|
-
end
|
|
485
|
-
|
|
486
454
|
##
|
|
487
455
|
# Fails if the block outputs anything to stderr or stdout.
|
|
488
456
|
#
|
|
@@ -627,13 +595,16 @@ module Minitest
|
|
|
627
595
|
end
|
|
628
596
|
|
|
629
597
|
##
|
|
630
|
-
# Returns a proc that
|
|
598
|
+
# Returns a proc that delays generation of an output message. If
|
|
599
|
+
# +msg+ is a proc (eg, from another +message+ call) return +msg+
|
|
600
|
+
# as-is. Otherwise, return a proc that will output +msg+ along
|
|
601
|
+
# with the value of the result of the block passed to +message+.
|
|
631
602
|
|
|
632
|
-
def message msg = nil, ending =
|
|
603
|
+
def message msg = nil, ending = ".", &default
|
|
604
|
+
return msg if Proc === msg
|
|
633
605
|
proc {
|
|
634
|
-
msg = msg.call.chomp(".") if Proc === msg
|
|
635
606
|
custom_message = "#{msg}.\n" unless msg.nil? or msg.to_s.empty?
|
|
636
|
-
"#{custom_message}#{default.call}#{ending
|
|
607
|
+
"#{custom_message}#{default.call}#{ending}"
|
|
637
608
|
}
|
|
638
609
|
end
|
|
639
610
|
|
|
@@ -657,8 +628,7 @@ module Minitest
|
|
|
657
628
|
|
|
658
629
|
def refute_empty obj, msg = nil
|
|
659
630
|
msg = message(msg) { "Expected #{mu_pp obj} to not be empty" }
|
|
660
|
-
|
|
661
|
-
refute obj.empty?, msg
|
|
631
|
+
refute_predicate obj, :empty?, msg
|
|
662
632
|
end
|
|
663
633
|
|
|
664
634
|
##
|
|
@@ -695,14 +665,11 @@ module Minitest
|
|
|
695
665
|
end
|
|
696
666
|
|
|
697
667
|
##
|
|
698
|
-
# Fails if +
|
|
668
|
+
# Fails if +obj+ includes +sub+.
|
|
699
669
|
|
|
700
|
-
def refute_includes
|
|
701
|
-
msg = message(msg) {
|
|
702
|
-
|
|
703
|
-
}
|
|
704
|
-
assert_respond_to collection, :include?
|
|
705
|
-
refute collection.include?(obj), msg
|
|
670
|
+
def refute_includes obj, sub, msg = nil
|
|
671
|
+
msg = message(msg) { "Expected #{mu_pp obj} to not include #{mu_pp sub}" }
|
|
672
|
+
refute_operator obj, :include?, sub, msg
|
|
706
673
|
end
|
|
707
674
|
|
|
708
675
|
##
|
|
@@ -728,9 +695,8 @@ module Minitest
|
|
|
728
695
|
|
|
729
696
|
def refute_match matcher, obj, msg = nil
|
|
730
697
|
msg = message(msg) { "Expected #{mu_pp matcher} to not match #{mu_pp obj}" }
|
|
731
|
-
assert_respond_to matcher, :=~
|
|
732
698
|
matcher = Regexp.new Regexp.escape matcher if String === matcher
|
|
733
|
-
|
|
699
|
+
refute_operator matcher, :=~, obj, msg
|
|
734
700
|
end
|
|
735
701
|
|
|
736
702
|
##
|
|
@@ -770,6 +736,7 @@ module Minitest
|
|
|
770
736
|
|
|
771
737
|
def refute_operator o1, op, o2 = UNDEFINED, msg = nil
|
|
772
738
|
return refute_predicate o1, op, msg if UNDEFINED == o2
|
|
739
|
+
assert_respond_to o1, op
|
|
773
740
|
msg = message(msg) { "Expected #{mu_pp o1} to not be #{op} #{mu_pp o2}" }
|
|
774
741
|
refute o1.__send__(op, o2), msg
|
|
775
742
|
end
|
|
@@ -792,6 +759,7 @@ module Minitest
|
|
|
792
759
|
# str.wont_be :empty?
|
|
793
760
|
|
|
794
761
|
def refute_predicate o1, op, msg = nil
|
|
762
|
+
assert_respond_to o1, op
|
|
795
763
|
msg = message(msg) { "Expected #{mu_pp o1} to not be #{op}" }
|
|
796
764
|
refute o1.__send__(op), msg
|
|
797
765
|
end
|