Skip to content

splattael/minitest-around

Repository files navigation

minitest-around

Travis Gem Version

Gem | Source

Around block for minitest 5.X.

Alternative for setup/teardown dance.

Installation

gem install minitest-around

Usage

Unit tests

require 'minitest/autorun'
require 'minitest/around/unit'
require 'thread'

class MutexTest < Minitest::Test
  def around(&block)
    Mutex.new.synchronize(&block)
  end

  def test_synchronized
    # ...
  end
end

Spec

require 'minitest/autorun'
require 'minitest/around/spec'
require 'tmpdir'

describe "inside new directory" do
  around do |test|
    Dir.mktmpdir do |dir|
      @dir = dir
      Dir.chdir(dir) do
        test.call
      end
    end
  end

  it "is in new directory" do
    assert_equal @dir, Dir.pwd.sub("/private/var/", "/var/")
  end
end

Multiple before/after blocks

Minitest-around also enables the use of multiple before/after blocks, which normally don't work in minitest.

Caveats

  • Test bodies won't be run if you don't test.call inside +around+.
  • around runs inside a Fiber, so use Thread.get_thread_local / set_thread_local instead of Thread.current.[]

Minitest 5.X only

minitest-around currently supports only minitest 5.X.

Please see the mt4 branch for minitest 4.7.X support.

License

MIT License

Authors

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Test

bundle exec rake test

Release

bundle exec rake bump:{patch|minor|major}
bundle exec rake release