minitest-around

Around block for minitest.

MIT License

Downloads
1.9M
Stars
41
Committers
9

minitest-around

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

Contributors

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
Package Rankings
Top 12.61% on Alpine-v3.18
Top 4.49% on Rubygems.org
Top 18.03% on Alpine-v3.17
Top 14.97% on Alpine-v3.15
Top 8.76% on Proxy.golang.org
Top 16.29% on Alpine-v3.16
Top 16.82% on Alpine-edge
Badges
Extracted from project README
Travis Gem Version