Skip to content

splattael/minitest-around

Repository files navigation

minitest-around

Gem Version

Gem | Source

Around block for minitest 5.X and later.

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 and later

minitest-around currently supports only minitest 5.X and later.

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

About

Around block for minitest.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 8