{"id":13502828,"url":"https://github.com/minitest/minitest","last_synced_at":"2025-12-11T23:09:53.206Z","repository":{"id":504181,"uuid":"131505","full_name":"minitest/minitest","owner":"minitest","description":"minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking.","archived":false,"fork":false,"pushed_at":"2025-03-12T19:16:54.000Z","size":1716,"stargazers_count":3325,"open_issues_count":19,"forks_count":570,"subscribers_count":60,"default_branch":"master","last_synced_at":"2025-05-13T12:49:23.810Z","etag":null,"topics":["minitest","ruby","seattlerb","test","testing"],"latest_commit_sha":null,"homepage":"https://docs.seattlerb.org/minitest/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/minitest.png","metadata":{"files":{"readme":"README.rdoc","changelog":"History.rdoc","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2009-02-18T07:40:21.000Z","updated_at":"2025-05-13T10:17:59.000Z","dependencies_parsed_at":"2023-07-08T13:17:11.196Z","dependency_job_id":"d5197300-f4a8-42d3-9981-b05941e39309","html_url":"https://github.com/minitest/minitest","commit_stats":{"total_commits":958,"total_committers":4,"mean_commits":239.5,"dds":"0.40083507306889354","last_synced_commit":"e4417c5b13ab917a60c218700041152136bc07c8"},"previous_names":["seattlerb/minitest"],"tags_count":141,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minitest%2Fminitest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minitest%2Fminitest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minitest%2Fminitest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minitest%2Fminitest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/minitest","download_url":"https://codeload.github.com/minitest/minitest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253968279,"owners_count":21992253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["minitest","ruby","seattlerb","test","testing"],"created_at":"2024-07-31T22:02:26.195Z","updated_at":"2025-12-11T23:09:53.199Z","avatar_url":"https://github.com/minitest.png","language":"Ruby","readme":"= minitest/{test,spec,mock,benchmark}\n\nhome :: https://minite.st/\ncode :: https://github.com/minitest/minitest\nbugs :: https://github.com/minitest/minitest/issues\nrdoc :: https://docs.seattlerb.org/minitest\nclog :: https://github.com/minitest/minitest/blob/master/History.rdoc\nvim  :: https://github.com/sunaku/vim-ruby-minitest\nemacs:: https://github.com/arthurnn/minitest-emacs\n\n== DESCRIPTION:\n\nminitest provides a complete suite of testing facilities supporting\nTDD, BDD, mocking, and benchmarking.\n\n    \"I had a class with Jim Weirich on testing last week and we were\n     allowed to choose our testing frameworks. Kirk Haines and I were\n     paired up and we cracked open the code for a few test\n     frameworks...\n\n     I MUST say that minitest is *very* readable / understandable\n     compared to the 'other two' options we looked at. Nicely done and\n     thank you for helping us keep our mental sanity.\"\n\n    -- Wayne E. Seguin\n\nminitest/test is a small and incredibly fast unit testing framework.\nIt provides a rich set of assertions to make your tests clean and\nreadable.\n\nminitest/spec is a functionally complete spec engine. It hooks onto\nminitest/test and seamlessly bridges test assertions over to spec\nexpectations.\n\nminitest/benchmark is an awesome way to assert the performance of your\nalgorithms in a repeatable manner. Now you can assert that your newb\nco-worker doesn't replace your linear algorithm with an exponential\none!\n\nminitest/mock by Steven Baker, is a beautifully tiny mock (and stub)\nobject framework.\n\nminitest/pride shows pride in testing and adds coloring to your test\noutput. I guess it is an example of how to write IO pipes too. :P\n\nminitest/test is meant to have a clean implementation for language\nimplementors that need a minimal set of methods to bootstrap a working\ntest suite. For example, there is no magic involved for test-case\ndiscovery.\n\n    \"Again, I can't praise enough the idea of a testing/specing\n     framework that I can actually read in full in one sitting!\"\n\n    -- Piotr Szotkowski\n\nComparing to rspec:\n\n    rspec is a testing DSL. minitest is ruby.\n\n    -- Adam Hawkins, \"Bow Before MiniTest\"\n\nminitest doesn't reinvent anything that ruby already provides, like:\nclasses, modules, inheritance, methods. This means you only have to\nlearn ruby to use minitest and all of your regular OO practices like\nextract-method refactorings still apply.\n\n== FEATURES/PROBLEMS:\n\n* minitest/autorun - the easy and explicit way to run all your tests.\n* minitest/test - a very fast, simple, and clean test system.\n* minitest/spec - a very fast, simple, and clean spec system.\n* minitest/mock - a simple and clean mock/stub system.\n* minitest/benchmark - an awesome way to assert your algorithm's performance.\n* minitest/pride - show your pride in testing!\n* minitest/test_task - a full-featured and clean rake task generator.\n* Incredibly small and fast runner, but no bells and whistles.\n* Written by squishy human beings. Software can never be perfect. We will all eventually die.\n\n== RATIONALE:\n\nSee design_rationale.rb to see how specs and tests work in minitest.\n\n== SYNOPSIS:\n\nGiven that you'd like to test the following class:\n\n  class Meme\n    def i_can_has_cheezburger?\n      \"OHAI!\"\n    end\n\n    def will_it_blend?\n      \"YES!\"\n    end\n  end\n\n=== Unit tests\n\nDefine your tests as methods beginning with +test_+. Use\n{assertions}[/minitest/Minitest/Assertions.html] to test for results\nor state.\n\n  require \"minitest/autorun\"\n\n  class TestMeme \u003c Minitest::Test\n    def setup\n      @meme = Meme.new\n    end\n\n    def test_that_kitty_can_eat\n      assert_equal \"OHAI!\", @meme.i_can_has_cheezburger?\n    end\n\n    def test_that_it_will_not_blend\n      refute_match /^no/i, @meme.will_it_blend?\n    end\n\n    def test_that_will_be_skipped\n      skip \"test this later\"\n    end\n  end\n\n=== Specs\n\nUse {expectations}[/minitest/Minitest/Expectations.html] to check\nresults or state. They must be wrapped in a value call (eg +_+).\n\n  require \"minitest/autorun\"\n\n  describe Meme do\n    before do\n      @meme = Meme.new\n    end\n\n    describe \"when asked about cheeseburgers\" do\n      it \"must respond positively\" do\n        _(@meme.i_can_has_cheezburger?).must_equal \"OHAI!\"\n      end\n    end\n\n    describe \"when asked about blending possibilities\" do\n      it \"won't say no\" do\n        _(@meme.will_it_blend?).wont_match /^no/i\n      end\n    end\n  end\n\nFor matchers support check out:\n\n* https://github.com/wojtekmach/minitest-matchers\n* https://github.com/rmm5t/minitest-matchers_vaccine\n\n=== Benchmarks\n\nAdd {benchmarks}[/minitest/Minitest/Benchmark.html] to your tests.\n\n  # optionally run benchmarks, good for CI-only work!\n  require \"minitest/benchmark\" if ENV[\"BENCH\"]\n\n  class TestMeme \u003c Minitest::Benchmark\n    # Override self.bench_range or default range is [1, 10, 100, 1_000, 10_000]\n    def bench_my_algorithm\n      assert_performance_linear 0.9999 do |n| # n is a range value\n        @obj.my_algorithm(n)\n      end\n    end\n  end\n\nOr add them to your specs. If you make benchmarks optional, you'll\nneed to wrap your benchmarks in a conditional since the methods won't\nbe defined. In minitest 5, the describe name needs to match\n\u003ctt\u003e/Bench(mark)?$/\u003c/tt\u003e.\n\n  describe \"Meme Benchmark\" do\n    if ENV[\"BENCH\"] then\n      bench_performance_linear \"my_algorithm\", 0.9999 do |n|\n        100.times do\n          @obj.my_algorithm(n)\n        end\n      end\n    end\n  end\n\noutputs something like:\n\n  # Running benchmarks:\n\n  TestBlah\t100\t1000\t10000\n  bench_my_algorithm\t 0.006167\t 0.079279\t 0.786993\n  bench_other_algorithm\t 0.061679\t 0.792797\t 7.869932\n\nOutput is tab-delimited to make it easy to paste into a spreadsheet.\n\n=== Mocks\n\nMocks and stubs defined using terminology by Fowler \u0026 Meszaros at\nhttps://www.martinfowler.com/bliki/TestDouble.html:\n\n\"Mocks are pre-programmed with expectations which form a specification\nof the calls they are expected to receive. They can throw an exception\nif they receive a call they don't expect and are checked during\nverification to ensure they got all the calls they were expecting.\"\n\n  class MemeAsker\n    def initialize(meme)\n      @meme = meme\n    end\n\n    def ask(question)\n      method = question.tr(\" \", \"_\") + \"?\"\n      @meme.__send__(method)\n    end\n  end\n\n  require \"minitest/autorun\"\n\n  describe MemeAsker, :ask do\n    describe \"when passed an unpunctuated question\" do\n      it \"should invoke the appropriate predicate method on the meme\" do\n        @meme = Minitest::Mock.new\n        @meme_asker = MemeAsker.new @meme\n        @meme.expect :will_it_blend?, :return_value\n\n        @meme_asker.ask \"will it blend\"\n\n        @meme.verify\n      end\n    end\n  end\n\n==== Multi-threading and Mocks\n\nMinitest mocks do not support multi-threading. If it works, fine, if it doesn't\nyou can use regular ruby patterns and facilities like local variables. Here's\nan example of asserting that code inside a thread is run:\n\n  def test_called_inside_thread\n    called = false\n    pr = Proc.new { called = true }\n    thread = Thread.new(\u0026pr)\n    thread.join\n    assert called, \"proc not called\"\n  end\n\n=== Stubs\n\nMocks and stubs are defined using terminology by Fowler \u0026 Meszaros at\nhttps://www.martinfowler.com/bliki/TestDouble.html:\n\n\"Stubs provide canned answers to calls made during the test\".\n\nMinitest's stub method overrides a single method for the duration of\nthe block.\n\n  def test_stale_eh\n    obj_under_test = Something.new\n\n    refute obj_under_test.stale?\n\n    Time.stub :now, Time.at(0) do   # stub goes away once the block is done\n      assert obj_under_test.stale?\n    end\n  end\n\nA note on stubbing: In order to stub a method, the method must\nactually exist prior to stubbing. Use a singleton method to create a\nnew non-existing method:\n\n  def obj_under_test.fake_method\n    ...\n  end\n\n=== Running Your Tests\n\nIdeally, you'll use a rake task to run your tests (see below), either\npiecemeal or all at once. BUT! You don't have to:\n\n    % ruby -Ilib:test test/minitest/test_minitest_test.rb\n    Run options: --seed 37685\n\n    # Running:\n\n    ...................................................................... (etc)\n\n    Finished in 0.107130s, 1446.8403 runs/s, 2959.0217 assertions/s.\n\n    155 runs, 317 assertions, 0 failures, 0 errors, 0 skips\n\nThere are runtime options available, both from minitest itself, and also\nprovided via plugins. To see them, simply run with +--help+:\n\n    % ruby -Ilib:test test/minitest/test_minitest_test.rb --help\n    minitest options:\n        -h, --help                       Display this help.\n        -s, --seed SEED                  Sets random seed. Also via env. Eg: SEED=n rake\n        -v, --verbose                    Verbose. Show progress processing files.\n        -n, --name PATTERN               Filter run on /regexp/ or string.\n        -e, --exclude PATTERN            Exclude /regexp/ or string from run.\n\n    Known extensions: pride, autotest\n        -p, --pride                      Pride. Show your testing pride!\n        -a, --autotest                   Connect to autotest server.\n\n=== Rake Tasks\n\nYou can set up a rake task to run all your tests by adding this to your Rakefile:\n\n    require \"minitest/test_task\"\n\n    Minitest::TestTask.create # named test, sensible defaults\n\n    # or more explicitly:\n\n    Minitest::TestTask.create(:test) do |t|\n      t.libs \u003c\u003c \"test\"\n      t.libs \u003c\u003c \"lib\"\n      t.warning = false\n      t.test_globs = [\"test/**/*_test.rb\"]\n    end\n\n    task :default =\u003e :test\n\nEach of these will generate 4 tasks:\n\n    rake test          :: Run the test suite.\n    rake test:cmd      :: Print out the test command.\n    rake test:isolated :: Show which test files fail when run separately.\n    rake test:slow     :: Show bottom 25 tests sorted by time.\n\n=== Rake Task Variables\n\nThere are a bunch of variables you can supply to rake to modify the run.\n\n    MT_LIB_EXTRAS :: Extra libs to dynamically override/inject for custom runs.\n    N             :: -n: Tests to run (string or /regexp/).\n    X             :: -x: Tests to exclude (string or /regexp/).\n    A             :: Any extra arguments. Honors shell quoting.\n    MT_CPU        :: How many threads to use for parallel test runs\n    SEED          :: -s --seed Sets random seed.\n    TESTOPTS      :: Deprecated, same as A\n    FILTER        :: Deprecated, same as A\n\n== Writing Extensions\n\nTo define a plugin, add a file named minitest/XXX_plugin.rb to your\nproject/gem. That file must be discoverable via ruby's LOAD_PATH (via\nrubygems or otherwise). Minitest will find and require that file using\nGem.find_files. It will then try to call +plugin_XXX_init+ during\nstartup. The option processor will also try to call +plugin_XXX_options+\npassing the OptionParser instance and the current options hash. This\nlets you register your own command-line options. Here's a totally\nbogus example:\n\n    # minitest/bogus_plugin.rb:\n\n    module Minitest\n      def self.plugin_bogus_options(opts, options)\n        opts.on \"--myci\", \"Report results to my CI\" do\n          options[:myci] = true\n          options[:myci_addr] = get_myci_addr\n          options[:myci_port] = get_myci_port\n        end\n      end\n\n      def self.plugin_bogus_init(options)\n        self.reporter \u003c\u003c MyCI.new(options) if options[:myci]\n      end\n    end\n\n=== Adding custom reporters\n\nMinitest uses composite reporter to output test results using multiple\nreporter instances. You can add new reporters to the composite during\nthe init_plugins phase. As we saw in +plugin_bogus_init+ above, you\nsimply add your reporter instance to the composite via \u003ctt\u003e\u003c\u003c\u003c/tt\u003e.\n\n+AbstractReporter+ defines the API for reporters. You may subclass it\nand override any method you want to achieve your desired behavior.\n\nstart   :: Called when the run has started.\nrecord  :: Called for each result, passed or otherwise.\nreport  :: Called at the end of the run.\npassed? :: Called to see if you detected any problems.\n\nUsing our example above, here is how we might implement MyCI:\n\n    # minitest/bogus_plugin.rb\n\n    module Minitest\n      class MyCI \u003c AbstractReporter\n        attr_accessor :results, :addr, :port\n\n        def initialize options\n          self.results = []\n          self.addr = options[:myci_addr]\n          self.port = options[:myci_port]\n        end\n\n        def record result\n          self.results \u003c\u003c result\n        end\n\n        def report\n          CI.connect(addr, port).send_results self.results\n        end\n      end\n\n      # code from above...\n    end\n\n== FAQ\n\n=== What versions are compatible with what? Or what versions are supported?\n\nMinitest is a dependency of rails, which until very recently had an\noverzealous backwards compatibility policy. As such, I'm stuck\nsupporting versions of ruby that are long past EOL. Hopefully I'll be\nable to support only current versions of ruby sometime in the near\nfuture.\n\nNOTICE: At this point, I will only locally test/dev against the\ncurrently 3 supported (non-EOL) versions of ruby. I cannot and will\nnot maintain that many builds.\n\n(As of 2025-02-03)\n\nCurrent versions of rails: (https://endoflife.date/rails)\n\n  | rails | min ruby | minitest | status   |  EOL Date  |\n  |-------+----------+----------+----------+------------|\n  |   8.1 | \u003e= 3.2   | \u003e= 5.1   | Current  | 2027-10-07 |\n  |   8.0 | \u003e= 3.2   | \u003e= 5.1   | Current  | 2026-11-07 |\n  |   7.2 | \u003e= 3.1   | \u003e= 5.1   | Security | 2026-08-09 |\n  |   7.1 | \u003e= 2.7   | \u003e= 5.1   | EOL      | 2025-10-01 |\n\nIf you want to look at the requirements for a specific version, run:\n\n    gem spec -r --ruby rails -v 8.0.0\n\nCurrent versions of ruby: (https://endoflife.date/ruby)\n\n  | ruby | Status  |   EOL Date |\n  |------+---------+------------|\n  |  3.4 | Current | 2028-03-31 |\n  |  3.3 | Maint   | 2027-03-31 |\n  |  3.2 | Security| 2026-03-31 |\n  |  3.1 | EOL     | 2025-03-31 |\n  |  3.0 | EOL     | 2024-03-31 |\n  |  2.7 | EOL     | 2023-03-31 |\n  |  2.6 | EOL     | 2022-03-31 |\n  |  2.5 | EOL     | 2021-03-31 |\n\n=== How to test SimpleDelegates?\n\nThe following implementation and test:\n\n    class Worker \u003c SimpleDelegator\n      def work\n      end\n    end\n\n    describe Worker do\n      before do\n        @worker = Worker.new(Object.new)\n      end\n\n      it \"must respond to work\" do\n        _(@worker).must_respond_to :work\n      end\n    end\n\noutputs a failure:\n\n      1) Failure:\n    Worker#test_0001_must respond to work [bug11.rb:16]:\n    Expected #\u003cObject:0x007f9e7184f0a0\u003e (Object) to respond to #work.\n\nWorker is a SimpleDelegate which in 1.9+ is a subclass of BasicObject.\nExpectations are put on Object (one level down) so the Worker\n(SimpleDelegate) hits +method_missing+ and delegates down to the\n+Object.new+ instance. That object doesn't respond to work so the test\nfails.\n\nYou can bypass \u003ctt\u003eSimpleDelegate#method_missing\u003c/tt\u003e by extending the worker\nwith \u003ctt\u003eMinitest::Expectations\u003c/tt\u003e. You can either do that in your setup at\nthe instance level, like:\n\n    before do\n      @worker = Worker.new(Object.new)\n      @worker.extend Minitest::Expectations\n    end\n\nor you can extend the Worker class (within the test file!), like:\n\n    class Worker\n      include ::Minitest::Expectations\n    end\n\n=== How to share code across test classes?\n\nUse a module. That's exactly what they're for:\n\n    module UsefulStuff\n      def useful_method\n        # ...\n      end\n    end\n\n    describe Blah do\n      include UsefulStuff\n\n      def test_whatever\n        # useful_method available here\n      end\n    end\n\nRemember, +describe+ simply creates test classes. It's just ruby at\nthe end of the day and all your normal Good Ruby Rules (tm) apply. If\nyou want to extend your test using setup/teardown via a module, just\nmake sure you ALWAYS call super. before/after automatically call super\nfor you, so make sure you don't do it twice.\n\n=== How to run code before a group of tests?\n\nUse a constant with begin...end like this:\n\n  describe Blah do\n    SETUP = begin\n       # ... this runs once when describe Blah starts\n    end\n    # ...\n  end\n\nThis can be useful for expensive initializations or sharing state.\nRemember, this is just ruby code, so you need to make sure this\ntechnique and sharing state doesn't interfere with your tests.\n\n=== Why am I seeing \u003ctt\u003euninitialized constant MiniTest::Test (NameError)\u003c/tt\u003e?\n\nAre you running the test with Bundler (e.g. via \u003ctt\u003ebundle exec\u003c/tt\u003e )? If so,\nin order to require minitest, you must first add the \u003ctt\u003egem 'minitest'\u003c/tt\u003e\nto your Gemfile and run +bundle+. Once it's installed, you should be\nable to require minitest and run your tests.\n\n== Prominent Projects using Minitest:\n\n* arel\n* journey\n* mime-types\n* nokogiri\n* rails (active_support et al)\n* rake\n* rdoc\n* ...and of course, everything from seattle.rb...\n\n== Developing Minitest:\n\nMinitest requires {Hoe}[https://rubygems.org/gems/hoe].\n\n=== Minitest's own tests require UTF-8 external encoding.\n\nThis is a common problem in Windows, where the default external Encoding is\noften CP850, but can affect any platform.\nMinitest can run test suites using any Encoding, but to run Minitest's\nown tests you must have a default external Encoding of UTF-8.\n\nIf your encoding is wrong, you'll see errors like:\n\n    --- expected\n    +++ actual\n    @@ -1,2 +1,3 @@\n     # encoding: UTF-8\n     -\"Expected /\\\\w+/ to not match \\\"blah blah blah\\\".\"\n     +\"Expected /\\\\w+/ to not match # encoding: UTF-8\n     +\\\"blah blah blah\\\".\"\n\nTo check your current encoding, run:\n\n    ruby -e 'puts Encoding.default_external'\n\nIf your output is something other than UTF-8, you can set the RUBYOPTS\nenv variable to a value of '-Eutf-8'. Something like:\n\n    RUBYOPT='-Eutf-8' ruby -e 'puts Encoding.default_external'\n\nCheck your OS/shell documentation for the precise syntax (the above\nwill not work on a basic Windows CMD prompt, look for the SET command).\nOnce you've got it successfully outputing UTF-8, use the same setting\nwhen running rake in Minitest.\n\n=== Minitest's own tests require GNU (or similar) diff.\n\nThis is also a problem primarily affecting Windows developers. PowerShell\nhas a command called diff, but it is not suitable for use with Minitest.\n\nIf you see failures like either of these, you are probably missing diff tool:\n\n      4) Failure:\n    TestMinitestUnitTestCase#test_assert_equal_different_long [D:/ruby/seattlerb/minitest/test/minitest/test_minitest_test.rb:936]:\n    Expected: \"--- expected\\n+++ actual\\n@@ -1 +1 @@\\n-\\\"hahahahahahahahahahahahahahahahahahahaha\\\"\\n+\\\"blahblahblahblahblahblahblahblahblahblah\\\"\\n\"\n      Actual: \"Expected: \\\"hahahahahahahahahahahahahahahahahahahaha\\\"\\n  Actual: \\\"blahblahblahblahblahblahblahblahblahblah\\\"\"\n\n\n      5) Failure:\n    TestMinitestUnitTestCase#test_assert_equal_different_collection_hash_hex_invisible [D:/ruby/seattlerb/minitest/test/minitest/test_minitest_test.rb:845]:\n    Expected: \"No visible difference in the Hash#inspect output.\\nYou should look at the implementation of #== on Hash or its members.\\n\n    {1=\u003e#\u003cObject:0xXXXXXX\u003e}\"\n      Actual: \"Expected: {1=\u003e#\u003cObject:0x00000003ba0470\u003e}\\n  Actual: {1=\u003e#\u003cObject:0x00000003ba0448\u003e}\"\n\n\nIf you use Cygwin or MSYS2 or similar there are packages that include a\nGNU diff for Windows. If you don't, you can download GNU diffutils from\nhttp://gnuwin32.sourceforge.net/packages/diffutils.htm\n(make sure to add it to your PATH).\n\nYou can make sure it's installed and path is configured properly with:\n\n    diff.exe -v\n\nThere are multiple lines of output, the first should be something like:\n\n    diff (GNU diffutils) 2.8.1\n\nIf you are using PowerShell make sure you run diff.exe, not just diff,\nwhich will invoke the PowerShell built in function.\n\n== Known Extensions:\n\ncapybara_minitest_spec      :: Bridge between Capybara RSpec matchers and\n                               Minitest::Spec expectations (e.g.\n                               \u003ctt\u003epage.must_have_content(\"Title\")\u003c/tt\u003e).\ncolor_pound_spec_reporter   :: Test names print Ruby Object types in color with\n                               your Minitest Spec style tests.\nminispec-metadata           :: Metadata for describe/it blocks \u0026 CLI tag filter.\n                               E.g. \u003ctt\u003eit \"requires JS driver\", js: true do\u003c/tt\u003e \u0026\n                               \u003ctt\u003eruby test.rb --tag js\u003c/tt\u003e runs tests tagged :js.\nminispec-rails              :: Minimal support to use Spec style in Rails 5+.\nmini-apivore                :: for swagger based automated API testing.\nminitest-around             :: Around block for minitest. An alternative to\n                               setup/teardown dance.\nminitest-assert_errors      :: Adds Minitest assertions to test for errors raised\n                               or not raised by Minitest itself.\nminitest-autotest           :: autotest is a continuous testing facility meant to\n                               be used during development.\nminitest-bacon              :: minitest-bacon extends minitest with bacon-like\n                               functionality.\nminitest-bang               :: Adds support for RSpec-style let! to immediately\n                               invoke let statements before each test.\nminitest-bisect             :: Helps you isolate and debug random test failures.\nminitest-blink1_reporter    :: Display test results with a Blink1.\nminitest-capistrano         :: Assertions and expectations for testing\n                               Capistrano recipes.\nminitest-capybara           :: Capybara matchers support for minitest unit and\n                               spec.\nminitest-cc                 :: It provides minimal information about code coverage.\nminitest-chef-handler       :: Run Minitest suites as Chef report handlers\nminitest-ci                 :: CI reporter plugin for Minitest.\nminitest-context            :: Defines contexts for code reuse in Minitest\n                               specs that share common expectations.\nminitest-debugger           :: Wraps assert so failed assertions drop into\n                               the ruby debugger.\nminitest-display            :: Patches Minitest to allow for an easily\n                               configurable output.\nminitest-documentation      :: Minimal documentation format inspired by rspec's.\nminitest-doc_reporter       :: Detailed output inspired by rspec's documentation\n                               format.\nminitest-emoji              :: Print out emoji for your test passes, fails, and\n                               skips.\nminitest-english            :: Semantically symmetric aliases for assertions and\n                               expectations.\nminitest-excludes           :: Clean API for excluding certain tests you\n                               don't want to run under certain conditions.\nminitest-fail-fast          :: Reimplements RSpec's \"fail fast\" feature\nminitest-filecontent        :: Support unit tests with expectation results in files.\n                               Differing results will be stored again in files.\nminitest-filesystem         :: Adds assertion and expectation to help testing\n                               filesystem contents.\nminitest-firemock           :: Makes your Minitest mocks more resilient.\nminitest-focus              :: Focus on one test at a time.\nminitest-gcstats            :: A minitest plugin that adds a report of the top\n                               tests by number of objects allocated.\nminitest-global_expectations:: Support minitest expectation methods for all objects\nminitest-great_expectations :: Generally useful additions to minitest's\n                               assertions and expectations.\nminitest-growl              :: Test notifier for minitest via growl.\nminitest-happy              :: GLOBALLY ACTIVATE MINITEST PRIDE! RAWR!\nminitest-have_tag           :: Adds Minitest assertions to test for the existence of\n                               HTML tags, including contents, within a provided string.\nminitest-heat               :: Reporting that builds a heat map of failure locations\nminitest-hooks              :: Around and before_all/after_all/around_all hooks\nminitest-hyper              :: Pretty, single-page HTML reports for your Minitest runs\nminitest-implicit-subject   :: Implicit declaration of the test subject.\nminitest-instrument         :: Instrument ActiveSupport::Notifications when\n                               test method is executed.\nminitest-instrument-db      :: Store information about speed of test execution\n                               provided by minitest-instrument in database.\nminitest-junit              :: JUnit-style XML reporter for minitest.\nminitest-keyword            :: Use Minitest assertions with keyword arguments.\nminitest-libnotify          :: Test notifier for minitest via libnotify.\nminitest-line               :: Run test at line number.\nminitest-logger             :: Define assert_log and enable minitest to test log messages.\n                               Supports Logger and Log4r::Logger.\nminitest-macruby            :: Provides extensions to minitest for macruby UI\n                               testing.\nminitest-matchers           :: Adds support for RSpec-style matchers to\n                               minitest.\nminitest-matchers_vaccine   :: Adds assertions that adhere to the matcher spec,\n                               but without any expectation infections.\nminitest-metadata           :: Annotate tests with metadata (key-value).\nminitest-mock_expectations  :: Provides method call assertions for minitest.\nminitest-mongoid            :: Mongoid assertion matchers for Minitest.\nminitest-must_not           :: Provides must_not as an alias for wont in\n                               Minitest.\nminitest-optional_retry     :: Automatically retry failed test to help with flakiness.\nminitest-osx                :: Reporter for the Mac OS X notification center.\nminitest-parallel_fork      :: Fork-based parallelization\nminitest-parallel-db        :: Run tests in parallel with a single database.\nminitest-power_assert       :: PowerAssert for Minitest.\nminitest-predicates         :: Adds support for .predicate? methods.\nminitest-profile            :: List the 10 slowest tests in your suite.\nminitest-rails              :: Minitest integration for Rails 3.x.\nminitest-rails-capybara     :: Capybara integration for Minitest::Rails.\nminitest-reporters          :: Create customizable Minitest output formats.\nminitest-rg                 :: Colored red/green output for Minitest.\nminitest-rspec_mocks        :: Use RSpec Mocks with Minitest.\nminitest-server             :: minitest-server provides a client/server setup\n                               with your minitest process, allowing your test\n                               run to send its results directly to a handler.\nminitest-sequel             :: Minitest assertions to speed-up development and\n                               testing of Ruby Sequel database setups.\nminitest-shared_description :: Support for shared specs and shared spec\n                               subclasses\nminitest-should_syntax      :: RSpec-style \u003ctt\u003ex.should == y\u003c/tt\u003e assertions for\n                               Minitest.\nminitest-shouldify          :: Adding all manner of shoulds to Minitest (bad\n                               idea)\nminitest-snail              :: Print a list of tests that take too long\nminitest-spec-context       :: Provides rspec-ish context method to\n                               Minitest::Spec.\nminitest-spec-expect        :: Expect syntax for Minitest::Spec (e.g.\n                               expect(sequences).to_include :celery_man).\nminitest-spec-magic         :: Minitest::Spec extensions for Rails and beyond.\nminitest-spec-rails         :: Drop in Minitest::Spec superclass for\n                               ActiveSupport::TestCase.\nminitest-sprint             :: Runs (Get it? It's fast!) your tests and makes\n                               it easier to rerun individual failures.\nminitest-stately            :: Find leaking state between tests\nminitest-stub_any_instance  :: Stub any instance of a method on the given class\n                               for the duration of a block.\nminitest-stub-const         :: Stub constants for the duration of a block.\nminitest-tags               :: Add tags for minitest.\nminitest-unordered          :: Adds a new assertion to minitest for checking the\n                               contents of a collection, ignoring element order.\nminitest-vcr                :: Automatic cassette management with Minitest::Spec\n                               and VCR.\nminitest_log                :: Adds structured logging, data explication, and verdicts.\nminitest_owrapper           :: Get tests results as a TestResult object.\nminitest_should             :: Shoulda style syntax for minitest test::unit.\nminitest_tu_shim            :: Bridges between test/unit and minitest.\nmongoid-minitest            :: Minitest matchers for Mongoid.\nmutant-minitest             :: Minitest integration for mutant.\npry-rescue                  :: A pry plugin w/ minitest support. See\n                               pry-rescue/minitest.rb.\nrematch                     :: Declutter your test files from large hardcoded data\n                               and update them automatically when your code changes.\nrspec2minitest              :: Easily translate any RSpec matchers to Minitest\n                               assertions and expectations.\nstubberry                   :: Multiple stubbing 'berries', sweet and useful \n                               stub helpers and assertions. ( stub_must, \n                               assert_method_called, stubbing ORM objects by id )\n\n== Unknown Extensions:\n\nAuthors... Please send me a pull request with a description of your minitest extension.\n\n* assay-minitest\n* detroit-minitest\n* em-minitest-spec\n* flexmock-minitest\n* guard-minitest\n* guard-minitest-decisiv\n* minitest-activemodel\n* minitest-ar-assertions\n* minitest-capybara-unit\n* minitest-colorer\n* minitest-deluxe\n* minitest-extra-assertions\n* minitest-rails-shoulda\n* minitest-spec\n* minitest-spec-should\n* minitest-sugar\n* spork-minitest\n\n== Minitest related goods\n\n* minitest/pride fabric: https://www.spoonflower.com/fabric/3928730-again-by-katie_allen\n\n== REQUIREMENTS:\n\n* Ruby 2.3+. No magic is involved. I hope.\n\n== INSTALL:\n\n  sudo gem install minitest\n\nOn 1.9, you already have it. To get newer candy you can still install\nthe gem, and then requiring \"minitest/autorun\" should automatically\npull it in. If not, you'll need to do it yourself:\n\n  gem \"minitest\"     # ensures you\"re using the gem, and not the built-in MT\n  require \"minitest/autorun\"\n\n  # ... usual testing stuffs ...\n\nDO NOTE: There is a serious problem with the way that ruby 1.9/2.0\npackages their own gems. They install a gem specification file, but\ndon't install the gem contents in the gem path. This messes up\nGem.find_files and many other things (gem which, gem contents, etc).\n\nJust install minitest as a gem for real and you'll be happier.\n\n== LICENSE:\n\n(The MIT License)\n\nCopyright (c) Ryan Davis, seattle.rb\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","funding_links":[],"categories":["Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminitest%2Fminitest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminitest%2Fminitest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminitest%2Fminitest/lists"}