minitest v5.0.0 Release Notes

Release Date: 2013-05-10 // almost 11 years ago
  • Oh god... here we go...

    ✅ Minitest 5:

    • 4 deaths in the family:

      • MiniTest.runner is dead. No more manager objects.
      • MiniTest::Unit#record is dead. Use a Reporter instance instead.
      • MiniTest::Unit.run* is dead. Runnable things are responsible for their own runs.
      • MiniTest::Unit.output is dead. No more centralized IO.
    • 12 major (oft incompatible) changes:

      • Renamed MiniTest to Minitest. Your pinkies will thank me. (aliased to MiniTest)
      • Removed MiniTest::Unit entirely. No more manager objects.
      • Added Minitest::Runnable. Everything minitest can run subclasses this.
      • Renamed MiniTest::Unit::TestCase to Minitest::Test (subclassing Runnable).
      • Added Minitest::Benchmark.
      • Your benchmarks need to move to their own subclass.
      • Benchmarks using the spec DSL have to have "Bench" somewhere in their describe.
      • MiniTest::Unit.after_tests moved to Minitest.after_tests
      • MiniTest::Unit.autorun is now Minitest.autorun. Just require minitest/autorun pls.
      • Removed ParallelEach#grep since it isn't used anywhere.
      • Renamed Runnable#name to Runnable#name (but uses @NAME internally).
      • Runnable#run needs to return self. Allows for swapping of results as needed.
    • 🚚 8 minor moves:

      • Moved Assertions module to minitest/assertions.rb
      • Moved Expectations module to minitest/expectations.rb
      • Moved Test to minitest/test.rb
      • Moved everything else in minitest/unit.rb to minitest.rb
      • minitest/unit.rb is now just a small (user-test only) compatibility layer.
      • Moved most of minitest/pride into minitest/pride_plugin.
      • minitest/pride now just activates pride.
      • Moved ParallelEach under Minitest.
    • 9 additions:

      • Added a plugin system that can extend command-line options.
      • Added Minitest.extensions.
      • Added Minitest.reporter (only available during startup).
      • Added Minitest.run(args). This is the very top of any Minitest run.
      • Added Minitest::Reporter. Everything minitest can report goes through here.
      • Minitest.reporter is a composite so you can add your own.
      • Added Minitest::CompositeReporter. Much easier to extend with your own reporters.
      • Added UnexpectedError, an Assertion subclass, to wrap up errors.
      • Minitest::Test#run is now freakin' beautiful. 47 -> 17 loc
    • 11 other:

      • Removed Object.infect_with_assertions (it was already dead code).
      • Runnables are responsible for knowing their result_code (eg "." or "F").
      • Minitest.autorun now returns boolean, not exit code.
      • Added FAQ entry for extending via modules. (phiggins)
      • Implement Runnable#dup to cleanse state back to test results. Helps with serialization. pair:tenderlove
      • Moved ParallelEach under Minitest.
      • Runnable#run needs to return self. Allows for swapping of results as needed.
      • Minitest.init_plugins passes down options.
      • Minitest.load_plugins only loads once.
      • Fixed minitest/pride to work with rake test loader again. (tmiller)
      • Added count/size to ParallelEach to fix use w/in stdlib's test/unit. :( (btaitelb)
    • 5 voodoo:

      • Removed mutex from minitest.rb (phiggins)
      • Removed mutex from test.rb (phiggins)
      • Removed Minitest::Reporter.synchronize (phiggins)
      • Removed Minitest::Test.synchronize (phiggins)
      • Upon loading minitest/parallel_each, record, capture_io and capture_subprocess_io are doped with synchronization code. (phiggins)