minitest 5.12.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,27 @@
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_assertions.rb
23
+ test/minitest/test_minitest_benchmark.rb
24
+ test/minitest/test_minitest_mock.rb
25
+ test/minitest/test_minitest_reporter.rb
26
+ test/minitest/test_minitest_spec.rb
27
+ test/minitest/test_minitest_test.rb
@@ -0,0 +1,763 @@
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
+ You can set up a rake task to run all your tests by adding this to your Rakefile:
298
+
299
+ require "rake/testtask"
300
+
301
+ Rake::TestTask.new(:test) do |t|
302
+ t.libs << "test"
303
+ t.libs << "lib"
304
+ t.test_files = FileList["test/**/test_*.rb"]
305
+ end
306
+
307
+ task :default => :test
308
+
309
+ == Writing Extensions
310
+
311
+ To define a plugin, add a file named minitest/XXX_plugin.rb to your
312
+ project/gem. That file must be discoverable via ruby's LOAD_PATH (via
313
+ rubygems or otherwise). Minitest will find and require that file using
314
+ Gem.find_files. It will then try to call +plugin_XXX_init+ during
315
+ startup. The option processor will also try to call +plugin_XXX_options+
316
+ passing the OptionParser instance and the current options hash. This
317
+ lets you register your own command-line options. Here's a totally
318
+ bogus example:
319
+
320
+ # minitest/bogus_plugin.rb:
321
+
322
+ module Minitest
323
+ def self.plugin_bogus_options(opts, options)
324
+ opts.on "--myci", "Report results to my CI" do
325
+ options[:myci] = true
326
+ options[:myci_addr] = get_myci_addr
327
+ options[:myci_port] = get_myci_port
328
+ end
329
+ end
330
+
331
+ def self.plugin_bogus_init(options)
332
+ self.reporter << MyCI.new(options) if options[:myci]
333
+ end
334
+ end
335
+
336
+ === Adding custom reporters
337
+
338
+ Minitest uses composite reporter to output test results using multiple
339
+ reporter instances. You can add new reporters to the composite during
340
+ the init_plugins phase. As we saw in +plugin_bogus_init+ above, you
341
+ simply add your reporter instance to the composite via <tt><<</tt>.
342
+
343
+ +AbstractReporter+ defines the API for reporters. You may subclass it
344
+ and override any method you want to achieve your desired behavior.
345
+
346
+ start :: Called when the run has started.
347
+ record :: Called for each result, passed or otherwise.
348
+ report :: Called at the end of the run.
349
+ passed? :: Called to see if you detected any problems.
350
+
351
+ Using our example above, here is how we might implement MyCI:
352
+
353
+ # minitest/bogus_plugin.rb
354
+
355
+ module Minitest
356
+ class MyCI < AbstractReporter
357
+ attr_accessor :results, :addr, :port
358
+
359
+ def initialize options
360
+ self.results = []
361
+ self.addr = options[:myci_addr]
362
+ self.port = options[:myci_port]
363
+ end
364
+
365
+ def record result
366
+ self.results << result
367
+ end
368
+
369
+ def report
370
+ CI.connect(addr, port).send_results self.results
371
+ end
372
+ end
373
+
374
+ # code from above...
375
+ end
376
+
377
+ == FAQ
378
+
379
+ === How to test SimpleDelegates?
380
+
381
+ The following implementation and test:
382
+
383
+ class Worker < SimpleDelegator
384
+ def work
385
+ end
386
+ end
387
+
388
+ describe Worker do
389
+ before do
390
+ @worker = Worker.new(Object.new)
391
+ end
392
+
393
+ it "must respond to work" do
394
+ _(@worker).must_respond_to :work
395
+ end
396
+ end
397
+
398
+ outputs a failure:
399
+
400
+ 1) Failure:
401
+ Worker#test_0001_must respond to work [bug11.rb:16]:
402
+ Expected #<Object:0x007f9e7184f0a0> (Object) to respond to #work.
403
+
404
+ Worker is a SimpleDelegate which in 1.9+ is a subclass of BasicObject.
405
+ Expectations are put on Object (one level down) so the Worker
406
+ (SimpleDelegate) hits +method_missing+ and delegates down to the
407
+ +Object.new+ instance. That object doesn't respond to work so the test
408
+ fails.
409
+
410
+ You can bypass <tt>SimpleDelegate#method_missing</tt> by extending the worker
411
+ with <tt>Minitest::Expectations</tt>. You can either do that in your setup at
412
+ the instance level, like:
413
+
414
+ before do
415
+ @worker = Worker.new(Object.new)
416
+ @worker.extend Minitest::Expectations
417
+ end
418
+
419
+ or you can extend the Worker class (within the test file!), like:
420
+
421
+ class Worker
422
+ include ::Minitest::Expectations
423
+ end
424
+
425
+ === How to share code across test classes?
426
+
427
+ Use a module. That's exactly what they're for:
428
+
429
+ module UsefulStuff
430
+ def useful_method
431
+ # ...
432
+ end
433
+ end
434
+
435
+ describe Blah do
436
+ include UsefulStuff
437
+
438
+ def test_whatever
439
+ # useful_method available here
440
+ end
441
+ end
442
+
443
+ Remember, +describe+ simply creates test classes. It's just ruby at
444
+ the end of the day and all your normal Good Ruby Rules (tm) apply. If
445
+ you want to extend your test using setup/teardown via a module, just
446
+ make sure you ALWAYS call super. before/after automatically call super
447
+ for you, so make sure you don't do it twice.
448
+
449
+ === How to run code before a group of tests?
450
+
451
+ Use a constant with begin...end like this:
452
+
453
+ describe Blah do
454
+ SETUP = begin
455
+ # ... this runs once when describe Blah starts
456
+ end
457
+ # ...
458
+ end
459
+
460
+ This can be useful for expensive initializations or sharing state.
461
+ Remember, this is just ruby code, so you need to make sure this
462
+ technique and sharing state doesn't interfere with your tests.
463
+
464
+ === Why am I seeing <tt>uninitialized constant MiniTest::Test (NameError)</tt>?
465
+
466
+ Are you running the test with Bundler (e.g. via <tt>bundle exec</tt> )? If so,
467
+ in order to require minitest, you must first add the <tt>gem 'minitest'</tt>
468
+ to your Gemfile and run +bundle+. Once it's installed, you should be
469
+ able to require minitest and run your tests.
470
+
471
+ == Prominent Projects using Minitest:
472
+
473
+ * arel
474
+ * journey
475
+ * mime-types
476
+ * nokogiri
477
+ * rails (active_support et al)
478
+ * rake
479
+ * rdoc
480
+ * ...and of course, everything from seattle.rb...
481
+
482
+ == Developing Minitest:
483
+
484
+ Minitest requires {Hoe}[https://rubygems.org/gems/hoe].
485
+
486
+ === Minitest's own tests require UTF-8 external encoding.
487
+
488
+ This is a common problem in Windows, where the default external Encoding is
489
+ often CP850, but can affect any platform.
490
+ Minitest can run test suites using any Encoding, but to run Minitest's
491
+ own tests you must have a default external Encoding of UTF-8.
492
+
493
+ If your encoding is wrong, you'll see errors like:
494
+
495
+ --- expected
496
+ +++ actual
497
+ @@ -1,2 +1,3 @@
498
+ # encoding: UTF-8
499
+ -"Expected /\\w+/ to not match \"blah blah blah\"."
500
+ +"Expected /\\w+/ to not match # encoding: UTF-8
501
+ +\"blah blah blah\"."
502
+
503
+ To check your current encoding, run:
504
+
505
+ ruby -e 'puts Encoding.default_external'
506
+
507
+ If your output is something other than UTF-8, you can set the RUBYOPTS
508
+ env variable to a value of '-Eutf-8'. Something like:
509
+
510
+ RUBYOPT='-Eutf-8' ruby -e 'puts Encoding.default_external'
511
+
512
+ Check your OS/shell documentation for the precise syntax (the above
513
+ will not work on a basic Windows CMD prompt, look for the SET command).
514
+ Once you've got it successfully outputing UTF-8, use the same setting
515
+ when running rake in Minitest.
516
+
517
+ === Minitest's own tests require GNU (or similar) diff.
518
+
519
+ This is also a problem primarily affecting Windows developers. PowerShell
520
+ has a command called diff, but it is not suitable for use with Minitest.
521
+
522
+ If you see failures like either of these, you are probably missing diff tool:
523
+
524
+ 4) Failure:
525
+ TestMinitestUnitTestCase#test_assert_equal_different_long [D:/ruby/seattlerb/minitest/test/minitest/test_minitest_test.rb:936]:
526
+ Expected: "--- expected\n+++ actual\n@@ -1 +1 @@\n-\"hahahahahahahahahahahahahahahahahahahaha\"\n+\"blahblahblahblahblahblahblahblahblahblah\"\n"
527
+ Actual: "Expected: \"hahahahahahahahahahahahahahahahahahahaha\"\n Actual: \"blahblahblahblahblahblahblahblahblahblah\""
528
+
529
+
530
+ 5) Failure:
531
+ TestMinitestUnitTestCase#test_assert_equal_different_collection_hash_hex_invisible [D:/ruby/seattlerb/minitest/test/minitest/test_minitest_test.rb:845]:
532
+ Expected: "No visible difference in the Hash#inspect output.\nYou should look at the implementation of #== on Hash or its members.\n
533
+ {1=>#<Object:0xXXXXXX>}"
534
+ Actual: "Expected: {1=>#<Object:0x00000003ba0470>}\n Actual: {1=>#<Object:0x00000003ba0448>}"
535
+
536
+
537
+ If you use Cygwin or MSYS2 or similar there are packages that include a
538
+ GNU diff for Windows. If you don't, you can download GNU diffutils from
539
+ http://gnuwin32.sourceforge.net/packages/diffutils.htm
540
+ (make sure to add it to your PATH).
541
+
542
+ You can make sure it's installed and path is configured properly with:
543
+
544
+ diff.exe -v
545
+
546
+ There are multiple lines of output, the first should be something like:
547
+
548
+ diff (GNU diffutils) 2.8.1
549
+
550
+ If you are using PowerShell make sure you run diff.exe, not just diff,
551
+ which will invoke the PowerShell built in function.
552
+
553
+ == Known Extensions:
554
+
555
+ capybara_minitest_spec :: Bridge between Capybara RSpec matchers and
556
+ Minitest::Spec expectations (e.g.
557
+ <tt>page.must_have_content("Title")</tt>).
558
+ color_pound_spec_reporter :: Test names print Ruby Object types in color with
559
+ your Minitest Spec style tests.
560
+ minispec-metadata :: Metadata for describe/it blocks & CLI tag filter.
561
+ E.g. <tt>it "requires JS driver", js: true do</tt> &
562
+ <tt>ruby test.rb --tag js</tt> runs tests tagged :js.
563
+ minispec-rails :: Minimal support to use Spec style in Rails 5+.
564
+ mini-apivore :: for swagger based automated API testing.
565
+ minitest-around :: Around block for minitest. An alternative to
566
+ setup/teardown dance.
567
+ minitest-assert_errors :: Adds Minitest assertions to test for errors raised
568
+ or not raised by Minitest itself.
569
+ minitest-autotest :: autotest is a continuous testing facility meant to
570
+ be used during development.
571
+ minitest-bacon :: minitest-bacon extends minitest with bacon-like
572
+ functionality.
573
+ minitest-bang :: Adds support for RSpec-style let! to immediately
574
+ invoke let statements before each test.
575
+ minitest-bisect :: Helps you isolate and debug random test failures.
576
+ minitest-blink1_reporter :: Display test results with a Blink1.
577
+ minitest-capistrano :: Assertions and expectations for testing
578
+ Capistrano recipes.
579
+ minitest-capybara :: Capybara matchers support for minitest unit and
580
+ spec.
581
+ minitest-chef-handler :: Run Minitest suites as Chef report handlers
582
+ minitest-ci :: CI reporter plugin for Minitest.
583
+ minitest-context :: Defines contexts for code reuse in Minitest
584
+ specs that share common expectations.
585
+ minitest-debugger :: Wraps assert so failed assertions drop into
586
+ the ruby debugger.
587
+ minitest-display :: Patches Minitest to allow for an easily
588
+ configurable output.
589
+ minitest-documentation :: Minimal documentation format inspired by rspec's.
590
+ minitest-doc_reporter :: Detailed output inspired by rspec's documentation
591
+ format.
592
+ minitest-emoji :: Print out emoji for your test passes, fails, and
593
+ skips.
594
+ minitest-english :: Semantically symmetric aliases for assertions and
595
+ expectations.
596
+ minitest-excludes :: Clean API for excluding certain tests you
597
+ don't want to run under certain conditions.
598
+ minitest-fail-fast :: Reimplements RSpec's "fail fast" feature
599
+ minitest-filecontent :: Support unit tests with expectation results in files.
600
+ Differing results will be stored again in files.
601
+ minitest-filesystem :: Adds assertion and expectation to help testing
602
+ filesystem contents.
603
+ minitest-firemock :: Makes your Minitest mocks more resilient.
604
+ minitest-focus :: Focus on one test at a time.
605
+ minitest-gcstats :: A minitest plugin that adds a report of the top
606
+ tests by number of objects allocated.
607
+ minitest-global_expectations:: Support minitest expectation methods for all objects
608
+ minitest-great_expectations :: Generally useful additions to minitest's
609
+ assertions and expectations.
610
+ minitest-growl :: Test notifier for minitest via growl.
611
+ minitest-happy :: GLOBALLY ACTIVATE MINITEST PRIDE! RAWR!
612
+ minitest-have_tag :: Adds Minitest assertions to test for the existence of
613
+ HTML tags, including contents, within a provided string.
614
+ minitest-hooks :: Around and before_all/after_all/around_all hooks
615
+ minitest-hyper :: Pretty, single-page HTML reports for your Minitest runs
616
+ minitest-implicit-subject :: Implicit declaration of the test subject.
617
+ minitest-instrument :: Instrument ActiveSupport::Notifications when
618
+ test method is executed.
619
+ minitest-instrument-db :: Store information about speed of test execution
620
+ provided by minitest-instrument in database.
621
+ minitest-junit :: JUnit-style XML reporter for minitest.
622
+ minitest-keyword :: Use Minitest assertions with keyword arguments.
623
+ minitest-libnotify :: Test notifier for minitest via libnotify.
624
+ minitest-line :: Run test at line number.
625
+ minitest-logger :: Define assert_log and enable minitest to test log messages.
626
+ Supports Logger and Log4r::Logger.
627
+ minitest-macruby :: Provides extensions to minitest for macruby UI
628
+ testing.
629
+ minitest-matchers :: Adds support for RSpec-style matchers to
630
+ minitest.
631
+ minitest-matchers_vaccine :: Adds assertions that adhere to the matcher spec,
632
+ but without any expectation infections.
633
+ minitest-metadata :: Annotate tests with metadata (key-value).
634
+ minitest-mock_expectations :: Provides method call assertions for minitest.
635
+ minitest-mongoid :: Mongoid assertion matchers for Minitest.
636
+ minitest-must_not :: Provides must_not as an alias for wont in
637
+ Minitest.
638
+ minitest-optional_retry :: Automatically retry failed test to help with flakiness.
639
+ minitest-osx :: Reporter for the Mac OS X notification center.
640
+ minitest-parallel_fork :: Fork-based parallelization
641
+ minitest-parallel-db :: Run tests in parallel with a single database.
642
+ minitest-power_assert :: PowerAssert for Minitest.
643
+ minitest-predicates :: Adds support for .predicate? methods.
644
+ minitest-profile :: List the 10 slowest tests in your suite.
645
+ minitest-rails :: Minitest integration for Rails 3.x.
646
+ minitest-rails-capybara :: Capybara integration for Minitest::Rails.
647
+ minitest-reporters :: Create customizable Minitest output formats.
648
+ minitest-rg :: Colored red/green output for Minitest.
649
+ minitest-rspec_mocks :: Use RSpec Mocks with Minitest.
650
+ minitest-server :: minitest-server provides a client/server setup
651
+ with your minitest process, allowing your test
652
+ run to send its results directly to a handler.
653
+ minitest-sequel :: Minitest assertions to speed-up development and
654
+ testing of Ruby Sequel database setups.
655
+ minitest-shared_description :: Support for shared specs and shared spec
656
+ subclasses
657
+ minitest-should_syntax :: RSpec-style <tt>x.should == y</tt> assertions for
658
+ Minitest.
659
+ minitest-shouldify :: Adding all manner of shoulds to Minitest (bad
660
+ idea)
661
+ minitest-snail :: Print a list of tests that take too long
662
+ minitest-spec-context :: Provides rspec-ish context method to
663
+ Minitest::Spec.
664
+ minitest-spec-expect :: Expect syntax for Minitest::Spec (e.g.
665
+ expect(sequences).to_include :celery_man).
666
+ minitest-spec-magic :: Minitest::Spec extensions for Rails and beyond.
667
+ minitest-spec-rails :: Drop in Minitest::Spec superclass for
668
+ ActiveSupport::TestCase.
669
+ minitest-sprint :: Runs (Get it? It's fast!) your tests and makes
670
+ it easier to rerun individual failures.
671
+ minitest-stately :: Find leaking state between tests
672
+ minitest-stub_any_instance :: Stub any instance of a method on the given class
673
+ for the duration of a block.
674
+ minitest-stub-const :: Stub constants for the duration of a block.
675
+ minitest-tags :: Add tags for minitest.
676
+ minitest-unordered :: Adds a new assertion to minitest for checking the
677
+ contents of a collection, ignoring element order.
678
+ minitest-vcr :: Automatic cassette managment with Minitest::Spec
679
+ and VCR.
680
+ minitest_owrapper :: Get tests results as a TestResult object.
681
+ minitest_should :: Shoulda style syntax for minitest test::unit.
682
+ minitest_tu_shim :: Bridges between test/unit and minitest.
683
+ mongoid-minitest :: Minitest matchers for Mongoid.
684
+ mutant-minitest :: Minitest integration for mutant.
685
+ pry-rescue :: A pry plugin w/ minitest support. See
686
+ pry-rescue/minitest.rb.
687
+ rspec2minitest :: Easily translate any RSpec matchers to Minitest
688
+ assertions and expectations.
689
+
690
+ == Unknown Extensions:
691
+
692
+ Authors... Please send me a pull request with a description of your minitest extension.
693
+
694
+ * assay-minitest
695
+ * detroit-minitest
696
+ * em-minitest-spec
697
+ * flexmock-minitest
698
+ * guard-minitest
699
+ * guard-minitest-decisiv
700
+ * minitest-activemodel
701
+ * minitest-ar-assertions
702
+ * minitest-capybara-unit
703
+ * minitest-colorer
704
+ * minitest-deluxe
705
+ * minitest-extra-assertions
706
+ * minitest-rails-shoulda
707
+ * minitest-spec
708
+ * minitest-spec-should
709
+ * minitest-sugar
710
+ * spork-minitest
711
+
712
+ == Minitest related goods
713
+
714
+ * minitest/pride fabric: http://www.spoonflower.com/fabric/3928730-again-by-katie_allen
715
+
716
+ == REQUIREMENTS:
717
+
718
+ * Ruby 2.3+. No magic is involved. I hope.
719
+
720
+ == INSTALL:
721
+
722
+ sudo gem install minitest
723
+
724
+ On 1.9, you already have it. To get newer candy you can still install
725
+ the gem, and then requiring "minitest/autorun" should automatically
726
+ pull it in. If not, you'll need to do it yourself:
727
+
728
+ gem "minitest" # ensures you"re using the gem, and not the built-in MT
729
+ require "minitest/autorun"
730
+
731
+ # ... usual testing stuffs ...
732
+
733
+ DO NOTE: There is a serious problem with the way that ruby 1.9/2.0
734
+ packages their own gems. They install a gem specification file, but
735
+ don't install the gem contents in the gem path. This messes up
736
+ Gem.find_files and many other things (gem which, gem contents, etc).
737
+
738
+ Just install minitest as a gem for real and you'll be happier.
739
+
740
+ == LICENSE:
741
+
742
+ (The MIT License)
743
+
744
+ Copyright (c) Ryan Davis, seattle.rb
745
+
746
+ Permission is hereby granted, free of charge, to any person obtaining
747
+ a copy of this software and associated documentation files (the
748
+ 'Software'), to deal in the Software without restriction, including
749
+ without limitation the rights to use, copy, modify, merge, publish,
750
+ distribute, sublicense, and/or sell copies of the Software, and to
751
+ permit persons to whom the Software is furnished to do so, subject to
752
+ the following conditions:
753
+
754
+ The above copyright notice and this permission notice shall be
755
+ included in all copies or substantial portions of the Software.
756
+
757
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
758
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
759
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
760
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
761
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
762
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
763
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.