minitest 5.11.1 → 5.12.2

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
- SHA1:
3
- metadata.gz: 4532535af505aea7a24c6a12ed614dc4daac90f7
4
- data.tar.gz: f046da3055edc520f92fd89a7337d14073068100
2
+ SHA256:
3
+ metadata.gz: b2641be64df14346ec6637e9fa14064f8f52935d4f3c67acf11bc4e2d3b95986
4
+ data.tar.gz: 9c9c1be3371b73c68ebfda92173d5c468d584e0cd4e405329453027397a651f7
5
5
  SHA512:
6
- metadata.gz: fa14c057616423821c8e5afeaf80068fdb63f0e596c85dae9dbe64c307269c08e10a126db0807eb2a0077ed9b2886ceae264aeb4beb213fa6efbaed25ea69312
7
- data.tar.gz: f810e3d8ffab481cf3fe9720735eaf44a099b824a591fc510bde5c204ad27242bf784850cef9b2cf5f9d4f879ffa40834a243d1eb1cb04d5a9a3091b2c50402f
6
+ metadata.gz: e04d9e566ec0d8175bb18cee72a44bee41f363fa4dea11d8b14e6373ae4ef489d3ee01fd8308cb9ba7b710d75e25d13650cd452a61017e151ce7616bebb6bd93
7
+ data.tar.gz: 3d324b4e1c1fc3ba294fd6806a3069df391a950b1594b27110accc0d0afe069d1b9555760555372bb597f0f6e99afbe9cc71bd2a049d1a74f7e9f385f4bc7322
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,57 @@
1
+ === 5.12.2 / 2019-09-28
2
+
3
+ * 1 bug fix:
4
+
5
+ * After chatting w/ @y-yagi and others, decided to lower support to include ruby 2.2.
6
+
7
+ === 5.12.1 / 2019-09-28
8
+
9
+ * 1 minor enhancement:
10
+
11
+ * Added documentation for Reporter classes. (sshaw)
12
+
13
+ * 3 bug fixes:
14
+
15
+ * Avoid using 'match?' to support older ruby versions. (y-yagi)
16
+ * Fixed broken link to reference on goodness-of-fit testing. (havenwood)
17
+ * Update requirements in readme and Rakefile/hoe spec.
18
+
19
+ === 5.12.0 / 2019-09-22
20
+
21
+ * 8 minor enhancements:
22
+
23
+ * Added a descriptive error if assert_output or assert_raises called without a block. (okuramasafumi)
24
+ * Changed mu_pp_for_diff to make having both \n and \\n easier to debug.
25
+ * Deprecated $N for specifying number of parallel test runners. Use MT_CPU.
26
+ * Deprecated use of global expectations. To be removed from MT6.
27
+ * Extended Assertions#mu_pp to encoding validity output for strings to improve diffs.
28
+ * Extended Assertions#mu_pp to output encoding and validity if invalid to improve diffs.
29
+ * Extended Assertions#mu_pp_for_diff to make escaped newlines more obvious in diffs.
30
+ * Fail gracefully when expectation used outside of `it`.
31
+
32
+ * 3 bug fixes:
33
+
34
+ * Check `option[:filter]` klass before match. Fixes 2.6 warning. (y-yagi)
35
+ * Fixed Assertions#diff from recalculating if set to nil
36
+ * Fixed spec section of readme to not use deprecated global expectations. (CheezItMan)
37
+
38
+ === 5.11.3 / 2018-01-26
39
+
40
+ * 1 bug fix:
41
+
42
+ * Pushed #error? up to Reportable module. (composerinteralia)
43
+
44
+ === 5.11.2 / 2018-01-25
45
+
46
+ * 1 minor enhancement:
47
+
48
+ * Reversed Test < Result. Back to < Runnable and using Reportable for shared code.
49
+
50
+ * 2 bug fixes:
51
+
52
+ * Fixed Result#location for instances of Test. (alexisbernard)
53
+ * Fixed deprecation message for Runnable#marshal_dump. (y-yagi)
54
+
1
55
  === 5.11.1 / 2018-01-02
2
56
 
3
57
  * 1 bug fix:
@@ -19,6 +19,7 @@ lib/minitest/spec.rb
19
19
  lib/minitest/test.rb
20
20
  lib/minitest/unit.rb
21
21
  test/minitest/metametameta.rb
22
+ test/minitest/test_minitest_assertions.rb
22
23
  test/minitest/test_minitest_benchmark.rb
23
24
  test/minitest/test_minitest_mock.rb
24
25
  test/minitest/test_minitest_reporter.rb
@@ -126,13 +126,13 @@ Define your tests as methods beginning with +test_+.
126
126
 
127
127
  describe "when asked about cheeseburgers" do
128
128
  it "must respond positively" do
129
- @meme.i_can_has_cheezburger?.must_equal "OHAI!"
129
+ _(@meme.i_can_has_cheezburger?).must_equal "OHAI!"
130
130
  end
131
131
  end
132
132
 
133
133
  describe "when asked about blending possibilities" do
134
134
  it "won't say no" do
135
- @meme.will_it_blend?.wont_match /^no/i
135
+ _(@meme.will_it_blend?).wont_match /^no/i
136
136
  end
137
137
  end
138
138
  end
@@ -220,9 +220,9 @@ verification to ensure they got all the calls they were expecting."
220
220
  end
221
221
  end
222
222
 
223
- **Multi-threading and Mocks**
223
+ ==== Multi-threading and Mocks
224
224
 
225
- Minitest mocks do not support multi-threading if it works, fine, if it doesn't
225
+ Minitest mocks do not support multi-threading. If it works, fine, if it doesn't
226
226
  you can use regular ruby patterns and facilities like local variables. Here's
227
227
  an example of asserting that code inside a thread is run:
228
228
 
@@ -294,6 +294,18 @@ 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
+ You can set up a rake task to run all your tests by adding this to your Rakefile:
298
+
299
+ require "rake/testtask"
300
+
301
+ Rake::TestTask.new(:test) do |t|
302
+ t.libs << "test"
303
+ t.libs << "lib"
304
+ t.test_files = FileList["test/**/test_*.rb"]
305
+ end
306
+
307
+ task :default => :test
308
+
297
309
  == Writing Extensions
298
310
 
299
311
  To define a plugin, add a file named minitest/XXX_plugin.rb to your
@@ -379,7 +391,7 @@ The following implementation and test:
379
391
  end
380
392
 
381
393
  it "must respond to work" do
382
- @worker.must_respond_to :work
394
+ _(@worker).must_respond_to :work
383
395
  end
384
396
  end
385
397
 
@@ -469,6 +481,8 @@ able to require minitest and run your tests.
469
481
 
470
482
  == Developing Minitest:
471
483
 
484
+ Minitest requires {Hoe}[https://rubygems.org/gems/hoe].
485
+
472
486
  === Minitest's own tests require UTF-8 external encoding.
473
487
 
474
488
  This is a common problem in Windows, where the default external Encoding is
@@ -547,6 +561,7 @@ minispec-metadata :: Metadata for describe/it blocks & CLI tag filter.
547
561
  E.g. <tt>it "requires JS driver", js: true do</tt> &
548
562
  <tt>ruby test.rb --tag js</tt> runs tests tagged :js.
549
563
  minispec-rails :: Minimal support to use Spec style in Rails 5+.
564
+ mini-apivore :: for swagger based automated API testing.
550
565
  minitest-around :: Around block for minitest. An alternative to
551
566
  setup/teardown dance.
552
567
  minitest-assert_errors :: Adds Minitest assertions to test for errors raised
@@ -589,6 +604,7 @@ minitest-firemock :: Makes your Minitest mocks more resilient.
589
604
  minitest-focus :: Focus on one test at a time.
590
605
  minitest-gcstats :: A minitest plugin that adds a report of the top
591
606
  tests by number of objects allocated.
607
+ minitest-global_expectations:: Support minitest expectation methods for all objects
592
608
  minitest-great_expectations :: Generally useful additions to minitest's
593
609
  assertions and expectations.
594
610
  minitest-growl :: Test notifier for minitest via growl.
@@ -615,6 +631,7 @@ minitest-matchers :: Adds support for RSpec-style matchers to
615
631
  minitest-matchers_vaccine :: Adds assertions that adhere to the matcher spec,
616
632
  but without any expectation infections.
617
633
  minitest-metadata :: Annotate tests with metadata (key-value).
634
+ minitest-mock_expectations :: Provides method call assertions for minitest.
618
635
  minitest-mongoid :: Mongoid assertion matchers for Minitest.
619
636
  minitest-must_not :: Provides must_not as an alias for wont in
620
637
  Minitest.
@@ -664,6 +681,7 @@ minitest_owrapper :: Get tests results as a TestResult object.
664
681
  minitest_should :: Shoulda style syntax for minitest test::unit.
665
682
  minitest_tu_shim :: Bridges between test/unit and minitest.
666
683
  mongoid-minitest :: Minitest matchers for Mongoid.
684
+ mutant-minitest :: Minitest integration for mutant.
667
685
  pry-rescue :: A pry plugin w/ minitest support. See
668
686
  pry-rescue/minitest.rb.
669
687
  rspec2minitest :: Easily translate any RSpec matchers to Minitest
@@ -697,8 +715,7 @@ Authors... Please send me a pull request with a description of your minitest ext
697
715
 
698
716
  == REQUIREMENTS:
699
717
 
700
- * Ruby 1.8.7+. No magic is involved. I hope.
701
- * NOTE: 1.8 and 1.9 will be dropped in minitest 6+.
718
+ * Ruby 2.3+. No magic is involved. I hope.
702
719
 
703
720
  == INSTALL:
704
721
 
data/Rakefile CHANGED
@@ -11,21 +11,7 @@ Hoe.spec "minitest" do
11
11
 
12
12
  license "MIT"
13
13
 
14
- ## TODO: uncomment this on the last point release on 5.x
15
- #
16
- # self.post_install_message = <<-"EOM"
17
- # NOTE: minitest 5 will be the last in the minitest family to support
18
- # ruby 1.8 and 1.9 (and maybe 2.0?). If you need to keep using 1.8
19
- # or 1.9, you need to pin your dependency to minitest with
20
- # something like "~> 5.0".
21
- #
22
- # Further, minitest 6 will be dropping the following:
23
- #
24
- # + MiniTest (it's been Minitest for *years*)
25
- # + MiniTest::Unit
26
- # + MiniTest::Unit::TestCase
27
- # + assert_send (unless you argue for it well)
28
- # EOM
14
+ require_ruby_version "~> 2.2"
29
15
  end
30
16
 
31
17
  desc "Find missing expectations"
@@ -8,7 +8,7 @@ require "stringio"
8
8
  # :include: README.rdoc
9
9
 
10
10
  module Minitest
11
- VERSION = "5.11.1" # :nodoc:
11
+ VERSION = "5.12.2" # :nodoc:
12
12
  ENCS = "".respond_to? :encoding # :nodoc:
13
13
 
14
14
  @@installed_at_exit ||= false
@@ -21,7 +21,10 @@ module Minitest
21
21
  # Parallel test executor
22
22
 
23
23
  mc.send :attr_accessor, :parallel_executor
24
- self.parallel_executor = Parallel::Executor.new((ENV["N"] || 2).to_i)
24
+
25
+ warn "DEPRECATED: use MT_CPU instead of N for parallel test runs" if ENV["N"]
26
+ n_threads = (ENV["MT_CPU"] || ENV["N"] || 2).to_i
27
+ self.parallel_executor = Parallel::Executor.new n_threads
25
28
 
26
29
  ##
27
30
  # Filter object for backtraces.
@@ -301,7 +304,7 @@ module Minitest
301
304
 
302
305
  def self.run reporter, options = {}
303
306
  filter = options[:filter] || "/./"
304
- filter = Regexp.new $1 if filter =~ %r%/(.*)/%
307
+ filter = Regexp.new $1 if filter.is_a?(String) && filter =~ %r%/(.*)/%
305
308
 
306
309
  filtered_methods = self.runnable_methods.find_all { |m|
307
310
  filter === m || filter === "#{self}##{m}"
@@ -381,7 +384,7 @@ module Minitest
381
384
 
382
385
  def marshal_dump # :nodoc:
383
386
  unless @@marshal_dump_warned then
384
- warn ["Minitest::Test#marshal_dump is deprecated.",
387
+ warn ["Minitest::Runnable#marshal_dump is deprecated.",
385
388
  "You might be violating internals. From", caller.first].join " "
386
389
  @@marshal_dump_warned = true
387
390
  end
@@ -422,7 +425,8 @@ module Minitest
422
425
 
423
426
  ##
424
427
  # Returns a single character string to print based on the result
425
- # of the run. Eg ".", "F", or "E".
428
+ # of the run. One of <tt>"."</tt>, <tt>"F"</tt>,
429
+ # <tt>"E"</tt> or <tt>"S"</tt>.
426
430
 
427
431
  def result_code
428
432
  raise NotImplementedError, "subclass responsibility"
@@ -436,6 +440,56 @@ module Minitest
436
440
  end
437
441
  end
438
442
 
443
+ ##
444
+ # Shared code for anything that can get passed to a Reporter. See
445
+ # Minitest::Test & Minitest::Result.
446
+
447
+ module Reportable
448
+ ##
449
+ # Did this run pass?
450
+ #
451
+ # Note: skipped runs are not considered passing, but they don't
452
+ # cause the process to exit non-zero.
453
+
454
+ def passed?
455
+ not self.failure
456
+ end
457
+
458
+ ##
459
+ # The location identifier of this test. Depends on a method
460
+ # existing called class_name.
461
+
462
+ def location
463
+ loc = " [#{self.failure.location}]" unless passed? or error?
464
+ "#{self.class_name}##{self.name}#{loc}"
465
+ end
466
+
467
+ def class_name # :nodoc:
468
+ raise NotImplementedError, "subclass responsibility"
469
+ end
470
+
471
+ ##
472
+ # Returns ".", "F", or "E" based on the result of the run.
473
+
474
+ def result_code
475
+ self.failure and self.failure.result_code or "."
476
+ end
477
+
478
+ ##
479
+ # Was this run skipped?
480
+
481
+ def skipped?
482
+ self.failure and Skip === self.failure
483
+ end
484
+
485
+ ##
486
+ # Did this run error?
487
+
488
+ def error?
489
+ self.failures.any? { |f| UnexpectedError === f }
490
+ end
491
+ end
492
+
439
493
  ##
440
494
  # This represents a test result in a clean way that can be
441
495
  # marshalled over a wire. Tests can do anything they want to the
@@ -444,6 +498,8 @@ module Minitest
444
498
  # that the test result can be marshalled.
445
499
 
446
500
  class Result < Runnable
501
+ include Minitest::Reportable
502
+
447
503
  undef_method :marshal_dump
448
504
  undef_method :marshal_load
449
505
 
@@ -474,43 +530,8 @@ module Minitest
474
530
  r
475
531
  end
476
532
 
477
- ##
478
- # Did this run error?
479
-
480
- def error?
481
- self.failures.any? { |f| UnexpectedError === f }
482
- end
483
-
484
- ##
485
- # The location identifier of this test.
486
-
487
- def location
488
- loc = " [#{self.failure.location}]" unless passed? or error?
489
- "#{self.klass}##{self.name}#{loc}"
490
- end
491
-
492
- ##
493
- # Did this run pass?
494
- #
495
- # Note: skipped runs are not considered passing, but they don't
496
- # cause the process to exit non-zero.
497
-
498
- def passed?
499
- not self.failure
500
- end
501
-
502
- ##
503
- # Returns ".", "F", or "E" based on the result of the run.
504
-
505
- def result_code
506
- self.failure and self.failure.result_code or "."
507
- end
508
-
509
- ##
510
- # Was this run skipped?
511
-
512
- def skipped?
513
- self.failure and Skip === self.failure
533
+ def class_name # :nodoc:
534
+ self.klass # for Minitest::Reportable
514
535
  end
515
536
 
516
537
  def to_s # :nodoc:
@@ -543,8 +564,10 @@ module Minitest
543
564
  end
544
565
 
545
566
  ##
546
- # Record a result and output the Runnable#result_code. Stores the
547
- # result of the run if the run did not pass.
567
+ # Output and record the result of the test. Call
568
+ # {result#result_code}[rdoc-ref:Runnable#result_code] to get the
569
+ # result character string. Stores the result of the run if the run
570
+ # did not pass.
548
571
 
549
572
  def record result
550
573
  end
@@ -611,18 +634,63 @@ module Minitest
611
634
  #
612
635
  # If you want to create an entirely different type of output (eg,
613
636
  # CI, HTML, etc), this is the place to start.
637
+ #
638
+ # Example:
639
+ #
640
+ # class JenkinsCIReporter < StatisticsReporter
641
+ # def report
642
+ # super # Needed to calculate some statistics
643
+ #
644
+ # print "<testsuite "
645
+ # print "tests='#{count}' "
646
+ # print "failures='#{failures}' "
647
+ # # Remaining XML...
648
+ # end
649
+ # end
614
650
 
615
651
  class StatisticsReporter < Reporter
616
- # :stopdoc:
652
+ ##
653
+ # Total number of assertions.
654
+
617
655
  attr_accessor :assertions
656
+
657
+ ##
658
+ # Total number of test cases.
659
+
618
660
  attr_accessor :count
661
+
662
+ ##
663
+ # An +Array+ of test cases that failed or were skipped.
664
+
619
665
  attr_accessor :results
666
+
667
+ ##
668
+ # Time the test run started. If available, the monotonic clock is
669
+ # used and this is a +Float+, otherwise it's an instance of
670
+ # +Time+.
671
+
620
672
  attr_accessor :start_time
673
+
674
+ ##
675
+ # Test run time. If available, the monotonic clock is used and
676
+ # this is a +Float+, otherwise it's an instance of +Time+.
677
+
621
678
  attr_accessor :total_time
679
+
680
+ ##
681
+ # Total number of tests that failed.
682
+
622
683
  attr_accessor :failures
684
+
685
+ ##
686
+ # Total number of tests that erred.
687
+
623
688
  attr_accessor :errors
689
+
690
+ ##
691
+ # Total number of tests that where skipped.
692
+
624
693
  attr_accessor :skips
625
- # :startdoc:
626
694
 
627
695
  def initialize io = $stdout, options = {} # :nodoc:
628
696
  super
@@ -652,7 +720,10 @@ module Minitest
652
720
  results << result if not result.passed? or result.skipped?
653
721
  end
654
722
 
655
- def report # :nodoc:
723
+ ##
724
+ # Report on the tracked statistics.
725
+
726
+ def report
656
727
  aggregate = results.group_by { |r| r.failure.class }
657
728
  aggregate.default = [] # dumb. group_by should provide this
658
729