minitest 5.14.0 → 5.17.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0b1641b87002f1e0b64cc5e81815a6bdbd22e22fa25f54f80316fe009f5ad72
4
- data.tar.gz: d63d8373fa0888051f79d4ca405e267e97a5334ffb22aee248227e1485400af3
3
+ metadata.gz: 76379897c6c77174044638d17a95f50b1b2fddbfde053759d864d8b9b419984b
4
+ data.tar.gz: 7cdedb3e76825894a5577f2c639c541402e1955b1166221530e2937b6c605b81
5
5
  SHA512:
6
- metadata.gz: 76fa5340f5d7f9086b802c13440dad142be63e81d7874d4eb4ec42f60f4530038b74cac18830e2066c80572408f095b45c5639879a38790bacfd3c4a4e13730d
7
- data.tar.gz: 80e644aeb07febab6f16d32af2e8435045e415d86d145c37afba0a6f694cba304b934a1ff146186a34b108ae3039ff610318e585af6fd087b5b8143aa1f3808a
6
+ metadata.gz: 5bc0b4b036c2e07d3db6ace79c1d0e51d2aa5cac74a26174ec822f1f987882bffc0165650c86f168ee38b31e9f07d825730b20a1f13b704fc395a9a88a4d9060
7
+ data.tar.gz: e9bdf26bc5a327b72b7a1dbdf701f6cef70561b634a258f932c511f26e7f2886597a05cc4a964749ef16e32529ab6a0cb6d11601f2954c3830444d34c3fcb23b
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,117 @@
1
+ === 5.17.0 / 2022-12-31
2
+
3
+ * 1 minor enhancement:
4
+
5
+ * Refactor setup hooks into a SETUP_METHODS constant. (MSP-Greg)
6
+
7
+ * 3 bug fixes:
8
+
9
+ * Fix kwargs for Mock calls to delegator. (blowmage)
10
+ * Fix kwargs for expectations. (bobmazanec, blowmage)
11
+ * Remove check for .b method. (tenderlove)
12
+
13
+ === 5.16.3 / 2022-08-17
14
+
15
+ * 2 bug fixes:
16
+
17
+ * Fixed exception sanitization by removing TypeError restriction on rescue.
18
+ * Use A instead of deprecated TESTOPTS in rake test:slow. (davidstosik)
19
+
20
+ === 5.16.2 / 2022-07-03
21
+
22
+ * 4 bug fixes:
23
+
24
+ * Added MT_KWARGS_HACK kludge for stub to deal with ruby 2.7 kwargs nastiness. (tsugimoto)
25
+ * In #expect, pop Hash class from args if $MT_KWARGS_HACK. (casperisfine)
26
+ * In above scenario, set expected kwargs (as Objects) based on actual kwargs.
27
+ * Nuke ivars if exception fails to marshal twice (eg better_errors). (irphilli)
28
+
29
+ === 5.16.1 / 2022-06-20
30
+
31
+ * 2 bug fixes:
32
+
33
+ * Apparently adding real kwarg support to mocks/stubs broke some code. Fixed.
34
+ * Use `MT_KWARGS_HACK=1` to activate the kludgy kwargs support w/ caveats.
35
+ * Clarified some doco wrt the block on #stub.
36
+
37
+ === 5.16.0 / 2022-06-14
38
+
39
+ * 2 major enhancements:
40
+
41
+ * Added Minitest::TestTask.
42
+ * Dropping ruby 2.2 - 2.5. 2.6 is DTM soon too.
43
+
44
+ * 11 minor enhancements:
45
+
46
+ * Added --show-skips option to show skips at end of run but not require --verbose. (MSP-Greg)
47
+ * Added Minitest.seed, the random seed used by the run.
48
+ * Calling `srand Minitest.seed` before all shuffles to ensure determinism.
49
+ * Extended #stub to handle kwargs for both block and call args. (SampsonCrowley)
50
+ * Extended Mock#__call to display kwargs.
51
+ * Extended Mock#expect to record kwargs.
52
+ * Extended Mock#method_missing to take kwargs & compare them against expected.
53
+ * Mock#method_missing displays better errors on arity mismatch.
54
+ * Removed minor optimization removing empty suites before run.
55
+ * Simplified test randomization (test order will change even with fixed seed).
56
+ * assert_match now returns the MatchData on success. (Nakilon)
57
+
58
+ * 3 bug fixes:
59
+
60
+ * (Re)Fixed marshalling of exceptions, neutering them in 2 passes.
61
+ * Fixed more problems with rdoc.
62
+ * Had to patch up mock and stub to deal with <=2.7 kwargs oddities
63
+
64
+ === 5.15.0 / 2021-12-14
65
+
66
+ * 1 major enhancement:
67
+
68
+ * assert_throws returns the value returned, if any. (volmer)
69
+
70
+ * 3 minor enhancements:
71
+
72
+ * Added -S <CODES> option to skip reporting of certain types of output
73
+ * Enable Ruby deprecation warnings by default. (casperisfine)
74
+ * Use Etc.nprocessors by default in order to maximize cpu usage. (tonytonyjan)
75
+
76
+ * 6 bug fixes:
77
+
78
+ * Close then unlink tempfiles on Windows. (nobu)
79
+ * Fixed #skip_until for windows paths. (MSP-Greg)
80
+ * Fixed a bunch of tests for jruby and windows. (MSP-Greg)
81
+ * Fixed marshalling of specs if they error. (tenderlove, jeremyevans, et al)
82
+ * Updated deprecation message for block expectations. (blowmage)
83
+ * Use Kernel.warn directly in expectations in case CUT defines their own warn. (firien)
84
+
85
+ === 5.14.4 / 2021-02-23
86
+
87
+ * 1 bug fix:
88
+
89
+ * Fixed deprecation warning using stub with methods using keyword arguments. (Nakilon)
90
+
91
+ === 5.14.3 / 2021-01-05
92
+
93
+ * 1 bug fix:
94
+
95
+ * Bumped require_ruby_version to < 4 (trunk = 3.1).
96
+
97
+ === 5.14.2 / 2020-08-31
98
+
99
+ * 1 bug fix:
100
+
101
+ * Bumped ruby version to include 3.0 (trunk).
102
+
103
+ === 5.14.1 / 2020-05-15
104
+
105
+ * 3 minor enhancements:
106
+
107
+ * Minitest.filter_backtrace returns original backtrace if filter comes back empty.
108
+ * Minitest::BacktraceFilter now returns entire backtrace if $MT_DEBUG set in env.
109
+ * Return true on a successful refute. (jusleg)
110
+
111
+ * 1 bug fix:
112
+
113
+ * Fixed expectation doco to not use global expectations.
114
+
1
115
  === 5.14.0 / 2020-01-11
2
116
 
3
117
  * 2 minor enhancements:
@@ -193,7 +307,7 @@
193
307
  * 2 bug fixes:
194
308
 
195
309
  * Re-release to refresh gem certificate signing. ugh.
196
- * Fixed hoe/minitest to not augment load path if we're actually testing minitest.
310
+ * Fixed hoe/minitest to not augment load path if we're actually testing minitest.
197
311
 
198
312
  === 5.9.0 / 2016-05-16
199
313
 
@@ -217,7 +331,7 @@
217
331
  * 2 bug fixes:
218
332
 
219
333
  * Re-release to refresh gem certificate signing. ugh.
220
- * Fixed hoe/minitest to not augment load path if we're actually testing minitest.
334
+ * Fixed hoe/minitest to not augment load path if we're actually testing minitest.
221
335
 
222
336
  === 5.8.4 / 2016-01-21
223
337
 
@@ -531,7 +645,7 @@ Minitest 5:
531
645
  * Added Minitest::Benchmark.
532
646
  * Your benchmarks need to move to their own subclass.
533
647
  * Benchmarks using the spec DSL have to have "Bench" somewhere in their describe.
534
- * MiniTest::Unit.after_tests moved to Minitest.after_tests
648
+ * MiniTest::Unit.after_tests moved to Minitest.after_run
535
649
  * MiniTest::Unit.autorun is now Minitest.autorun. Just require minitest/autorun pls.
536
650
  * Removed ParallelEach#grep since it isn't used anywhere.
537
651
  * Renamed Runnable#__name__ to Runnable#name (but uses @NAME internally).
@@ -1377,4 +1491,3 @@ back.
1377
1491
  * 1 major enhancement
1378
1492
 
1379
1493
  * Birthday!
1380
-
data/Manifest.txt CHANGED
@@ -17,6 +17,7 @@ lib/minitest/pride.rb
17
17
  lib/minitest/pride_plugin.rb
18
18
  lib/minitest/spec.rb
19
19
  lib/minitest/test.rb
20
+ lib/minitest/test_task.rb
20
21
  lib/minitest/unit.rb
21
22
  test/minitest/metametameta.rb
22
23
  test/minitest/test_minitest_assertions.rb
@@ -25,3 +26,4 @@ test/minitest/test_minitest_mock.rb
25
26
  test/minitest/test_minitest_reporter.rb
26
27
  test/minitest/test_minitest_spec.rb
27
28
  test/minitest/test_minitest_test.rb
29
+ test/minitest/test_minitest_test_task.rb
data/README.rdoc CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  home :: https://github.com/seattlerb/minitest
4
4
  bugs :: https://github.com/seattlerb/minitest/issues
5
- rdoc :: http://docs.seattlerb.org/minitest
5
+ rdoc :: https://docs.seattlerb.org/minitest
6
6
  vim :: https://github.com/sunaku/vim-ruby-minitest
7
7
  emacs:: https://github.com/arthurnn/minitest-emacs
8
8
 
@@ -70,6 +70,7 @@ extract-method refactorings still apply.
70
70
  * minitest/mock - a simple and clean mock/stub system.
71
71
  * minitest/benchmark - an awesome way to assert your algorithm's performance.
72
72
  * minitest/pride - show your pride in testing!
73
+ * minitest/test_task - a full-featured and clean rake task generator.
73
74
  * Incredibly small and fast runner, but no bells and whistles.
74
75
  * Written by squishy human beings. Software can never be perfect. We will all eventually die.
75
76
 
@@ -186,7 +187,7 @@ Output is tab-delimited to make it easy to paste into a spreadsheet.
186
187
  === Mocks
187
188
 
188
189
  Mocks and stubs defined using terminology by Fowler & Meszaros at
189
- http://www.martinfowler.com/bliki/TestDouble.html:
190
+ https://www.martinfowler.com/bliki/TestDouble.html:
190
191
 
191
192
  "Mocks are pre-programmed with expectations which form a specification
192
193
  of the calls they are expected to receive. They can throw an exception
@@ -237,7 +238,7 @@ an example of asserting that code inside a thread is run:
237
238
  === Stubs
238
239
 
239
240
  Mocks and stubs are defined using terminology by Fowler & Meszaros at
240
- http://www.martinfowler.com/bliki/TestDouble.html:
241
+ https://www.martinfowler.com/bliki/TestDouble.html:
241
242
 
242
243
  "Stubs provide canned answers to calls made during the test".
243
244
 
@@ -264,9 +265,8 @@ new non-existing method:
264
265
 
265
266
  === Running Your Tests
266
267
 
267
- Ideally, you'll use a rake task to run your tests, either piecemeal or
268
- all at once. Both rake and rails ship with rake tasks for running your
269
- tests. BUT! You don't have to:
268
+ Ideally, you'll use a rake task to run your tests (see below), either
269
+ piecemeal or all at once. BUT! You don't have to:
270
270
 
271
271
  % ruby -Ilib:test test/minitest/test_minitest_test.rb
272
272
  Run options: --seed 37685
@@ -294,18 +294,45 @@ provided via plugins. To see them, simply run with +--help+:
294
294
  -p, --pride Pride. Show your testing pride!
295
295
  -a, --autotest Connect to autotest server.
296
296
 
297
+ === Rake Tasks
298
+
297
299
  You can set up a rake task to run all your tests by adding this to your Rakefile:
298
300
 
299
- require "rake/testtask"
301
+ require "minitest/test_task"
302
+
303
+ Minitest::TestTask.create # named test, sensible defaults
304
+
305
+ # or more explicitly:
300
306
 
301
- Rake::TestTask.new(:test) do |t|
307
+ Minitest::TestTask.create(:test) do |t|
302
308
  t.libs << "test"
303
309
  t.libs << "lib"
304
- t.test_files = FileList["test/**/test_*.rb"]
310
+ t.warning = false
311
+ t.test_globs = ["test/**/*_test.rb"]
305
312
  end
306
313
 
307
314
  task :default => :test
308
315
 
316
+ Each of these will generate 4 tasks:
317
+
318
+ rake test :: Run the test suite.
319
+ rake test:cmd :: Print out the test command.
320
+ rake test:isolated :: Show which test files fail when run separately.
321
+ rake test:slow :: Show bottom 25 tests sorted by time.
322
+
323
+ === Rake Task Variables
324
+
325
+ There are a bunch of variables you can supply to rake to modify the run.
326
+
327
+ MT_LIB_EXTRAS :: Extra libs to dynamically override/inject for custom runs.
328
+ N :: -n: Tests to run (string or /regexp/).
329
+ X :: -x: Tests to exclude (string or /regexp/).
330
+ A :: Any extra arguments. Honors shell quoting.
331
+ MT_CPU :: How many threads to use for parallel test runs
332
+ SEED :: -s --seed Sets random seed.
333
+ TESTOPTS :: Deprecated, same as A
334
+ FILTER :: Deprecated, same as A
335
+
309
336
  == Writing Extensions
310
337
 
311
338
  To define a plugin, add a file named minitest/XXX_plugin.rb to your
@@ -376,6 +403,39 @@ Using our example above, here is how we might implement MyCI:
376
403
 
377
404
  == FAQ
378
405
 
406
+ === What versions are compatible with what? Or what versions are supported?
407
+
408
+ Minitest is a dependency of rails, which until fairly recently had an
409
+ overzealous backwards compatibility policy. As such, I'm stuck
410
+ supporting versions of ruby that are long past EOL. Hopefully I'll be
411
+ able to support only current versions of ruby sometime in the near
412
+ future.
413
+
414
+ (As of 2022-11-29)
415
+
416
+ Current versions of rails: (https://endoflife.date/rails)
417
+
418
+ | rails | min ruby | rec ruby | minitest | status | EOL Date |
419
+ |-------+----------+----------+----------+----------+------------|
420
+ | 7.0 | >= 2.7 | 3.1 | >= 5.1 | Current | 2025-06-01?|
421
+ | 6.1 | >= 2.5 | 3.0 | >= 5.1 | Maint | 2024-06-01?|
422
+ | 6.0 | >= 2.5 | 2.6 | >= 5.1 | Security | 2023-06-01 |
423
+ | 5.2 | >= 2.2.2 | 2.5 | ~> 5.1 | EOL | 2022-06-01 |
424
+
425
+ Current versions of ruby: (https://endoflife.date/ruby)
426
+
427
+ | ruby | Status | EOL Date |
428
+ |------+---------+------------|
429
+ | 3.1 | Current | 2025-12-25 |
430
+ | 3.0 | Maint | 2024-03-31 |
431
+ | 2.7 | Maint* | 2023-03-31 |
432
+ | 2.6 | EOL | 2022-03-31 |
433
+ | 2.5 | EOL | 2021-03-31 |
434
+
435
+ See also:
436
+
437
+ * https://www.fastruby.io/blog/ruby/rails/versions/compatibility-table.html
438
+
379
439
  === How to test SimpleDelegates?
380
440
 
381
441
  The following implementation and test:
@@ -578,6 +638,7 @@ minitest-capistrano :: Assertions and expectations for testing
578
638
  Capistrano recipes.
579
639
  minitest-capybara :: Capybara matchers support for minitest unit and
580
640
  spec.
641
+ minitest-cc :: It provides minimal information about code coverage.
581
642
  minitest-chef-handler :: Run Minitest suites as Chef report handlers
582
643
  minitest-ci :: CI reporter plugin for Minitest.
583
644
  minitest-context :: Defines contexts for code reuse in Minitest
@@ -611,6 +672,7 @@ minitest-growl :: Test notifier for minitest via growl.
611
672
  minitest-happy :: GLOBALLY ACTIVATE MINITEST PRIDE! RAWR!
612
673
  minitest-have_tag :: Adds Minitest assertions to test for the existence of
613
674
  HTML tags, including contents, within a provided string.
675
+ minitest-heat :: Reporting that builds a heat map of failure locations
614
676
  minitest-hooks :: Around and before_all/after_all/around_all hooks
615
677
  minitest-hyper :: Pretty, single-page HTML reports for your Minitest runs
616
678
  minitest-implicit-subject :: Implicit declaration of the test subject.
@@ -675,7 +737,7 @@ minitest-stub-const :: Stub constants for the duration of a block.
675
737
  minitest-tags :: Add tags for minitest.
676
738
  minitest-unordered :: Adds a new assertion to minitest for checking the
677
739
  contents of a collection, ignoring element order.
678
- minitest-vcr :: Automatic cassette managment with Minitest::Spec
740
+ minitest-vcr :: Automatic cassette management with Minitest::Spec
679
741
  and VCR.
680
742
  minitest_log :: Adds structured logging, data explication, and verdicts.
681
743
  minitest_owrapper :: Get tests results as a TestResult object.
@@ -685,8 +747,13 @@ mongoid-minitest :: Minitest matchers for Mongoid.
685
747
  mutant-minitest :: Minitest integration for mutant.
686
748
  pry-rescue :: A pry plugin w/ minitest support. See
687
749
  pry-rescue/minitest.rb.
750
+ rematch :: Declutter your test files from large hardcoded data
751
+ and update them automatically when your code changes.
688
752
  rspec2minitest :: Easily translate any RSpec matchers to Minitest
689
753
  assertions and expectations.
754
+ stubberry :: Multiple stubbing 'berries', sweet and useful
755
+ stub helpers and assertions. ( stub_must,
756
+ assert_method_called, stubbing ORM objects by id )
690
757
 
691
758
  == Unknown Extensions:
692
759
 
@@ -712,7 +779,7 @@ Authors... Please send me a pull request with a description of your minitest ext
712
779
 
713
780
  == Minitest related goods
714
781
 
715
- * minitest/pride fabric: http://www.spoonflower.com/fabric/3928730-again-by-katie_allen
782
+ * minitest/pride fabric: https://www.spoonflower.com/fabric/3928730-again-by-katie_allen
716
783
 
717
784
  == REQUIREMENTS:
718
785
 
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ Hoe.spec "minitest" do
11
11
 
12
12
  license "MIT"
13
13
 
14
- require_ruby_version "~> 2.2"
14
+ require_ruby_version [">= 2.6", "< 4.0"]
15
15
  end
16
16
 
17
17
  desc "Find missing expectations"
@@ -21,7 +21,7 @@ task :specs do
21
21
  require "minitest/spec"
22
22
 
23
23
  pos_prefix, neg_prefix = "must", "wont"
24
- skip_re = /^(must|wont)$|wont_(throw)|must_(block|not?_|nothing|raise$)/x
24
+ skip_re = /^(must|wont)$|wont_(throw)|must_(block|not?_|nothing|send|raise$)/x
25
25
  dont_flip_re = /(must|wont)_(include|respond_to)/
26
26
 
27
27
  map = {
@@ -32,6 +32,8 @@ task :specs do
32
32
  /_includes/ => "_include",
33
33
  /(must|wont)_(.*_of|nil|silent|empty)/ => '\1_be_\2',
34
34
  /must_raises/ => "must_raise",
35
+ /(must|wont)_predicate/ => '\1_be',
36
+ /(must|wont)_path_exists/ => 'path_\1_exist',
35
37
  }
36
38
 
37
39
  expectations = Minitest::Expectations.public_instance_methods.map(&:to_s)
data/lib/hoe/minitest.rb CHANGED
@@ -24,9 +24,5 @@ module Hoe::Minitest
24
24
 
25
25
  def define_minitest_tasks
26
26
  self.testlib = :minitest
27
-
28
- # make sure we use the gemmed minitest on 1.9
29
- self.test_prelude = 'gem "minitest"' unless
30
- minitest? or ENV["MT_NO_ISOLATE"]
31
27
  end
32
28
  end
@@ -293,6 +293,8 @@ module Minitest
293
293
  assert_respond_to matcher, :"=~"
294
294
  matcher = Regexp.new Regexp.escape matcher if String === matcher
295
295
  assert matcher =~ obj, msg
296
+
297
+ Regexp.last_match
296
298
  end
297
299
 
298
300
  ##
@@ -473,7 +475,7 @@ module Minitest
473
475
  def assert_throws sym, msg = nil
474
476
  default = "Expected #{mu_pp(sym)} to have been thrown"
475
477
  caught = true
476
- catch(sym) do
478
+ value = catch(sym) do
477
479
  begin
478
480
  yield
479
481
  rescue ThreadError => e # wtf?!? 1.8 + threads == suck
@@ -489,6 +491,7 @@ module Minitest
489
491
  end
490
492
 
491
493
  assert caught, message(msg) { default }
494
+ value
492
495
  rescue Assertion
493
496
  raise
494
497
  rescue => e
@@ -561,15 +564,13 @@ module Minitest
561
564
 
562
565
  return captured_stdout.read, captured_stderr.read
563
566
  ensure
564
- captured_stdout.unlink
565
- captured_stderr.unlink
566
567
  $stdout.reopen orig_stdout
567
568
  $stderr.reopen orig_stderr
568
569
 
569
570
  orig_stdout.close
570
571
  orig_stderr.close
571
- captured_stdout.close
572
- captured_stderr.close
572
+ captured_stdout.close!
573
+ captured_stderr.close!
573
574
  end
574
575
  end
575
576
  end
@@ -628,7 +629,7 @@ module Minitest
628
629
 
629
630
  def refute test, msg = nil
630
631
  msg ||= message { "Expected #{mu_pp(test)} to not be truthy" }
631
- not assert !test, msg
632
+ assert !test, msg
632
633
  end
633
634
 
634
635
  ##
@@ -793,7 +794,7 @@ module Minitest
793
794
 
794
795
  def skip_until y,m,d,msg
795
796
  skip msg if Time.now < Time.local(y, m, d)
796
- where = caller.first.split(/:/, 3).first(2).join ":"
797
+ where = caller.first.rpartition(':in').reject(&:empty?).first
797
798
  warn "Stale skip_until %p at %s" % [msg, where]
798
799
  end
799
800
 
@@ -217,7 +217,7 @@ module Minitest
217
217
  ##
218
218
  # Takes an array of x/y pairs and calculates the general R^2 value.
219
219
  #
220
- # See: http://en.wikipedia.org/wiki/Coefficient_of_determination
220
+ # See: https://en.wikipedia.org/wiki/Coefficient_of_determination
221
221
 
222
222
  def fit_error xys
223
223
  y_bar = sigma(xys) { |_, y| y } / xys.size.to_f
@@ -232,7 +232,7 @@ module Minitest
232
232
  #
233
233
  # Takes x and y values and returns [a, b, r^2].
234
234
  #
235
- # See: http://mathworld.wolfram.com/LeastSquaresFittingExponential.html
235
+ # See: https://mathworld.wolfram.com/LeastSquaresFittingExponential.html
236
236
 
237
237
  def fit_exponential xs, ys
238
238
  n = xs.size
@@ -254,7 +254,7 @@ module Minitest
254
254
  #
255
255
  # Takes x and y values and returns [a, b, r^2].
256
256
  #
257
- # See: http://mathworld.wolfram.com/LeastSquaresFittingLogarithmic.html
257
+ # See: https://mathworld.wolfram.com/LeastSquaresFittingLogarithmic.html
258
258
 
259
259
  def fit_logarithmic xs, ys
260
260
  n = xs.size
@@ -276,7 +276,7 @@ module Minitest
276
276
  #
277
277
  # Takes x and y values and returns [a, b, r^2].
278
278
  #
279
- # See: http://mathworld.wolfram.com/LeastSquaresFitting.html
279
+ # See: https://mathworld.wolfram.com/LeastSquaresFitting.html
280
280
 
281
281
  def fit_linear xs, ys
282
282
  n = xs.size
@@ -298,7 +298,7 @@ module Minitest
298
298
  #
299
299
  # Takes x and y values and returns [a, b, r^2].
300
300
  #
301
- # See: http://mathworld.wolfram.com/LeastSquaresFittingPowerLaw.html
301
+ # See: https://mathworld.wolfram.com/LeastSquaresFittingPowerLaw.html
302
302
 
303
303
  def fit_power xs, ys
304
304
  n = xs.size