https://github.com/rubyworks/minitap
TAP-Y/J Output Formats for MiniTest
https://github.com/rubyworks/minitap
Last synced: 8 months ago
JSON representation
TAP-Y/J Output Formats for MiniTest
- Host: GitHub
- URL: https://github.com/rubyworks/minitap
- Owner: rubyworks
- License: other
- Created: 2011-09-26T16:20:57.000Z (over 14 years ago)
- Default Branch: master
- Last Pushed: 2013-11-20T21:07:35.000Z (about 12 years ago)
- Last Synced: 2025-05-19T13:59:08.366Z (9 months ago)
- Language: Ruby
- Homepage: http://rubyworks.github.com/minitap
- Size: 348 KB
- Stars: 9
- Watchers: 2
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Minitap
[Website](http://rubyworks.github.com/minitap) |
[Documentation](http://rubydoc.info/gems/minitap/frames) |
[Report Issue](http://github.com/rubyworks/minitap/issues) |
[Source Code](http://github.com/rubyworks/minitap)
[](https://travis-ci.org/rubyworks/minitap)
[](http://badge.fury.io/rb/minitap)
[](http://flattr.com/thing/324911/Rubyworks-Ruby-Development-Fund)
# About
The MiniTap project provides a TAP-Y and TAP-J output reporters for
the MiniTest test framework --the test framework that comes standard
with Ruby 1.9+.
See [TAPOUT](http://rubyworks.github.com/tapout) for more information about
TAP-Y/J formats.
# Usage
## Minitest 5
Minitest 5 has a new report system and plug-in API. Minitap takes advantage
of this new API to allow the TAP-Y or TAP-J formats to be selected via command-line
options as an alternative to setting the format in test helper scripts.
### Via Command Line
To use simply add `--tapy` or `--tapj` after an isolated `-` separator on the
ruby test command invocation, e.g.
$ ruby -Ilib test/runner.rb - --tapy
In your test helper scripts be sure you have the standard Minitest line:
require 'minitest/autorun'
And remove any old `MiniTest::Unit.runner=` assignments if you are migrating
from v4.
Now to do something interesting with the TAP-Y/J output, you will probably want
to install `tapout`:
$ gem install tapout
Then pipe the output to the `tapout` command, e.g.
$ ruby test/some_test.rb - --tapy | tapout progressbar
### Via Helper Script
To use via test helper script, require the `minitap` library after `minitest/autorun`
and assign `Minitest.reporter` to the Minitap reporter to be used.
require "minitest/autorun"
require "minitap"
Minitest.reporter = Minitap::TapY
Then pipe the output to the `tapout` command, e.g.
$ ruby -Ilib test/runner.rb | tapout progrssbar
Or using Rake:
$ rake test | tapout progressbar
You may need the `-q` option for Rake to supress extraneous output.
## MiniTest 4
If you are still using MiniTest 4.x you will need to use Minitap version 4.x
as well. In your dependencies be sure to specify this version. For example in
your Gemfile:
gem "minitap", "~> 0.4.0"
For Minitest 4 and and older, custom report formats are set by assigning
the `MiniTest::Unit.runner` to an instance of a custom runner class.
In our case we want to set it to an instance of `MiniTest::TapY` or `MiniTest::TapJ`.
So in your project's test helper script add, e.g.
require 'minitap'
MiniTest::Unit.runner = MiniTest::TapY.new
Now you may want to set this up so it is selectable. In which case use an
environment variable.
MiniTest::Unit.runner = \
case ENV['rpt']
when 'tapy'
MiniTest::TapY.new
when 'tapj'
MiniTest::TapJ.new
end
Then you can do, e.g.
$ rpt=tapy ruby test/some_test.rb
Now to do something interesting with the TAP-Y/J output, you will probably want
to install `tapout`:
$ gem install tapout
Then pipe the output to the `tapout` command, e.g.
$ rpt=tapy ruby test/some_test.rb | tapout progressbar
# Using Pry & Other Tools
Becuase Tapout communicates with Minitest via a shell pipe it is improtant
to keep in mind that any non TAP-Y/J output that tapout receives might
force it to halt. To ensure this doesn't occur a *pause code* (`16.chr`) can
be sent over the pipe to instruct the tapout comamnd to stop processing test
results and route `$stdin` directly to `$stdout` instead. A *resume code*
(`23.chr`) can be sent to restart test result processing.
A good example of this is when using `binding.pry` for debugging. To do so
while using tapout:
require 'tapout/utility'
tapout.pause{ binding.pry }
Or, even more convenient, specifically for use with pry:
require 'tapout/utility'
tapout.pry(binding)
Which is a more covenient way of coding:
STDOUT.puts 16.chr
binding.pry
STDOUT.puts 23.chr
# Copying
Copyright (c) 2011 Rubyworks
Made available under the terms of the *BSD-2-Clause* license.
Portions of this program were drawn from Alexander Kern's
MiniTest Reporter (c) 2011 Alexander Kern. Thanks Alexander
for making my endeavor a little bit easier.
See COPYING.rdoc for copyright and licensing details.