spec 5.0.19 → 5.3.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/History.txt +106 -0
 - data/Manifest.txt +1 -1
 - data/README.txt +83 -37
 - data/Rakefile +3 -56
 - data/lib/minitest.rb +58 -156
 - data/lib/minitest/assertions.rb +13 -1
 - data/lib/minitest/benchmark.rb +3 -3
 - data/lib/minitest/hell.rb +1 -1
 - data/lib/minitest/mock.rb +2 -2
 - data/lib/minitest/parallel.rb +40 -0
 - data/lib/minitest/pride_plugin.rb +1 -2
 - data/lib/minitest/spec.rb +23 -22
 - data/lib/minitest/test.rb +19 -8
 - data/lib/spec.rb +156 -2
 - data/readme.md +1 -1
 - data/spec.gemspec +2 -2
 - data/test/manual/simple.rb +10 -15
 - data/test/minitest/metametameta.rb +4 -2
 - data/test/minitest/test_minitest_benchmark.rb +7 -1
 - data/test/minitest/test_minitest_mock.rb +12 -2
 - data/test/minitest/test_minitest_reporter.rb +0 -1
 - data/test/minitest/test_minitest_spec.rb +41 -4
 - data/test/minitest/test_minitest_unit.rb +38 -20
 - metadata +15 -37
 - data/lib/minitest/parallel_each.rb +0 -120
 - data/release_notes.md +0 -80
 - data/test/manual/after_run.rb +0 -17
 - data/test/manual/appium.rb +0 -14
 - data/test/manual/appium_after_last.rb +0 -24
 - data/test/manual/appium_before_first.rb +0 -23
 - data/test/manual/assert.rb +0 -61
 - data/test/manual/before_first_0.rb +0 -27
 - data/test/manual/before_first_1.rb +0 -29
 - data/test/manual/ctrl_c.rb +0 -11
 - data/test/manual/debug.rb +0 -37
 - data/test/manual/do_end.rb +0 -31
 - data/test/manual/raise.rb +0 -61
 - data/test/manual/run2.rb +0 -74
 - data/test/manual/run3.rb +0 -91
 - data/test/manual/setup.rb +0 -13
 - data/test/manual/simple2.rb +0 -20
 - data/test/manual/skip.rb +0 -15
 - data/test/manual/t.rb +0 -11
 - data/test/manual/trace.rb +0 -19
 - data/test/manual/trace2.rb +0 -15
 - data/test/minitest/test_helper.rb +0 -20
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 1862a5647d9edb8c300deb03b6bf21cb4d8d85e1
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 8184a4a78143f820d7132ea83f9d0186e332030f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 6563324e7b8f500574e347eb5e8abb9a61a08d80d5b986435848af1a3792cd63344d503c6c63ad591433f1d3d478e9be6ca53514199b13b36a3022697677d3e3
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 2389dde6619ec0fd846ba0fe8e17e0f905e7d4be40b6f4f5198e06187b766f613727375aff3839a12472077b9524adf8fad708afd0a24a2a971f07966b396562
         
     | 
    
        data/History.txt
    CHANGED
    
    | 
         @@ -1,3 +1,87 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            === 5.3.3 / 2014-04-14
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * 1 bug fix:
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              * Fixed using expectations w/ DSL in Test class w/o describe. (blowmage+others)
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            === 5.3.2 / 2014-04-02
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            * 1 bug fix:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              * Fixed doco on Assertions.assertions. (xaviershay)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            === 5.3.1 / 2014-03-14
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            * 1 minor enhancement:
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              * Modified verbage on bad 'let' names to be more helpful. (Archytaus)
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            * 1 bug fix:
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              * Fixed 2 cases still using MiniTest. (mikesea)
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            === 5.3.0 / 2014-02-25
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            * 1 minor enhancement:
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              * Mocked methods can take a block to verify state. Seattle.rb 12 bday present from ernie! Thanks!!
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            === 5.2.3 / 2014-02-10
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            * 1 bug fix:
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              * Fixed Spec#let check to allow overriding of other lets. (mvz)
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            === 5.2.2 / 2014-01-22
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            * 1 minor enhancement:
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              * Spec#let raises ArgumentError if you override _any_ instance method (except subject). (rynr)
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            * 1 bug fix:
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              * Fixed up benchmark spec doco and added a test to demonstrate. (bhenderson)
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            === 5.2.1 / 2014-01-07
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            * 1 bug fix:
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              * Properly deal with horrible mix of runtime load errors + other at_exit handlers. (dougo/chqr)
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            === 5.2.0 / 2013-12-13
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            * 1 minor enhancement:
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              * Change expectations to allow calling most on procs (but not calling the proc). (bhenderson+others)
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            === 5.1.0 / 2013-12-05
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            * 1 minor enhancement:
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              * Use a Queue for scheduling parallel tests. (tenderlove)
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            * 1 bug fix:
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
              * Fixed misspelling in doco. (amatsuda)
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            === 5.0.8 / 2013-09-20
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            * 1 bug fix:
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
              * Fixed siginfo handler by rearranging reporters and fixing to_s. (tenderlove)
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            === 5.0.7 / 2013-09-05
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            * 2 minor enhancements:
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
              * Added clarification about the use of thread local variables in expectations. (jemc)
         
     | 
| 
      
 78 
     | 
    
         
            +
              * Added extra message about skipped tests, if any. Disable globally with $MT_NO_SKIP_MSG.
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            * 2 bug fixes:
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
              * Only require minitest, not minitest/autorun in pride_plugin. (judofyr)
         
     | 
| 
      
 83 
     | 
    
         
            +
              * Require rubygems in load_plugins in case you're not using minitest/autorun.
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
       1 
85 
     | 
    
         
             
            === 5.0.6 / 2013-06-28
         
     | 
| 
       2 
86 
     | 
    
         | 
| 
       3 
87 
     | 
    
         
             
            * 3 minor enhancements:
         
     | 
| 
         @@ -10,6 +94,13 @@ 
     | 
|
| 
       10 
94 
     | 
    
         | 
| 
       11 
95 
     | 
    
         
             
              * Fixed missing require in minitest/test. (erikh)
         
     | 
| 
       12 
96 
     | 
    
         | 
| 
      
 97 
     | 
    
         
            +
            === 4.7.5 / 2013-06-21
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
            * 2 bug fixes:
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
              * Fix Spec#describe_stack to be thread local.
         
     | 
| 
      
 102 
     | 
    
         
            +
              * Fix multithreaded test failures by defining Time local to mock test namespace
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
       13 
104 
     | 
    
         
             
            === 5.0.5 / 2013-06-20
         
     | 
| 
       14 
105 
     | 
    
         | 
| 
       15 
106 
     | 
    
         
             
            * 6 bug fixes:
         
     | 
| 
         @@ -128,6 +219,21 @@ Minitest 5: 
     | 
|
| 
       128 
219 
     | 
    
         
             
              * Removed Minitest::Test.synchronize (phiggins)
         
     | 
| 
       129 
220 
     | 
    
         
             
              * Upon loading minitest/parallel_each, record, capture_io and capture_subprocess_io are doped with synchronization code. (phiggins)
         
     | 
| 
       130 
221 
     | 
    
         | 
| 
      
 222 
     | 
    
         
            +
            === 4.7.4 / 2013-05-01
         
     | 
| 
      
 223 
     | 
    
         
            +
             
     | 
| 
      
 224 
     | 
    
         
            +
            This is probably the last release of the 4.x series. It will be merged
         
     | 
| 
      
 225 
     | 
    
         
            +
            to ruby and will be put into maintenance mode there.
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
            I'm not set in stone on this, but at this point further development of
         
     | 
| 
      
 228 
     | 
    
         
            +
            minitest (5+) will be gem-only. It is just too hard to work w/in
         
     | 
| 
      
 229 
     | 
    
         
            +
            ruby-core w/ test-unit compatibility holding minitest development
         
     | 
| 
      
 230 
     | 
    
         
            +
            back.
         
     | 
| 
      
 231 
     | 
    
         
            +
             
     | 
| 
      
 232 
     | 
    
         
            +
            * 2 minor enhancements:
         
     | 
| 
      
 233 
     | 
    
         
            +
             
     | 
| 
      
 234 
     | 
    
         
            +
              * Added count/size to ParallelEach to fix use w/in stdlib's test/unit. :( (btaitelb)
         
     | 
| 
      
 235 
     | 
    
         
            +
              * Allow disabling of info_signal handler in runner. (erikh)
         
     | 
| 
      
 236 
     | 
    
         
            +
             
     | 
| 
       131 
237 
     | 
    
         
             
            === 4.7.3 / 2013-04-20
         
     | 
| 
       132 
238 
     | 
    
         | 
| 
       133 
239 
     | 
    
         
             
            * 1 bug fix:
         
     | 
    
        data/Manifest.txt
    CHANGED
    
    
    
        data/README.txt
    CHANGED
    
    | 
         @@ -3,6 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            home :: https://github.com/seattlerb/minitest
         
     | 
| 
       4 
4 
     | 
    
         
             
            rdoc :: http://docs.seattlerb.org/minitest
         
     | 
| 
       5 
5 
     | 
    
         
             
            vim  :: https://github.com/sunaku/vim-ruby-minitest
         
     | 
| 
      
 6 
     | 
    
         
            +
            emacs:: https://github.com/arthurnn/minitest-emacs
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
            == DESCRIPTION:
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
         @@ -90,6 +91,8 @@ Given that you'd like to test the following class: 
     | 
|
| 
       90 
91 
     | 
    
         | 
| 
       91 
92 
     | 
    
         
             
            === Unit tests
         
     | 
| 
       92 
93 
     | 
    
         | 
| 
      
 94 
     | 
    
         
            +
            Define your tests as methods beginning with `test_`.
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
       93 
96 
     | 
    
         
             
              require "minitest/autorun"
         
     | 
| 
       94 
97 
     | 
    
         | 
| 
       95 
98 
     | 
    
         
             
              class TestMeme < Minitest::Test
         
     | 
| 
         @@ -366,62 +369,105 @@ you want to extend your test using setup/teardown via a module, just 
     | 
|
| 
       366 
369 
     | 
    
         
             
            make sure you ALWAYS call super. before/after automatically call super
         
     | 
| 
       367 
370 
     | 
    
         
             
            for you, so make sure you don't do it twice.
         
     | 
| 
       368 
371 
     | 
    
         | 
| 
      
 372 
     | 
    
         
            +
            == Prominent Projects using Minitest:
         
     | 
| 
      
 373 
     | 
    
         
            +
             
     | 
| 
      
 374 
     | 
    
         
            +
            * arel
         
     | 
| 
      
 375 
     | 
    
         
            +
            * journey
         
     | 
| 
      
 376 
     | 
    
         
            +
            * mime-types
         
     | 
| 
      
 377 
     | 
    
         
            +
            * nokogiri
         
     | 
| 
      
 378 
     | 
    
         
            +
            * rails (active_support et al)
         
     | 
| 
      
 379 
     | 
    
         
            +
            * rake
         
     | 
| 
      
 380 
     | 
    
         
            +
            * rdoc
         
     | 
| 
      
 381 
     | 
    
         
            +
            * ...and of course, everything from seattle.rb...
         
     | 
| 
      
 382 
     | 
    
         
            +
             
     | 
| 
       369 
383 
     | 
    
         
             
            == Known Extensions:
         
     | 
| 
       370 
384 
     | 
    
         | 
| 
       371 
     | 
    
         
            -
            capybara_minitest_spec      :: Bridge between Capybara RSpec matchers and 
     | 
| 
      
 385 
     | 
    
         
            +
            capybara_minitest_spec      :: Bridge between Capybara RSpec matchers and
         
     | 
| 
      
 386 
     | 
    
         
            +
                                           Minitest::Spec expectations (e.g.
         
     | 
| 
      
 387 
     | 
    
         
            +
                                           page.must_have_content("Title")).
         
     | 
| 
       372 
388 
     | 
    
         
             
            minispec-metadata           :: Metadata for describe/it blocks
         
     | 
| 
       373 
389 
     | 
    
         
             
                                           (e.g. `it "requires JS driver", js: true do`)
         
     | 
| 
       374 
390 
     | 
    
         
             
            minitest-ansi               :: Colorize minitest output with ANSI colors.
         
     | 
| 
       375 
     | 
    
         
            -
            minitest-around             :: Around block for minitest. An alternative to 
     | 
| 
       376 
     | 
    
         
            -
             
     | 
| 
       377 
     | 
    
         
            -
            minitest- 
     | 
| 
      
 391 
     | 
    
         
            +
            minitest-around             :: Around block for minitest. An alternative to
         
     | 
| 
      
 392 
     | 
    
         
            +
                                           setup/teardown dance.
         
     | 
| 
      
 393 
     | 
    
         
            +
            minitest-capistrano         :: Assertions and expectations for testing
         
     | 
| 
      
 394 
     | 
    
         
            +
                                           Capistrano recipes.
         
     | 
| 
      
 395 
     | 
    
         
            +
            minitest-capybara           :: Capybara matchers support for minitest unit and
         
     | 
| 
      
 396 
     | 
    
         
            +
                                           spec.
         
     | 
| 
       378 
397 
     | 
    
         
             
            minitest-chef-handler       :: Run Minitest suites as Chef report handlers
         
     | 
| 
       379 
     | 
    
         
            -
            minitest-ci                 :: CI reporter plugin for  
     | 
| 
       380 
     | 
    
         
            -
            minitest-colorize           :: Colorize  
     | 
| 
       381 
     | 
    
         
            -
             
     | 
| 
      
 398 
     | 
    
         
            +
            minitest-ci                 :: CI reporter plugin for Minitest.
         
     | 
| 
      
 399 
     | 
    
         
            +
            minitest-colorize           :: Colorize Minitest output and show failing tests
         
     | 
| 
      
 400 
     | 
    
         
            +
                                           instantly.
         
     | 
| 
      
 401 
     | 
    
         
            +
            minitest-context            :: Defines contexts for code reuse in Minitest
         
     | 
| 
       382 
402 
     | 
    
         
             
                                           specs that share common expectations.
         
     | 
| 
       383 
403 
     | 
    
         
             
            minitest-debugger           :: Wraps assert so failed assertions drop into
         
     | 
| 
       384 
404 
     | 
    
         
             
                                           the ruby debugger.
         
     | 
| 
       385 
     | 
    
         
            -
            minitest-display            :: Patches  
     | 
| 
       386 
     | 
    
         
            -
             
     | 
| 
       387 
     | 
    
         
            -
            minitest- 
     | 
| 
      
 405 
     | 
    
         
            +
            minitest-display            :: Patches Minitest to allow for an easily
         
     | 
| 
      
 406 
     | 
    
         
            +
                                           configurable output.
         
     | 
| 
      
 407 
     | 
    
         
            +
            minitest-documentation      :: Minimal documentation format inspired by rspec's.
         
     | 
| 
      
 408 
     | 
    
         
            +
            minitest-doc_reporter       :: Detailed output inspired by rspec's documentation
         
     | 
| 
      
 409 
     | 
    
         
            +
                                           format.
         
     | 
| 
      
 410 
     | 
    
         
            +
            minitest-emoji              :: Print out emoji for your test passes, fails, and
         
     | 
| 
      
 411 
     | 
    
         
            +
                                           skips.
         
     | 
| 
      
 412 
     | 
    
         
            +
            minitest-english            :: Semantically symmetric aliases for assertions and
         
     | 
| 
      
 413 
     | 
    
         
            +
                                           expectations.
         
     | 
| 
       388 
414 
     | 
    
         
             
            minitest-excludes           :: Clean API for excluding certain tests you
         
     | 
| 
       389 
415 
     | 
    
         
             
                                           don't want to run under certain conditions.
         
     | 
| 
       390 
     | 
    
         
            -
            minitest-filesystem         :: Adds assertion and expectation to help testing 
     | 
| 
       391 
     | 
    
         
            -
             
     | 
| 
       392 
     | 
    
         
            -
            minitest- 
     | 
| 
      
 416 
     | 
    
         
            +
            minitest-filesystem         :: Adds assertion and expectation to help testing
         
     | 
| 
      
 417 
     | 
    
         
            +
                                           filesystem contents.
         
     | 
| 
      
 418 
     | 
    
         
            +
            minitest-firemock           :: Makes your Minitest mocks more resilient.
         
     | 
| 
      
 419 
     | 
    
         
            +
            minitest-great_expectations :: Generally useful additions to minitest's
         
     | 
| 
      
 420 
     | 
    
         
            +
                                           assertions and expectations.
         
     | 
| 
       393 
421 
     | 
    
         
             
            minitest-growl              :: Test notifier for minitest via growl.
         
     | 
| 
       394 
422 
     | 
    
         
             
            minitest-implicit-subject   :: Implicit declaration of the test subject.
         
     | 
| 
       395 
423 
     | 
    
         
             
            minitest-instrument         :: Instrument ActiveSupport::Notifications when
         
     | 
| 
       396 
     | 
    
         
            -
                                           test method is executed
         
     | 
| 
       397 
     | 
    
         
            -
            minitest-instrument-db      :: Store information about speed of test
         
     | 
| 
       398 
     | 
    
         
            -
                                            
     | 
| 
      
 424 
     | 
    
         
            +
                                           test method is executed.
         
     | 
| 
      
 425 
     | 
    
         
            +
            minitest-instrument-db      :: Store information about speed of test execution
         
     | 
| 
      
 426 
     | 
    
         
            +
                                           provided by minitest-instrument in database.
         
     | 
| 
       399 
427 
     | 
    
         
             
            minitest-libnotify          :: Test notifier for minitest via libnotify.
         
     | 
| 
       400 
     | 
    
         
            -
            minitest-line               :: Run test at line number
         
     | 
| 
       401 
     | 
    
         
            -
            minitest-macruby            :: Provides extensions to minitest for macruby UI 
     | 
| 
       402 
     | 
    
         
            -
             
     | 
| 
      
 428 
     | 
    
         
            +
            minitest-line               :: Run test at line number.
         
     | 
| 
      
 429 
     | 
    
         
            +
            minitest-macruby            :: Provides extensions to minitest for macruby UI
         
     | 
| 
      
 430 
     | 
    
         
            +
                                           testing.
         
     | 
| 
      
 431 
     | 
    
         
            +
            minitest-matchers           :: Adds support for RSpec-style matchers to
         
     | 
| 
      
 432 
     | 
    
         
            +
                                           minitest.
         
     | 
| 
       403 
433 
     | 
    
         
             
            minitest-metadata           :: Annotate tests with metadata (key-value).
         
     | 
| 
       404 
     | 
    
         
            -
            minitest-mongoid            :: Mongoid assertion matchers for  
     | 
| 
       405 
     | 
    
         
            -
            minitest-must_not           :: Provides must_not as an alias for wont in 
     | 
| 
       406 
     | 
    
         
            -
             
     | 
| 
       407 
     | 
    
         
            -
            minitest- 
     | 
| 
       408 
     | 
    
         
            -
             
     | 
| 
       409 
     | 
    
         
            -
            minitest- 
     | 
| 
       410 
     | 
    
         
            -
            minitest- 
     | 
| 
       411 
     | 
    
         
            -
            minitest- 
     | 
| 
       412 
     | 
    
         
            -
            minitest- 
     | 
| 
       413 
     | 
    
         
            -
            minitest- 
     | 
| 
       414 
     | 
    
         
            -
            minitest- 
     | 
| 
       415 
     | 
    
         
            -
            minitest- 
     | 
| 
       416 
     | 
    
         
            -
             
     | 
| 
       417 
     | 
    
         
            -
            minitest- 
     | 
| 
       418 
     | 
    
         
            -
             
     | 
| 
      
 434 
     | 
    
         
            +
            minitest-mongoid            :: Mongoid assertion matchers for Minitest.
         
     | 
| 
      
 435 
     | 
    
         
            +
            minitest-must_not           :: Provides must_not as an alias for wont in
         
     | 
| 
      
 436 
     | 
    
         
            +
                                           Minitest.
         
     | 
| 
      
 437 
     | 
    
         
            +
            minitest-nc                 :: Test notifier for minitest via Mountain Lion's
         
     | 
| 
      
 438 
     | 
    
         
            +
                                           Notification Center.
         
     | 
| 
      
 439 
     | 
    
         
            +
            minitest-predicates         :: Adds support for .predicate? methods.
         
     | 
| 
      
 440 
     | 
    
         
            +
            minitest-rails              :: Minitest integration for Rails 3.x.
         
     | 
| 
      
 441 
     | 
    
         
            +
            minitest-rails-capybara     :: Capybara integration for Minitest::Rails.
         
     | 
| 
      
 442 
     | 
    
         
            +
            minitest-reporters          :: Create customizable Minitest output formats.
         
     | 
| 
      
 443 
     | 
    
         
            +
            minitest-rg                 :: Colored red/green output for Minitest.
         
     | 
| 
      
 444 
     | 
    
         
            +
            minitest-rspec_mocks        :: Use RSpec Mocks with Minitest.
         
     | 
| 
      
 445 
     | 
    
         
            +
            minitest-should_syntax      :: RSpec-style +x.should == y+ assertions for
         
     | 
| 
      
 446 
     | 
    
         
            +
                                           Minitest.
         
     | 
| 
      
 447 
     | 
    
         
            +
            minitest-shouldify          :: Adding all manner of shoulds to Minitest (bad
         
     | 
| 
      
 448 
     | 
    
         
            +
                                           idea)
         
     | 
| 
      
 449 
     | 
    
         
            +
            minitest-spec-context       :: Provides rspec-ish context method to
         
     | 
| 
      
 450 
     | 
    
         
            +
                                           Minitest::Spec.
         
     | 
| 
      
 451 
     | 
    
         
            +
            minitest-spec-expect        :: Expect syntax for Minitest::Spec (e.g.
         
     | 
| 
      
 452 
     | 
    
         
            +
                                           expect(sequences).to_include :celery_man).
         
     | 
| 
      
 453 
     | 
    
         
            +
            minitest-spec-magic         :: Minitest::Spec extensions for Rails and beyond.
         
     | 
| 
      
 454 
     | 
    
         
            +
            minitest-spec-rails         :: Drop in Minitest::Spec superclass for
         
     | 
| 
      
 455 
     | 
    
         
            +
                                           ActiveSupport::TestCase.
         
     | 
| 
      
 456 
     | 
    
         
            +
            minitest-stub_any_instance  :: Stub any instance of a method on the given class
         
     | 
| 
      
 457 
     | 
    
         
            +
                                           for the duration of a block.
         
     | 
| 
      
 458 
     | 
    
         
            +
            minitest-stub-const         :: Stub constants for the duration of a block.
         
     | 
| 
      
 459 
     | 
    
         
            +
            minitest-tags               :: Add tags for minitest.
         
     | 
| 
      
 460 
     | 
    
         
            +
            minitest-vcr                :: Automatic cassette managment with Minitest::Spec
         
     | 
| 
      
 461 
     | 
    
         
            +
                                           and VCR.
         
     | 
| 
       419 
462 
     | 
    
         
             
            minitest-wscolor            :: Yet another test colorizer.
         
     | 
| 
       420 
463 
     | 
    
         
             
            minitest_owrapper           :: Get tests results as a TestResult object.
         
     | 
| 
       421 
464 
     | 
    
         
             
            minitest_should             :: Shoulda style syntax for minitest test::unit.
         
     | 
| 
       422 
     | 
    
         
            -
            minitest_tu_shim            ::  
     | 
| 
       423 
     | 
    
         
            -
            mongoid-minitest            ::  
     | 
| 
       424 
     | 
    
         
            -
            pry-rescue                  :: A pry plugin w/ minitest support. See 
     | 
| 
      
 465 
     | 
    
         
            +
            minitest_tu_shim            :: Bridges between test/unit and minitest.
         
     | 
| 
      
 466 
     | 
    
         
            +
            mongoid-minitest            :: Minitest matchers for Mongoid.
         
     | 
| 
      
 467 
     | 
    
         
            +
            pry-rescue                  :: A pry plugin w/ minitest support. See
         
     | 
| 
      
 468 
     | 
    
         
            +
                                           pry-rescue/minitest.rb.
         
     | 
| 
      
 469 
     | 
    
         
            +
            rspec2minitest              :: Easily translate any RSpec matchers to Minitest
         
     | 
| 
      
 470 
     | 
    
         
            +
                                           assertions and expectations.
         
     | 
| 
       425 
471 
     | 
    
         | 
| 
       426 
472 
     | 
    
         
             
            == Unknown Extensions:
         
     | 
| 
       427 
473 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,5 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- ruby -*-
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
1 
     | 
    
         
             
            require 'rubygems'
         
     | 
| 
       4 
2 
     | 
    
         
             
            require 'hoe'
         
     | 
| 
       5 
3 
     | 
    
         | 
| 
         @@ -8,63 +6,11 @@ Hoe.plugin :seattlerb 
     | 
|
| 
       8 
6 
     | 
    
         
             
            Hoe.spec 'minitest' do
         
     | 
| 
       9 
7 
     | 
    
         
             
              developer 'Ryan Davis', 'ryand-ruby@zenspider.com'
         
     | 
| 
       10 
8 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
               
     | 
| 
       12 
     | 
    
         
            -
              self.testlib = :minitest
         
     | 
| 
       13 
     | 
    
         
            -
              self.licenses = [ 'MIT' ]
         
     | 
| 
       14 
     | 
    
         
            -
            end
         
     | 
| 
      
 9 
     | 
    
         
            +
              license "MIT"
         
     | 
| 
       15 
10 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
            task :specs do
         
     | 
| 
       18 
     | 
    
         
            -
              $:.unshift "lib"
         
     | 
| 
       19 
     | 
    
         
            -
              require "minitest/unit"
         
     | 
| 
       20 
     | 
    
         
            -
              require "minitest/spec"
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
              pos_prefix, neg_prefix = "must", "wont"
         
     | 
| 
       23 
     | 
    
         
            -
              skip_re = /^(must|wont)$|wont_(throw)|must_(block|not?_|nothing|raise$)/x
         
     | 
| 
       24 
     | 
    
         
            -
              dont_flip_re = /(must|wont)_(include|respond_to)/
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              map = {
         
     | 
| 
       27 
     | 
    
         
            -
                /(must_throw)s/                        => '\1',
         
     | 
| 
       28 
     | 
    
         
            -
                /(?!not)_same/                         => '_be_same_as',
         
     | 
| 
       29 
     | 
    
         
            -
                /_in_/                                 => '_be_within_',
         
     | 
| 
       30 
     | 
    
         
            -
                /_operator/                            => '_be',
         
     | 
| 
       31 
     | 
    
         
            -
                /_includes/                            => '_include',
         
     | 
| 
       32 
     | 
    
         
            -
                /(must|wont)_(.*_of|nil|silent|empty)/ => '\1_be_\2',
         
     | 
| 
       33 
     | 
    
         
            -
                /must_raises/                          => 'must_raise',
         
     | 
| 
       34 
     | 
    
         
            -
              }
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
              expectations = Minitest::Expectations.public_instance_methods.map(&:to_s)
         
     | 
| 
       37 
     | 
    
         
            -
              assertions   = Minitest::Assertions.public_instance_methods.map(&:to_s)
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
              assertions.sort.each do |assertion|
         
     | 
| 
       40 
     | 
    
         
            -
                expectation = case assertion
         
     | 
| 
       41 
     | 
    
         
            -
                              when /^assert/ then
         
     | 
| 
       42 
     | 
    
         
            -
                                assertion.sub(/^assert/, pos_prefix.to_s)
         
     | 
| 
       43 
     | 
    
         
            -
                              when /^refute/ then
         
     | 
| 
       44 
     | 
    
         
            -
                                assertion.sub(/^refute/, neg_prefix.to_s)
         
     | 
| 
       45 
     | 
    
         
            -
                              end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                next unless expectation
         
     | 
| 
       48 
     | 
    
         
            -
                next if expectation =~ skip_re
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                regexp, replacement = map.find { |re, _| expectation =~ re }
         
     | 
| 
       51 
     | 
    
         
            -
                expectation.sub! regexp, replacement if replacement
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                next if expectations.include? expectation
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                args = [assertion, expectation].map(&:to_sym).map(&:inspect)
         
     | 
| 
       56 
     | 
    
         
            -
                args << :reverse if expectation =~ dont_flip_re
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                puts
         
     | 
| 
       59 
     | 
    
         
            -
                puts "##"
         
     | 
| 
       60 
     | 
    
         
            -
                puts "# :method: #{expectation}"
         
     | 
| 
       61 
     | 
    
         
            -
                puts "# See Minitest::Assertions##{assertion}"
         
     | 
| 
       62 
     | 
    
         
            -
                puts
         
     | 
| 
       63 
     | 
    
         
            -
                puts "infect_an_assertion #{args.join ", "}"
         
     | 
| 
       64 
     | 
    
         
            -
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
              self.testlib = :minitest
         
     | 
| 
       65 
12 
     | 
    
         
             
            end
         
     | 
| 
       66 
13 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
            # vim: syntax=Ruby
         
     | 
| 
       68 
14 
     | 
    
         | 
| 
       69 
15 
     | 
    
         
             
            # from https://github.com/bootstraponline/gem_template
         
     | 
| 
       70 
16 
     | 
    
         
             
            # todo: publish gem_template as a gem
         
     | 
| 
         @@ -73,6 +19,7 @@ end 
     | 
|
| 
       73 
19 
     | 
    
         
             
            require 'rubygems'
         
     | 
| 
       74 
20 
     | 
    
         
             
            require 'rake'
         
     | 
| 
       75 
21 
     | 
    
         
             
            require 'date'
         
     | 
| 
      
 22 
     | 
    
         
            +
            require_relative 'lib/minitest'
         
     | 
| 
       76 
23 
     | 
    
         | 
| 
       77 
24 
     | 
    
         
             
            # Defines gem name.
         
     | 
| 
       78 
25 
     | 
    
         
             
            def repo_name; 'spec' end # rubygems.org name
         
     | 
    
        data/lib/minitest.rb
    CHANGED
    
    | 
         @@ -1,12 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "optparse"
         
     | 
| 
       2 
     | 
    
         
            -
            require  
     | 
| 
      
 2 
     | 
    
         
            +
            require "thread"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "mutex_m"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "minitest/parallel"
         
     | 
| 
       3 
5 
     | 
    
         | 
| 
       4 
6 
     | 
    
         
             
            ##
         
     | 
| 
       5 
7 
     | 
    
         
             
            # :include: README.txt
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
       7 
9 
     | 
    
         
             
            module Minitest
         
     | 
| 
       8 
     | 
    
         
            -
              VERSION = '5. 
     | 
| 
       9 
     | 
    
         
            -
              DATE = ' 
     | 
| 
      
 10 
     | 
    
         
            +
              VERSION = '5.3.3' # :nodoc:
         
     | 
| 
      
 11 
     | 
    
         
            +
              DATE = '2014-04-21' # :nodoc:
         
     | 
| 
       10 
12 
     | 
    
         | 
| 
       11 
13 
     | 
    
         
             
              @@installed_at_exit ||= false
         
     | 
| 
       12 
14 
     | 
    
         
             
              @@after_run = []
         
     | 
| 
         @@ -14,6 +16,12 @@ module Minitest 
     | 
|
| 
       14 
16 
     | 
    
         | 
| 
       15 
17 
     | 
    
         
             
              mc = (class << self; self; end)
         
     | 
| 
       16 
18 
     | 
    
         | 
| 
      
 19 
     | 
    
         
            +
              ##
         
     | 
| 
      
 20 
     | 
    
         
            +
              # Parallel test executor
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              mc.send :attr_accessor, :parallel_executor
         
     | 
| 
      
 23 
     | 
    
         
            +
              self.parallel_executor = Parallel::Executor.new((ENV['N'] || 2).to_i)
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       17 
25 
     | 
    
         
             
              ##
         
     | 
| 
       18 
26 
     | 
    
         
             
              # Filter object for backtraces.
         
     | 
| 
       19 
27 
     | 
    
         | 
| 
         @@ -36,7 +44,7 @@ module Minitest 
     | 
|
| 
       36 
44 
     | 
    
         | 
| 
       37 
45 
     | 
    
         
             
              def self.autorun
         
     | 
| 
       38 
46 
     | 
    
         
             
                at_exit {
         
     | 
| 
       39 
     | 
    
         
            -
                  next if $! and not $!.kind_of? SystemExit
         
     | 
| 
      
 47 
     | 
    
         
            +
                  next if $! and not ($!.kind_of? SystemExit and $!.success?)
         
     | 
| 
       40 
48 
     | 
    
         | 
| 
       41 
49 
     | 
    
         
             
                  exit_code = nil
         
     | 
| 
       42 
50 
     | 
    
         | 
| 
         @@ -72,6 +80,8 @@ module Minitest 
     | 
|
| 
       72 
80 
     | 
    
         | 
| 
       73 
81 
     | 
    
         
             
                seen = {}
         
     | 
| 
       74 
82 
     | 
    
         | 
| 
      
 83 
     | 
    
         
            +
                require "rubygems" unless defined? Gem
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
       75 
85 
     | 
    
         
             
                Gem.find_files("minitest/*_plugin.rb").each do |plugin_path|
         
     | 
| 
       76 
86 
     | 
    
         
             
                  name = File.basename plugin_path, "_plugin.rb"
         
     | 
| 
       77 
87 
     | 
    
         | 
| 
         @@ -92,11 +102,13 @@ module Minitest 
     | 
|
| 
       92 
102 
     | 
    
         
             
              #
         
     | 
| 
       93 
103 
     | 
    
         
             
              #   Minitest.autorun
         
     | 
| 
       94 
104 
     | 
    
         
             
              #     Minitest.run(args)
         
     | 
| 
       95 
     | 
    
         
            -
              #       __run(reporter, options)
         
     | 
| 
      
 105 
     | 
    
         
            +
              #       Minitest.__run(reporter, options)
         
     | 
| 
       96 
106 
     | 
    
         
             
              #         Runnable.runnables.each
         
     | 
| 
       97 
107 
     | 
    
         
             
              #           runnable.run(reporter, options)
         
     | 
| 
       98 
108 
     | 
    
         
             
              #             self.runnable_methods.each
         
     | 
| 
       99 
     | 
    
         
            -
              #               self. 
     | 
| 
      
 109 
     | 
    
         
            +
              #               self.run_one_method(self, runnable_method, reporter)
         
     | 
| 
      
 110 
     | 
    
         
            +
              #                 Minitest.run_one_method(klass, runnable_method, reporter)
         
     | 
| 
      
 111 
     | 
    
         
            +
              #                   klass.new(runnable_method).run
         
     | 
| 
       100 
112 
     | 
    
         | 
| 
       101 
113 
     | 
    
         
             
              def self.run args = []
         
     | 
| 
       102 
114 
     | 
    
         
             
                self.load_plugins
         
     | 
| 
         @@ -104,8 +116,8 @@ module Minitest 
     | 
|
| 
       104 
116 
     | 
    
         
             
                options = process_args args
         
     | 
| 
       105 
117 
     | 
    
         | 
| 
       106 
118 
     | 
    
         
             
                reporter = CompositeReporter.new
         
     | 
| 
       107 
     | 
    
         
            -
                reporter << ProgressReporter.new(options[:io], options)
         
     | 
| 
       108 
119 
     | 
    
         
             
                reporter << SummaryReporter.new(options[:io], options)
         
     | 
| 
      
 120 
     | 
    
         
            +
                reporter << ProgressReporter.new(options[:io], options)
         
     | 
| 
       109 
121 
     | 
    
         | 
| 
       110 
122 
     | 
    
         
             
                self.reporter = reporter # this makes it available to plugins
         
     | 
| 
       111 
123 
     | 
    
         
             
                self.init_plugins options
         
     | 
| 
         @@ -113,6 +125,7 @@ module Minitest 
     | 
|
| 
       113 
125 
     | 
    
         | 
| 
       114 
126 
     | 
    
         
             
                reporter.start
         
     | 
| 
       115 
127 
     | 
    
         
             
                __run reporter, options
         
     | 
| 
      
 128 
     | 
    
         
            +
                self.parallel_executor.shutdown
         
     | 
| 
       116 
129 
     | 
    
         
             
                reporter.report
         
     | 
| 
       117 
130 
     | 
    
         | 
| 
       118 
131 
     | 
    
         
             
                reporter.passed?
         
     | 
| 
         @@ -126,88 +139,22 @@ module Minitest 
     | 
|
| 
       126 
139 
     | 
    
         
             
              # loaded if a Runnable calls parallelize_me!.
         
     | 
| 
       127 
140 
     | 
    
         | 
| 
       128 
141 
     | 
    
         
             
              def self.__run reporter, options
         
     | 
| 
       129 
     | 
    
         
            -
                Runnable.runnables 
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
             
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
              # @param :trace [Array<String>] the files to trace
         
     | 
| 
       140 
     | 
    
         
            -
              # @param :io [IO] io to print to
         
     | 
| 
       141 
     | 
    
         
            -
              def self.trace_specs spec_opts
         
     | 
| 
       142 
     | 
    
         
            -
                targets = []
         
     | 
| 
       143 
     | 
    
         
            -
                files = {}
         
     | 
| 
       144 
     | 
    
         
            -
                last_file = ''
         
     | 
| 
       145 
     | 
    
         
            -
                last_line = -1
         
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
       147 
     | 
    
         
            -
                files_to_trace = spec_opts.fetch(:trace, []);
         
     | 
| 
       148 
     | 
    
         
            -
                io = spec_opts.fetch(:io, $stdout)
         
     | 
| 
       149 
     | 
    
         
            -
                color = spec_opts.fetch(:color, "\e[32m") # ANSI.green default
         
     | 
| 
       150 
     | 
    
         
            -
                # target only existing readable files
         
     | 
| 
       151 
     | 
    
         
            -
                files_to_trace.each do |f|
         
     | 
| 
       152 
     | 
    
         
            -
                  targets.push(File.expand_path(f)) if File.exists?(f) && File.readable?(f)
         
     | 
| 
       153 
     | 
    
         
            -
                end
         
     | 
| 
       154 
     | 
    
         
            -
                return if targets.empty?
         
     | 
| 
       155 
     | 
    
         
            -
             
     | 
| 
       156 
     | 
    
         
            -
                set_trace_func(lambda do |event, file, line, id, binding, classname|
         
     | 
| 
       157 
     | 
    
         
            -
                  return unless targets.include? file
         
     | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
       159 
     | 
    
         
            -
                  # never repeat a line
         
     | 
| 
       160 
     | 
    
         
            -
                  return if file == last_file && line == last_line
         
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
       162 
     | 
    
         
            -
                  file_sym = file.intern
         
     | 
| 
       163 
     | 
    
         
            -
                  files[file_sym] = IO.readlines(file) if files[file_sym].nil?
         
     | 
| 
       164 
     | 
    
         
            -
                  lines = files[file_sym]
         
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
                  # arrays are 0 indexed and line numbers start at one.
         
     | 
| 
       167 
     | 
    
         
            -
                  io.print color if color # ANSI code
         
     | 
| 
       168 
     | 
    
         
            -
                  io.puts lines[ line - 1]
         
     | 
| 
       169 
     | 
    
         
            -
                  io.print "\e[0m" if color # ANSI.clear
         
     | 
| 
       170 
     | 
    
         
            -
             
     | 
| 
       171 
     | 
    
         
            -
                  last_file = file
         
     | 
| 
       172 
     | 
    
         
            -
                  last_line = line
         
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
       174 
     | 
    
         
            -
                end)
         
     | 
| 
       175 
     | 
    
         
            -
              end
         
     | 
| 
       176 
     | 
    
         
            -
             
     | 
| 
       177 
     | 
    
         
            -
              def self.on_exit exit_code
         
     | 
| 
       178 
     | 
    
         
            -
                @@after_run.reverse_each(&:call)
         
     | 
| 
       179 
     | 
    
         
            -
                exit exit_code || false
         
     | 
| 
       180 
     | 
    
         
            -
              end
         
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       182 
     | 
    
         
            -
              ##
         
     | 
| 
       183 
     | 
    
         
            -
              # Run specs. Does not print dots (ProgressReporter)
         
     | 
| 
       184 
     | 
    
         
            -
              #
         
     | 
| 
       185 
     | 
    
         
            -
              # spec_opts
         
     | 
| 
       186 
     | 
    
         
            -
              # @param :io [Array<String>] defaults to $stdout
         
     | 
| 
       187 
     | 
    
         
            -
              # @param :trace [Array<String>] files to trace
         
     | 
| 
       188 
     | 
    
         
            -
             
     | 
| 
       189 
     | 
    
         
            -
              def self.run_specs spec_opts={}
         
     | 
| 
       190 
     | 
    
         
            -
                options = { :io => spec_opts.fetch(:io, $stdout) }
         
     | 
| 
       191 
     | 
    
         
            -
                reporter = Minitest::CompositeReporter.new
         
     | 
| 
       192 
     | 
    
         
            -
                reporter << Minitest::SummaryReporter.new(options[:io], options)
         
     | 
| 
       193 
     | 
    
         
            -
                reporter.start
         
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
                at_exit { on_exit reporter.passed? }
         
     | 
| 
       196 
     | 
    
         
            -
                # exit on ctrl+c to trigger at_exit
         
     | 
| 
       197 
     | 
    
         
            -
                trap('SIGINT') { exit }
         
     | 
| 
       198 
     | 
    
         
            -
             
     | 
| 
       199 
     | 
    
         
            -
                trace_specs spec_opts
         
     | 
| 
       200 
     | 
    
         
            -
             
     | 
| 
       201 
     | 
    
         
            -
                begin
         
     | 
| 
       202 
     | 
    
         
            -
                  Minitest.__run reporter, options
         
     | 
| 
       203 
     | 
    
         
            -
                  reporter.reporters.each { |r| r.report }
         
     | 
| 
       204 
     | 
    
         
            -
                rescue Minitest::Runnable::ExitAfterFirstFail
         
     | 
| 
       205 
     | 
    
         
            -
                  # Minitest calls .report on exception
         
     | 
| 
       206 
     | 
    
         
            -
                end
         
     | 
| 
      
 142 
     | 
    
         
            +
                suites = Runnable.runnables
         
     | 
| 
      
 143 
     | 
    
         
            +
                parallel, serial = suites.partition { |s| s.test_order == :parallel }
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
                # If we run the parallel tests before the serial tests, the parallel tests
         
     | 
| 
      
 146 
     | 
    
         
            +
                # could run in parallel with the serial tests. This would be bad because
         
     | 
| 
      
 147 
     | 
    
         
            +
                # the serial tests won't lock around Reporter#record. Run the serial tests
         
     | 
| 
      
 148 
     | 
    
         
            +
                # first, so that after they complete, the parallel tests will lock when
         
     | 
| 
      
 149 
     | 
    
         
            +
                # recording results.
         
     | 
| 
      
 150 
     | 
    
         
            +
                serial.map { |suite| suite.run reporter, options } +
         
     | 
| 
      
 151 
     | 
    
         
            +
                  parallel.map { |suite| suite.run reporter, options }
         
     | 
| 
       207 
152 
     | 
    
         
             
              end
         
     | 
| 
       208 
153 
     | 
    
         | 
| 
       209 
154 
     | 
    
         
             
              def self.process_args args = [] # :nodoc:
         
     | 
| 
       210 
     | 
    
         
            -
                options = { 
     | 
| 
      
 155 
     | 
    
         
            +
                options = {
         
     | 
| 
      
 156 
     | 
    
         
            +
                           :io => $stdout,
         
     | 
| 
      
 157 
     | 
    
         
            +
                          }
         
     | 
| 
       211 
158 
     | 
    
         
             
                orig_args = args.dup
         
     | 
| 
       212 
159 
     | 
    
         | 
| 
       213 
160 
     | 
    
         
             
                OptionParser.new do |opts|
         
     | 
| 
         @@ -323,27 +270,12 @@ module Minitest 
     | 
|
| 
       323 
270 
     | 
    
         | 
| 
       324 
271 
     | 
    
         
             
                reset
         
     | 
| 
       325 
272 
     | 
    
         | 
| 
       326 
     | 
    
         
            -
                class ExitAfterFirstFail < RuntimeError; end
         
     | 
| 
       327 
     | 
    
         
            -
             
     | 
| 
       328 
     | 
    
         
            -
                def self.check_failures result, reporter
         
     | 
| 
       329 
     | 
    
         
            -
                  # skip is not a failure.
         
     | 
| 
       330 
     | 
    
         
            -
                  true_fails = result.failures.reject { |obj| obj.class == Minitest::Skip }
         
     | 
| 
       331 
     | 
    
         
            -
                  if !true_fails.empty?
         
     | 
| 
       332 
     | 
    
         
            -
                    begin
         
     | 
| 
       333 
     | 
    
         
            -
                      reporter.reporters.each { |r| r.report }
         
     | 
| 
       334 
     | 
    
         
            -
                    ensure
         
     | 
| 
       335 
     | 
    
         
            -
                      raise ExitAfterFirstFail
         
     | 
| 
       336 
     | 
    
         
            -
                    end
         
     | 
| 
       337 
     | 
    
         
            -
                  end
         
     | 
| 
       338 
     | 
    
         
            -
                end
         
     | 
| 
       339 
     | 
    
         
            -
             
     | 
| 
       340 
273 
     | 
    
         
             
                ##
         
     | 
| 
       341 
274 
     | 
    
         
             
                # Responsible for running all runnable methods in a given class,
         
     | 
| 
       342 
275 
     | 
    
         
             
                # each in its own instance. Each instance is passed to the
         
     | 
| 
       343 
276 
     | 
    
         
             
                # reporter to record.
         
     | 
| 
       344 
277 
     | 
    
         | 
| 
       345 
278 
     | 
    
         
             
                def self.run reporter, options = {}
         
     | 
| 
       346 
     | 
    
         
            -
                  io = options.fetch :io, $stdout
         
     | 
| 
       347 
279 
     | 
    
         
             
                  filter = options[:filter] || '/./'
         
     | 
| 
       348 
280 
     | 
    
         
             
                  filter = Regexp.new $1 if filter =~ /\/(.*)\//
         
     | 
| 
       349 
281 
     | 
    
         | 
| 
         @@ -351,64 +283,16 @@ module Minitest 
     | 
|
| 
       351 
283 
     | 
    
         
             
                    filter === m || filter === "#{self}##{m}"
         
     | 
| 
       352 
284 
     | 
    
         
             
                  }
         
     | 
| 
       353 
285 
     | 
    
         | 
| 
       354 
     | 
    
         
            -
                   
     | 
| 
       355 
     | 
    
         
            -
                     
     | 
| 
       356 
     | 
    
         
            -
             
     | 
| 
       357 
     | 
    
         
            -
                    # run method and capture exceptions.
         
     | 
| 
       358 
     | 
    
         
            -
                    method1.capture_exceptions do
         
     | 
| 
       359 
     | 
    
         
            -
                      method1.before_first_method
         
     | 
| 
       360 
     | 
    
         
            -
                    end
         
     | 
| 
       361 
     | 
    
         
            -
                    # save exceptions to reporter and check for failures
         
     | 
| 
       362 
     | 
    
         
            -
                    with_info_handler reporter do
         
     | 
| 
       363 
     | 
    
         
            -
                      # only record if failures not empty, otherwise
         
     | 
| 
       364 
     | 
    
         
            -
                      # the count (runs) are messed up. each call to .record
         
     | 
| 
       365 
     | 
    
         
            -
                      # increases count by one.
         
     | 
| 
       366 
     | 
    
         
            -
                      if !method1.failures.empty?
         
     | 
| 
       367 
     | 
    
         
            -
                        reporter.record method1
         
     | 
| 
       368 
     | 
    
         
            -
                        check_failures method1, reporter
         
     | 
| 
       369 
     | 
    
         
            -
                      end
         
     | 
| 
       370 
     | 
    
         
            -
             
     | 
| 
       371 
     | 
    
         
            -
                      # run the other methods
         
     | 
| 
       372 
     | 
    
         
            -
                      filtered_methods.each do |method_name|
         
     | 
| 
       373 
     | 
    
         
            -
                        method = self.new(method_name)
         
     | 
| 
       374 
     | 
    
         
            -
                        matched_name = method_name.match /test_(\d+)_/
         
     | 
| 
       375 
     | 
    
         
            -
                        if matched_name
         
     | 
| 
       376 
     | 
    
         
            -
                          test_number = matched_name[1].to_i
         
     | 
| 
       377 
     | 
    
         
            -
                          test_name = method_name.split(/_\d+_/).last
         
     | 
| 
       378 
     | 
    
         
            -
                          file_path, line_number = method.method(method_name).source_location
         
     | 
| 
       379 
     | 
    
         
            -
                          # /5/4/3/2/1/test.rb => 2/1/test.rb
         
     | 
| 
       380 
     | 
    
         
            -
                          file_path = file_path.split(File::SEPARATOR).reject(&:empty?)
         
     | 
| 
       381 
     | 
    
         
            -
                          file_path = (file_path.length >= 3 ? file_path[-3..-1] :
         
     | 
| 
       382 
     | 
    
         
            -
                              file_path).join(File::SEPARATOR)
         
     | 
| 
       383 
     | 
    
         
            -
                          # 36 = cyan, 0 = clear
         
     | 
| 
       384 
     | 
    
         
            -
                          test_output_title = "\e[36m#{test_name} | #{test_number} |" +
         
     | 
| 
       385 
     | 
    
         
            -
                              "#{file_path}:#{line_number}\e[0m"
         
     | 
| 
       386 
     | 
    
         
            -
                          io.puts test_output_title
         
     | 
| 
       387 
     | 
    
         
            -
                        end
         
     | 
| 
       388 
     | 
    
         
            -
                        result = method.run
         
     | 
| 
       389 
     | 
    
         
            -
                        raise "#{self}#run _must_ return self" unless self === result
         
     | 
| 
       390 
     | 
    
         
            -
                        reporter.record result
         
     | 
| 
       391 
     | 
    
         
            -
                        check_failures result, reporter
         
     | 
| 
       392 
     | 
    
         
            -
                      end
         
     | 
| 
       393 
     | 
    
         
            -
                    end
         
     | 
| 
       394 
     | 
    
         
            -
                  ensure # ensure after last runs
         
     | 
| 
       395 
     | 
    
         
            -
                    # after_last
         
     | 
| 
       396 
     | 
    
         
            -
                    # init method1 again
         
     | 
| 
       397 
     | 
    
         
            -
                    method1 = self.new(filtered_methods.first)
         
     | 
| 
       398 
     | 
    
         
            -
                    method1.capture_exceptions do
         
     | 
| 
       399 
     | 
    
         
            -
                      method1.after_last_method
         
     | 
| 
       400 
     | 
    
         
            -
                    end
         
     | 
| 
       401 
     | 
    
         
            -
                    with_info_handler reporter do
         
     | 
| 
       402 
     | 
    
         
            -
                      if !method1.failures.empty?
         
     | 
| 
       403 
     | 
    
         
            -
                        reporter.record method1
         
     | 
| 
       404 
     | 
    
         
            -
                        check_failures method1, reporter
         
     | 
| 
       405 
     | 
    
         
            -
                      end
         
     | 
| 
      
 286 
     | 
    
         
            +
                  with_info_handler reporter do
         
     | 
| 
      
 287 
     | 
    
         
            +
                    filtered_methods.each do |method_name|
         
     | 
| 
      
 288 
     | 
    
         
            +
                      run_one_method self, method_name, reporter
         
     | 
| 
       406 
289 
     | 
    
         
             
                    end
         
     | 
| 
       407 
290 
     | 
    
         
             
                  end
         
     | 
| 
       408 
291 
     | 
    
         
             
                end
         
     | 
| 
       409 
292 
     | 
    
         | 
| 
       410 
     | 
    
         
            -
                def  
     | 
| 
       411 
     | 
    
         
            -
             
     | 
| 
      
 293 
     | 
    
         
            +
                def self.run_one_method klass, method_name, reporter
         
     | 
| 
      
 294 
     | 
    
         
            +
                  reporter.record Minitest.run_one_method(klass, method_name)
         
     | 
| 
      
 295 
     | 
    
         
            +
                end
         
     | 
| 
       412 
296 
     | 
    
         | 
| 
       413 
297 
     | 
    
         
             
                def self.with_info_handler reporter, &block # :nodoc:
         
     | 
| 
       414 
298 
     | 
    
         
             
                  handler = lambda do
         
     | 
| 
         @@ -507,6 +391,8 @@ module Minitest 
     | 
|
| 
       507 
391 
     | 
    
         
             
              # you want. Go nuts.
         
     | 
| 
       508 
392 
     | 
    
         | 
| 
       509 
393 
     | 
    
         
             
              class AbstractReporter
         
     | 
| 
      
 394 
     | 
    
         
            +
                include Mutex_m
         
     | 
| 
      
 395 
     | 
    
         
            +
             
     | 
| 
       510 
396 
     | 
    
         
             
                ##
         
     | 
| 
       511 
397 
     | 
    
         
             
                # Starts reporting on the run.
         
     | 
| 
       512 
398 
     | 
    
         | 
| 
         @@ -546,6 +432,7 @@ module Minitest 
     | 
|
| 
       546 
432 
     | 
    
         
             
                attr_accessor :options
         
     | 
| 
       547 
433 
     | 
    
         | 
| 
       548 
434 
     | 
    
         
             
                def initialize io = $stdout, options = {} # :nodoc:
         
     | 
| 
      
 435 
     | 
    
         
            +
                  super()
         
     | 
| 
       549 
436 
     | 
    
         
             
                  self.io      = io
         
     | 
| 
       550 
437 
     | 
    
         
             
                  self.options = options
         
     | 
| 
       551 
438 
     | 
    
         
             
                end
         
     | 
| 
         @@ -645,6 +532,11 @@ module Minitest 
     | 
|
| 
       645 
532 
     | 
    
         
             
                def start # :nodoc:
         
     | 
| 
       646 
533 
     | 
    
         
             
                  super
         
     | 
| 
       647 
534 
     | 
    
         | 
| 
      
 535 
     | 
    
         
            +
                  io.puts "Run options: #{options[:args]}"
         
     | 
| 
      
 536 
     | 
    
         
            +
                  io.puts
         
     | 
| 
      
 537 
     | 
    
         
            +
                  io.puts "# Running:"
         
     | 
| 
      
 538 
     | 
    
         
            +
                  io.puts
         
     | 
| 
      
 539 
     | 
    
         
            +
             
     | 
| 
       648 
540 
     | 
    
         
             
                  self.sync = io.respond_to? :"sync=" # stupid emacs
         
     | 
| 
       649 
541 
     | 
    
         
             
                  self.old_sync, io.sync = io.sync, true if self.sync
         
     | 
| 
       650 
542 
     | 
    
         
             
                end
         
     | 
| 
         @@ -662,7 +554,8 @@ module Minitest 
     | 
|
| 
       662 
554 
     | 
    
         
             
                end
         
     | 
| 
       663 
555 
     | 
    
         | 
| 
       664 
556 
     | 
    
         
             
                def statistics # :nodoc:
         
     | 
| 
       665 
     | 
    
         
            -
                  "Finished in  
     | 
| 
      
 557 
     | 
    
         
            +
                  "Finished in %.6fs, %.4f runs/s, %.4f assertions/s." %
         
     | 
| 
      
 558 
     | 
    
         
            +
                    [total_time, count / total_time, assertions / total_time]
         
     | 
| 
       666 
559 
     | 
    
         
             
                end
         
     | 
| 
       667 
560 
     | 
    
         | 
| 
       668 
561 
     | 
    
         
             
                def aggregated_results # :nodoc:
         
     | 
| 
         @@ -674,6 +567,8 @@ module Minitest 
     | 
|
| 
       674 
567 
     | 
    
         
             
                  end.join("\n") + "\n"
         
     | 
| 
       675 
568 
     | 
    
         
             
                end
         
     | 
| 
       676 
569 
     | 
    
         | 
| 
      
 570 
     | 
    
         
            +
                alias to_s aggregated_results
         
     | 
| 
      
 571 
     | 
    
         
            +
             
     | 
| 
       677 
572 
     | 
    
         
             
                def summary # :nodoc:
         
     | 
| 
       678 
573 
     | 
    
         
             
                  extra = ""
         
     | 
| 
       679 
574 
     | 
    
         | 
| 
         @@ -695,6 +590,7 @@ module Minitest 
     | 
|
| 
       695 
590 
     | 
    
         
             
                attr_accessor :reporters
         
     | 
| 
       696 
591 
     | 
    
         | 
| 
       697 
592 
     | 
    
         
             
                def initialize *reporters # :nodoc:
         
     | 
| 
      
 593 
     | 
    
         
            +
                  super()
         
     | 
| 
       698 
594 
     | 
    
         
             
                  self.reporters = reporters
         
     | 
| 
       699 
595 
     | 
    
         
             
                end
         
     | 
| 
       700 
596 
     | 
    
         | 
| 
         @@ -859,6 +755,12 @@ module Minitest 
     | 
|
| 
       859 
755 
     | 
    
         
             
              end
         
     | 
| 
       860 
756 
     | 
    
         | 
| 
       861 
757 
     | 
    
         
             
              self.backtrace_filter = BacktraceFilter.new
         
     | 
| 
      
 758 
     | 
    
         
            +
             
     | 
| 
      
 759 
     | 
    
         
            +
              def self.run_one_method klass, method_name # :nodoc:
         
     | 
| 
      
 760 
     | 
    
         
            +
                result = klass.new(method_name).run
         
     | 
| 
      
 761 
     | 
    
         
            +
                raise "#{klass}#run _must_ return self" unless klass === result
         
     | 
| 
      
 762 
     | 
    
         
            +
                result
         
     | 
| 
      
 763 
     | 
    
         
            +
              end
         
     | 
| 
       862 
764 
     | 
    
         
             
            end
         
     | 
| 
       863 
765 
     | 
    
         | 
| 
       864 
766 
     | 
    
         
             
            require "minitest/test"
         
     |