minitest 5.11.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,26 @@
1
+ .autotest
2
+ History.rdoc
3
+ Manifest.txt
4
+ README.rdoc
5
+ Rakefile
6
+ design_rationale.rb
7
+ lib/hoe/minitest.rb
8
+ lib/minitest.rb
9
+ lib/minitest/assertions.rb
10
+ lib/minitest/autorun.rb
11
+ lib/minitest/benchmark.rb
12
+ lib/minitest/expectations.rb
13
+ lib/minitest/hell.rb
14
+ lib/minitest/mock.rb
15
+ lib/minitest/parallel.rb
16
+ lib/minitest/pride.rb
17
+ lib/minitest/pride_plugin.rb
18
+ lib/minitest/spec.rb
19
+ lib/minitest/test.rb
20
+ lib/minitest/unit.rb
21
+ test/minitest/metametameta.rb
22
+ test/minitest/test_minitest_benchmark.rb
23
+ test/minitest/test_minitest_mock.rb
24
+ test/minitest/test_minitest_reporter.rb
25
+ test/minitest/test_minitest_spec.rb
26
+ test/minitest/test_minitest_test.rb
@@ -0,0 +1,746 @@
1
+ = minitest/{test,spec,mock,benchmark}
2
+
3
+ home :: https://github.com/seattlerb/minitest
4
+ bugs :: https://github.com/seattlerb/minitest/issues
5
+ rdoc :: http://docs.seattlerb.org/minitest
6
+ vim :: https://github.com/sunaku/vim-ruby-minitest
7
+ emacs:: https://github.com/arthurnn/minitest-emacs
8
+
9
+ == DESCRIPTION:
10
+
11
+ minitest provides a complete suite of testing facilities supporting
12
+ TDD, BDD, mocking, and benchmarking.
13
+
14
+ "I had a class with Jim Weirich on testing last week and we were
15
+ allowed to choose our testing frameworks. Kirk Haines and I were
16
+ paired up and we cracked open the code for a few test
17
+ frameworks...
18
+
19
+ I MUST say that minitest is *very* readable / understandable
20
+ compared to the 'other two' options we looked at. Nicely done and
21
+ thank you for helping us keep our mental sanity."
22
+
23
+ -- Wayne E. Seguin
24
+
25
+ minitest/test is a small and incredibly fast unit testing framework.
26
+ It provides a rich set of assertions to make your tests clean and
27
+ readable.
28
+
29
+ minitest/spec is a functionally complete spec engine. It hooks onto
30
+ minitest/test and seamlessly bridges test assertions over to spec
31
+ expectations.
32
+
33
+ minitest/benchmark is an awesome way to assert the performance of your
34
+ algorithms in a repeatable manner. Now you can assert that your newb
35
+ co-worker doesn't replace your linear algorithm with an exponential
36
+ one!
37
+
38
+ minitest/mock by Steven Baker, is a beautifully tiny mock (and stub)
39
+ object framework.
40
+
41
+ minitest/pride shows pride in testing and adds coloring to your test
42
+ output. I guess it is an example of how to write IO pipes too. :P
43
+
44
+ minitest/test is meant to have a clean implementation for language
45
+ implementors that need a minimal set of methods to bootstrap a working
46
+ test suite. For example, there is no magic involved for test-case
47
+ discovery.
48
+
49
+ "Again, I can't praise enough the idea of a testing/specing
50
+ framework that I can actually read in full in one sitting!"
51
+
52
+ -- Piotr Szotkowski
53
+
54
+ Comparing to rspec:
55
+
56
+ rspec is a testing DSL. minitest is ruby.
57
+
58
+ -- Adam Hawkins, "Bow Before MiniTest"
59
+
60
+ minitest doesn't reinvent anything that ruby already provides, like:
61
+ classes, modules, inheritance, methods. This means you only have to
62
+ learn ruby to use minitest and all of your regular OO practices like
63
+ extract-method refactorings still apply.
64
+
65
+ == FEATURES/PROBLEMS:
66
+
67
+ * minitest/autorun - the easy and explicit way to run all your tests.
68
+ * minitest/test - a very fast, simple, and clean test system.
69
+ * minitest/spec - a very fast, simple, and clean spec system.
70
+ * minitest/mock - a simple and clean mock/stub system.
71
+ * minitest/benchmark - an awesome way to assert your algorithm's performance.
72
+ * minitest/pride - show your pride in testing!
73
+ * Incredibly small and fast runner, but no bells and whistles.
74
+ * Written by squishy human beings. Software can never be perfect. We will all eventually die.
75
+
76
+ == RATIONALE:
77
+
78
+ See design_rationale.rb to see how specs and tests work in minitest.
79
+
80
+ == SYNOPSIS:
81
+
82
+ Given that you'd like to test the following class:
83
+
84
+ class Meme
85
+ def i_can_has_cheezburger?
86
+ "OHAI!"
87
+ end
88
+
89
+ def will_it_blend?
90
+ "YES!"
91
+ end
92
+ end
93
+
94
+ === Unit tests
95
+
96
+ Define your tests as methods beginning with +test_+.
97
+
98
+ require "minitest/autorun"
99
+
100
+ class TestMeme < Minitest::Test
101
+ def setup
102
+ @meme = Meme.new
103
+ end
104
+
105
+ def test_that_kitty_can_eat
106
+ assert_equal "OHAI!", @meme.i_can_has_cheezburger?
107
+ end
108
+
109
+ def test_that_it_will_not_blend
110
+ refute_match /^no/i, @meme.will_it_blend?
111
+ end
112
+
113
+ def test_that_will_be_skipped
114
+ skip "test this later"
115
+ end
116
+ end
117
+
118
+ === Specs
119
+
120
+ require "minitest/autorun"
121
+
122
+ describe Meme do
123
+ before do
124
+ @meme = Meme.new
125
+ end
126
+
127
+ describe "when asked about cheeseburgers" do
128
+ it "must respond positively" do
129
+ @meme.i_can_has_cheezburger?.must_equal "OHAI!"
130
+ end
131
+ end
132
+
133
+ describe "when asked about blending possibilities" do
134
+ it "won't say no" do
135
+ @meme.will_it_blend?.wont_match /^no/i
136
+ end
137
+ end
138
+ end
139
+
140
+ For matchers support check out:
141
+
142
+ * https://github.com/wojtekmach/minitest-matchers
143
+ * https://github.com/rmm5t/minitest-matchers_vaccine
144
+
145
+ === Benchmarks
146
+
147
+ Add benchmarks to your tests.
148
+
149
+ # optionally run benchmarks, good for CI-only work!
150
+ require "minitest/benchmark" if ENV["BENCH"]
151
+
152
+ class TestMeme < Minitest::Benchmark
153
+ # Override self.bench_range or default range is [1, 10, 100, 1_000, 10_000]
154
+ def bench_my_algorithm
155
+ assert_performance_linear 0.9999 do |n| # n is a range value
156
+ @obj.my_algorithm(n)
157
+ end
158
+ end
159
+ end
160
+
161
+ Or add them to your specs. If you make benchmarks optional, you'll
162
+ need to wrap your benchmarks in a conditional since the methods won't
163
+ be defined. In minitest 5, the describe name needs to match
164
+ <tt>/Bench(mark)?$/</tt>.
165
+
166
+ describe "Meme Benchmark" do
167
+ if ENV["BENCH"] then
168
+ bench_performance_linear "my_algorithm", 0.9999 do |n|
169
+ 100.times do
170
+ @obj.my_algorithm(n)
171
+ end
172
+ end
173
+ end
174
+ end
175
+
176
+ outputs something like:
177
+
178
+ # Running benchmarks:
179
+
180
+ TestBlah 100 1000 10000
181
+ bench_my_algorithm 0.006167 0.079279 0.786993
182
+ bench_other_algorithm 0.061679 0.792797 7.869932
183
+
184
+ Output is tab-delimited to make it easy to paste into a spreadsheet.
185
+
186
+ === Mocks
187
+
188
+ Mocks and stubs defined using terminology by Fowler & Meszaros at
189
+ http://www.martinfowler.com/bliki/TestDouble.html:
190
+
191
+ "Mocks are pre-programmed with expectations which form a specification
192
+ of the calls they are expected to receive. They can throw an exception
193
+ if they receive a call they don't expect and are checked during
194
+ verification to ensure they got all the calls they were expecting."
195
+
196
+ class MemeAsker
197
+ def initialize(meme)
198
+ @meme = meme
199
+ end
200
+
201
+ def ask(question)
202
+ method = question.tr(" ", "_") + "?"
203
+ @meme.__send__(method)
204
+ end
205
+ end
206
+
207
+ require "minitest/autorun"
208
+
209
+ describe MemeAsker, :ask do
210
+ describe "when passed an unpunctuated question" do
211
+ it "should invoke the appropriate predicate method on the meme" do
212
+ @meme = Minitest::Mock.new
213
+ @meme_asker = MemeAsker.new @meme
214
+ @meme.expect :will_it_blend?, :return_value
215
+
216
+ @meme_asker.ask "will it blend"
217
+
218
+ @meme.verify
219
+ end
220
+ end
221
+ end
222
+
223
+ **Multi-threading and Mocks**
224
+
225
+ Minitest mocks do not support multi-threading if it works, fine, if it doesn't
226
+ you can use regular ruby patterns and facilities like local variables. Here's
227
+ an example of asserting that code inside a thread is run:
228
+
229
+ def test_called_inside_thread
230
+ called = false
231
+ pr = Proc.new { called = true }
232
+ thread = Thread.new(&pr)
233
+ thread.join
234
+ assert called, "proc not called"
235
+ end
236
+
237
+ === Stubs
238
+
239
+ Mocks and stubs are defined using terminology by Fowler & Meszaros at
240
+ http://www.martinfowler.com/bliki/TestDouble.html:
241
+
242
+ "Stubs provide canned answers to calls made during the test".
243
+
244
+ Minitest's stub method overrides a single method for the duration of
245
+ the block.
246
+
247
+ def test_stale_eh
248
+ obj_under_test = Something.new
249
+
250
+ refute obj_under_test.stale?
251
+
252
+ Time.stub :now, Time.at(0) do # stub goes away once the block is done
253
+ assert obj_under_test.stale?
254
+ end
255
+ end
256
+
257
+ A note on stubbing: In order to stub a method, the method must
258
+ actually exist prior to stubbing. Use a singleton method to create a
259
+ new non-existing method:
260
+
261
+ def obj_under_test.fake_method
262
+ ...
263
+ end
264
+
265
+ === Running Your Tests
266
+
267
+ Ideally, you'll use a rake task to run your tests, either piecemeal or
268
+ all at once. Both rake and rails ship with rake tasks for running your
269
+ tests. BUT! You don't have to:
270
+
271
+ % ruby -Ilib:test test/minitest/test_minitest_test.rb
272
+ Run options: --seed 37685
273
+
274
+ # Running:
275
+
276
+ ...................................................................... (etc)
277
+
278
+ Finished in 0.107130s, 1446.8403 runs/s, 2959.0217 assertions/s.
279
+
280
+ 155 runs, 317 assertions, 0 failures, 0 errors, 0 skips
281
+
282
+ There are runtime options available, both from minitest itself, and also
283
+ provided via plugins. To see them, simply run with +--help+:
284
+
285
+ % ruby -Ilib:test test/minitest/test_minitest_test.rb --help
286
+ minitest options:
287
+ -h, --help Display this help.
288
+ -s, --seed SEED Sets random seed. Also via env. Eg: SEED=n rake
289
+ -v, --verbose Verbose. Show progress processing files.
290
+ -n, --name PATTERN Filter run on /regexp/ or string.
291
+ -e, --exclude PATTERN Exclude /regexp/ or string from run.
292
+
293
+ Known extensions: pride, autotest
294
+ -p, --pride Pride. Show your testing pride!
295
+ -a, --autotest Connect to autotest server.
296
+
297
+ == Writing Extensions
298
+
299
+ To define a plugin, add a file named minitest/XXX_plugin.rb to your
300
+ project/gem. That file must be discoverable via ruby's LOAD_PATH (via
301
+ rubygems or otherwise). Minitest will find and require that file using
302
+ Gem.find_files. It will then try to call +plugin_XXX_init+ during
303
+ startup. The option processor will also try to call +plugin_XXX_options+
304
+ passing the OptionParser instance and the current options hash. This
305
+ lets you register your own command-line options. Here's a totally
306
+ bogus example:
307
+
308
+ # minitest/bogus_plugin.rb:
309
+
310
+ module Minitest
311
+ def self.plugin_bogus_options(opts, options)
312
+ opts.on "--myci", "Report results to my CI" do
313
+ options[:myci] = true
314
+ options[:myci_addr] = get_myci_addr
315
+ options[:myci_port] = get_myci_port
316
+ end
317
+ end
318
+
319
+ def self.plugin_bogus_init(options)
320
+ self.reporter << MyCI.new(options) if options[:myci]
321
+ end
322
+ end
323
+
324
+ === Adding custom reporters
325
+
326
+ Minitest uses composite reporter to output test results using multiple
327
+ reporter instances. You can add new reporters to the composite during
328
+ the init_plugins phase. As we saw in +plugin_bogus_init+ above, you
329
+ simply add your reporter instance to the composite via <tt><<</tt>.
330
+
331
+ +AbstractReporter+ defines the API for reporters. You may subclass it
332
+ and override any method you want to achieve your desired behavior.
333
+
334
+ start :: Called when the run has started.
335
+ record :: Called for each result, passed or otherwise.
336
+ report :: Called at the end of the run.
337
+ passed? :: Called to see if you detected any problems.
338
+
339
+ Using our example above, here is how we might implement MyCI:
340
+
341
+ # minitest/bogus_plugin.rb
342
+
343
+ module Minitest
344
+ class MyCI < AbstractReporter
345
+ attr_accessor :results, :addr, :port
346
+
347
+ def initialize options
348
+ self.results = []
349
+ self.addr = options[:myci_addr]
350
+ self.port = options[:myci_port]
351
+ end
352
+
353
+ def record result
354
+ self.results << result
355
+ end
356
+
357
+ def report
358
+ CI.connect(addr, port).send_results self.results
359
+ end
360
+ end
361
+
362
+ # code from above...
363
+ end
364
+
365
+ == FAQ
366
+
367
+ === How to test SimpleDelegates?
368
+
369
+ The following implementation and test:
370
+
371
+ class Worker < SimpleDelegator
372
+ def work
373
+ end
374
+ end
375
+
376
+ describe Worker do
377
+ before do
378
+ @worker = Worker.new(Object.new)
379
+ end
380
+
381
+ it "must respond to work" do
382
+ @worker.must_respond_to :work
383
+ end
384
+ end
385
+
386
+ outputs a failure:
387
+
388
+ 1) Failure:
389
+ Worker#test_0001_must respond to work [bug11.rb:16]:
390
+ Expected #<Object:0x007f9e7184f0a0> (Object) to respond to #work.
391
+
392
+ Worker is a SimpleDelegate which in 1.9+ is a subclass of BasicObject.
393
+ Expectations are put on Object (one level down) so the Worker
394
+ (SimpleDelegate) hits +method_missing+ and delegates down to the
395
+ +Object.new+ instance. That object doesn't respond to work so the test
396
+ fails.
397
+
398
+ You can bypass <tt>SimpleDelegate#method_missing</tt> by extending the worker
399
+ with <tt>Minitest::Expectations</tt>. You can either do that in your setup at
400
+ the instance level, like:
401
+
402
+ before do
403
+ @worker = Worker.new(Object.new)
404
+ @worker.extend Minitest::Expectations
405
+ end
406
+
407
+ or you can extend the Worker class (within the test file!), like:
408
+
409
+ class Worker
410
+ include ::Minitest::Expectations
411
+ end
412
+
413
+ === How to share code across test classes?
414
+
415
+ Use a module. That's exactly what they're for:
416
+
417
+ module UsefulStuff
418
+ def useful_method
419
+ # ...
420
+ end
421
+ end
422
+
423
+ describe Blah do
424
+ include UsefulStuff
425
+
426
+ def test_whatever
427
+ # useful_method available here
428
+ end
429
+ end
430
+
431
+ Remember, +describe+ simply creates test classes. It's just ruby at
432
+ the end of the day and all your normal Good Ruby Rules (tm) apply. If
433
+ you want to extend your test using setup/teardown via a module, just
434
+ make sure you ALWAYS call super. before/after automatically call super
435
+ for you, so make sure you don't do it twice.
436
+
437
+ === How to run code before a group of tests?
438
+
439
+ Use a constant with begin...end like this:
440
+
441
+ describe Blah do
442
+ SETUP = begin
443
+ # ... this runs once when describe Blah starts
444
+ end
445
+ # ...
446
+ end
447
+
448
+ This can be useful for expensive initializations or sharing state.
449
+ Remember, this is just ruby code, so you need to make sure this
450
+ technique and sharing state doesn't interfere with your tests.
451
+
452
+ === Why am I seeing <tt>uninitialized constant MiniTest::Test (NameError)</tt>?
453
+
454
+ Are you running the test with Bundler (e.g. via <tt>bundle exec</tt> )? If so,
455
+ in order to require minitest, you must first add the <tt>gem 'minitest'</tt>
456
+ to your Gemfile and run +bundle+. Once it's installed, you should be
457
+ able to require minitest and run your tests.
458
+
459
+ == Prominent Projects using Minitest:
460
+
461
+ * arel
462
+ * journey
463
+ * mime-types
464
+ * nokogiri
465
+ * rails (active_support et al)
466
+ * rake
467
+ * rdoc
468
+ * ...and of course, everything from seattle.rb...
469
+
470
+ == Developing Minitest:
471
+
472
+ === Minitest's own tests require UTF-8 external encoding.
473
+
474
+ This is a common problem in Windows, where the default external Encoding is
475
+ often CP850, but can affect any platform.
476
+ Minitest can run test suites using any Encoding, but to run Minitest's
477
+ own tests you must have a default external Encoding of UTF-8.
478
+
479
+ If your encoding is wrong, you'll see errors like:
480
+
481
+ --- expected
482
+ +++ actual
483
+ @@ -1,2 +1,3 @@
484
+ # encoding: UTF-8
485
+ -"Expected /\\w+/ to not match \"blah blah blah\"."
486
+ +"Expected /\\w+/ to not match # encoding: UTF-8
487
+ +\"blah blah blah\"."
488
+
489
+ To check your current encoding, run:
490
+
491
+ ruby -e 'puts Encoding.default_external'
492
+
493
+ If your output is something other than UTF-8, you can set the RUBYOPTS
494
+ env variable to a value of '-Eutf-8'. Something like:
495
+
496
+ RUBYOPT='-Eutf-8' ruby -e 'puts Encoding.default_external'
497
+
498
+ Check your OS/shell documentation for the precise syntax (the above
499
+ will not work on a basic Windows CMD prompt, look for the SET command).
500
+ Once you've got it successfully outputing UTF-8, use the same setting
501
+ when running rake in Minitest.
502
+
503
+ === Minitest's own tests require GNU (or similar) diff.
504
+
505
+ This is also a problem primarily affecting Windows developers. PowerShell
506
+ has a command called diff, but it is not suitable for use with Minitest.
507
+
508
+ If you see failures like either of these, you are probably missing diff tool:
509
+
510
+ 4) Failure:
511
+ TestMinitestUnitTestCase#test_assert_equal_different_long [D:/ruby/seattlerb/minitest/test/minitest/test_minitest_test.rb:936]:
512
+ Expected: "--- expected\n+++ actual\n@@ -1 +1 @@\n-\"hahahahahahahahahahahahahahahahahahahaha\"\n+\"blahblahblahblahblahblahblahblahblahblah\"\n"
513
+ Actual: "Expected: \"hahahahahahahahahahahahahahahahahahahaha\"\n Actual: \"blahblahblahblahblahblahblahblahblahblah\""
514
+
515
+
516
+ 5) Failure:
517
+ TestMinitestUnitTestCase#test_assert_equal_different_collection_hash_hex_invisible [D:/ruby/seattlerb/minitest/test/minitest/test_minitest_test.rb:845]:
518
+ Expected: "No visible difference in the Hash#inspect output.\nYou should look at the implementation of #== on Hash or its members.\n
519
+ {1=>#<Object:0xXXXXXX>}"
520
+ Actual: "Expected: {1=>#<Object:0x00000003ba0470>}\n Actual: {1=>#<Object:0x00000003ba0448>}"
521
+
522
+
523
+ If you use Cygwin or MSYS2 or similar there are packages that include a
524
+ GNU diff for Windows. If you don't, you can download GNU diffutils from
525
+ http://gnuwin32.sourceforge.net/packages/diffutils.htm
526
+ (make sure to add it to your PATH).
527
+
528
+ You can make sure it's installed and path is configured properly with:
529
+
530
+ diff.exe -v
531
+
532
+ There are multiple lines of output, the first should be something like:
533
+
534
+ diff (GNU diffutils) 2.8.1
535
+
536
+ If you are using PowerShell make sure you run diff.exe, not just diff,
537
+ which will invoke the PowerShell built in function.
538
+
539
+ == Known Extensions:
540
+
541
+ capybara_minitest_spec :: Bridge between Capybara RSpec matchers and
542
+ Minitest::Spec expectations (e.g.
543
+ <tt>page.must_have_content("Title")</tt>).
544
+ color_pound_spec_reporter :: Test names print Ruby Object types in color with
545
+ your Minitest Spec style tests.
546
+ minispec-metadata :: Metadata for describe/it blocks & CLI tag filter.
547
+ E.g. <tt>it "requires JS driver", js: true do</tt> &
548
+ <tt>ruby test.rb --tag js</tt> runs tests tagged :js.
549
+ minispec-rails :: Minimal support to use Spec style in Rails 5+.
550
+ minitest-around :: Around block for minitest. An alternative to
551
+ setup/teardown dance.
552
+ minitest-assert_errors :: Adds Minitest assertions to test for errors raised
553
+ or not raised by Minitest itself.
554
+ minitest-autotest :: autotest is a continuous testing facility meant to
555
+ be used during development.
556
+ minitest-bacon :: minitest-bacon extends minitest with bacon-like
557
+ functionality.
558
+ minitest-bang :: Adds support for RSpec-style let! to immediately
559
+ invoke let statements before each test.
560
+ minitest-bisect :: Helps you isolate and debug random test failures.
561
+ minitest-blink1_reporter :: Display test results with a Blink1.
562
+ minitest-capistrano :: Assertions and expectations for testing
563
+ Capistrano recipes.
564
+ minitest-capybara :: Capybara matchers support for minitest unit and
565
+ spec.
566
+ minitest-chef-handler :: Run Minitest suites as Chef report handlers
567
+ minitest-ci :: CI reporter plugin for Minitest.
568
+ minitest-context :: Defines contexts for code reuse in Minitest
569
+ specs that share common expectations.
570
+ minitest-debugger :: Wraps assert so failed assertions drop into
571
+ the ruby debugger.
572
+ minitest-display :: Patches Minitest to allow for an easily
573
+ configurable output.
574
+ minitest-documentation :: Minimal documentation format inspired by rspec's.
575
+ minitest-doc_reporter :: Detailed output inspired by rspec's documentation
576
+ format.
577
+ minitest-emoji :: Print out emoji for your test passes, fails, and
578
+ skips.
579
+ minitest-english :: Semantically symmetric aliases for assertions and
580
+ expectations.
581
+ minitest-excludes :: Clean API for excluding certain tests you
582
+ don't want to run under certain conditions.
583
+ minitest-fail-fast :: Reimplements RSpec's "fail fast" feature
584
+ minitest-filecontent :: Support unit tests with expectation results in files.
585
+ Differing results will be stored again in files.
586
+ minitest-filesystem :: Adds assertion and expectation to help testing
587
+ filesystem contents.
588
+ minitest-firemock :: Makes your Minitest mocks more resilient.
589
+ minitest-focus :: Focus on one test at a time.
590
+ minitest-gcstats :: A minitest plugin that adds a report of the top
591
+ tests by number of objects allocated.
592
+ minitest-great_expectations :: Generally useful additions to minitest's
593
+ assertions and expectations.
594
+ minitest-growl :: Test notifier for minitest via growl.
595
+ minitest-happy :: GLOBALLY ACTIVATE MINITEST PRIDE! RAWR!
596
+ minitest-have_tag :: Adds Minitest assertions to test for the existence of
597
+ HTML tags, including contents, within a provided string.
598
+ minitest-hooks :: Around and before_all/after_all/around_all hooks
599
+ minitest-hyper :: Pretty, single-page HTML reports for your Minitest runs
600
+ minitest-implicit-subject :: Implicit declaration of the test subject.
601
+ minitest-instrument :: Instrument ActiveSupport::Notifications when
602
+ test method is executed.
603
+ minitest-instrument-db :: Store information about speed of test execution
604
+ provided by minitest-instrument in database.
605
+ minitest-junit :: JUnit-style XML reporter for minitest.
606
+ minitest-keyword :: Use Minitest assertions with keyword arguments.
607
+ minitest-libnotify :: Test notifier for minitest via libnotify.
608
+ minitest-line :: Run test at line number.
609
+ minitest-logger :: Define assert_log and enable minitest to test log messages.
610
+ Supports Logger and Log4r::Logger.
611
+ minitest-macruby :: Provides extensions to minitest for macruby UI
612
+ testing.
613
+ minitest-matchers :: Adds support for RSpec-style matchers to
614
+ minitest.
615
+ minitest-matchers_vaccine :: Adds assertions that adhere to the matcher spec,
616
+ but without any expectation infections.
617
+ minitest-metadata :: Annotate tests with metadata (key-value).
618
+ minitest-mongoid :: Mongoid assertion matchers for Minitest.
619
+ minitest-must_not :: Provides must_not as an alias for wont in
620
+ Minitest.
621
+ minitest-optional_retry :: Automatically retry failed test to help with flakiness.
622
+ minitest-osx :: Reporter for the Mac OS X notification center.
623
+ minitest-parallel_fork :: Fork-based parallelization
624
+ minitest-parallel-db :: Run tests in parallel with a single database.
625
+ minitest-power_assert :: PowerAssert for Minitest.
626
+ minitest-predicates :: Adds support for .predicate? methods.
627
+ minitest-profile :: List the 10 slowest tests in your suite.
628
+ minitest-rails :: Minitest integration for Rails 3.x.
629
+ minitest-rails-capybara :: Capybara integration for Minitest::Rails.
630
+ minitest-reporters :: Create customizable Minitest output formats.
631
+ minitest-rg :: Colored red/green output for Minitest.
632
+ minitest-rspec_mocks :: Use RSpec Mocks with Minitest.
633
+ minitest-server :: minitest-server provides a client/server setup
634
+ with your minitest process, allowing your test
635
+ run to send its results directly to a handler.
636
+ minitest-sequel :: Minitest assertions to speed-up development and
637
+ testing of Ruby Sequel database setups.
638
+ minitest-shared_description :: Support for shared specs and shared spec
639
+ subclasses
640
+ minitest-should_syntax :: RSpec-style <tt>x.should == y</tt> assertions for
641
+ Minitest.
642
+ minitest-shouldify :: Adding all manner of shoulds to Minitest (bad
643
+ idea)
644
+ minitest-snail :: Print a list of tests that take too long
645
+ minitest-spec-context :: Provides rspec-ish context method to
646
+ Minitest::Spec.
647
+ minitest-spec-expect :: Expect syntax for Minitest::Spec (e.g.
648
+ expect(sequences).to_include :celery_man).
649
+ minitest-spec-magic :: Minitest::Spec extensions for Rails and beyond.
650
+ minitest-spec-rails :: Drop in Minitest::Spec superclass for
651
+ ActiveSupport::TestCase.
652
+ minitest-sprint :: Runs (Get it? It's fast!) your tests and makes
653
+ it easier to rerun individual failures.
654
+ minitest-stately :: Find leaking state between tests
655
+ minitest-stub_any_instance :: Stub any instance of a method on the given class
656
+ for the duration of a block.
657
+ minitest-stub-const :: Stub constants for the duration of a block.
658
+ minitest-tags :: Add tags for minitest.
659
+ minitest-unordered :: Adds a new assertion to minitest for checking the
660
+ contents of a collection, ignoring element order.
661
+ minitest-vcr :: Automatic cassette managment with Minitest::Spec
662
+ and VCR.
663
+ minitest_owrapper :: Get tests results as a TestResult object.
664
+ minitest_should :: Shoulda style syntax for minitest test::unit.
665
+ minitest_tu_shim :: Bridges between test/unit and minitest.
666
+ mongoid-minitest :: Minitest matchers for Mongoid.
667
+ pry-rescue :: A pry plugin w/ minitest support. See
668
+ pry-rescue/minitest.rb.
669
+ rspec2minitest :: Easily translate any RSpec matchers to Minitest
670
+ assertions and expectations.
671
+
672
+ == Unknown Extensions:
673
+
674
+ Authors... Please send me a pull request with a description of your minitest extension.
675
+
676
+ * assay-minitest
677
+ * detroit-minitest
678
+ * em-minitest-spec
679
+ * flexmock-minitest
680
+ * guard-minitest
681
+ * guard-minitest-decisiv
682
+ * minitest-activemodel
683
+ * minitest-ar-assertions
684
+ * minitest-capybara-unit
685
+ * minitest-colorer
686
+ * minitest-deluxe
687
+ * minitest-extra-assertions
688
+ * minitest-rails-shoulda
689
+ * minitest-spec
690
+ * minitest-spec-should
691
+ * minitest-sugar
692
+ * spork-minitest
693
+
694
+ == Minitest related goods
695
+
696
+ * minitest/pride fabric: http://www.spoonflower.com/fabric/3928730-again-by-katie_allen
697
+
698
+ == REQUIREMENTS:
699
+
700
+ * Ruby 1.8.7+. No magic is involved. I hope.
701
+ * NOTE: 1.8 and 1.9 will be dropped in minitest 6+.
702
+
703
+ == INSTALL:
704
+
705
+ sudo gem install minitest
706
+
707
+ On 1.9, you already have it. To get newer candy you can still install
708
+ the gem, and then requiring "minitest/autorun" should automatically
709
+ pull it in. If not, you'll need to do it yourself:
710
+
711
+ gem "minitest" # ensures you"re using the gem, and not the built-in MT
712
+ require "minitest/autorun"
713
+
714
+ # ... usual testing stuffs ...
715
+
716
+ DO NOTE: There is a serious problem with the way that ruby 1.9/2.0
717
+ packages their own gems. They install a gem specification file, but
718
+ don't install the gem contents in the gem path. This messes up
719
+ Gem.find_files and many other things (gem which, gem contents, etc).
720
+
721
+ Just install minitest as a gem for real and you'll be happier.
722
+
723
+ == LICENSE:
724
+
725
+ (The MIT License)
726
+
727
+ Copyright (c) Ryan Davis, seattle.rb
728
+
729
+ Permission is hereby granted, free of charge, to any person obtaining
730
+ a copy of this software and associated documentation files (the
731
+ 'Software'), to deal in the Software without restriction, including
732
+ without limitation the rights to use, copy, modify, merge, publish,
733
+ distribute, sublicense, and/or sell copies of the Software, and to
734
+ permit persons to whom the Software is furnished to do so, subject to
735
+ the following conditions:
736
+
737
+ The above copyright notice and this permission notice shall be
738
+ included in all copies or substantial portions of the Software.
739
+
740
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
741
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
742
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
743
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
744
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
745
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
746
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.