[ANN] Dfect 2.0.0 (2010-03-21)


S

Suraj Kurapati

Dfect 2.0.0 (2010-03-21)

Assertion testing library for Ruby

http://snk.tuxfamily.org/lib/dfect/

Dfect is an assertion testing library for Ruby that
emphasizes a simple assertion vocabulary, instant
debuggability of failures, and flexibility in composing
tests.
________________________________________________________

Version 2.0.0 (2010-03-21)

This release adds the ability to insulate tests from each
other, share code between them, makes the order of parameters
consistent in the API, improves user interactivity, fixes
some bugs, and revises the user manual.
________________________________________________________

Incompatible changes

* Root-level calls to the Dfect::D() method are
[1]automatically insulated now.

* The Dfect::E() methods now expects its optional message
parameter to be the last parameter in the parameter list.

* The Dfect::C() methods now expect their first parameter
to be a symbol instead of the optional message to be
shown in case of assertion failure.

* The Dfect::R() has been renamed to Dfect::L(), which is a
mnemonic for [2]Logging.

* Shorten names of hash keys in the execution trace for
brevity and rename :raise key in report statistics to
:error.

* Only the most helpful subset of the failure details is
shown before placing the user into a debugger because
they can query the omitted information (on demand) inside
the debugger.

* The execution trace is only shown if all tests passed in
Dfect::run().

* The :debug option is now set to Ruby's $DEBUG global by
default.
________________________________________________________

New features

* Print failures as they occur instead of waiting until the
end.

* Allow passing condition as argument to true/false
assertions instead of requiring the condition to be
passed as a code block, and also fall back to the binding
of inner-most enclosing test or hook when debugging or
constructing a failure report for an assertion that was
not given a block.

This allows you to reduce "line noise" in your tests:

D "Lottery" do
winning_ticket = rand()

D "My chances of winning" do
my_ticket = rand()
F my_ticket == winning_ticket, "I won?! Dream on."
end
end

* Add [3]Dfect::S() methods for sharing code between tests.

* Add [4]Dfect::D!() method to explicitly insulate a test
from other tests, the top-level Ruby environment, and the
code being tested.

* Add Dfect::info() method which returns the details of the
failure that is currently being debugged by the user.

* Add instance variables to the :vars section of a failure
report.

* Add setup!() and teardown!() methods for before-all and
after-all hooks in the dfect/unit emulation library.

* Add test execution time to statistics hash (under the
:time key).
________________________________________________________

Bug fixes

* Do not print any output when :quiet option is active.

* Allow passing multiple strings/objects to Dfect::D() like
in RSpec.

* Make before and after hook methods mixin-able like
assertions.

* Do not assume that Module#to_s is the same as
Module#name.
________________________________________________________

Housekeeping

* Upgrade to Inochi 2.0.0 for managing this project.

* Make emulation libraries modify Dfect module instead of
Kernel.

* Do not pollute the user's output with our Class#to_yaml
workaround.

* Remove "Motivation" section from user manual. It was too
fanatic!

References

1. http://snk.tuxfamily.org/lib/dfect/#Insulation
2. http://snk.tuxfamily.org/lib/dfect/#Logging
3. http://snk.tuxfamily.org/lib/dfect/#Sharing
4. http://snk.tuxfamily.org/lib/dfect/#Insulation
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

[ANN] Dfect 2.1.0 (2010-03-31) 0
[ANN] Dfect 2.2.0 0
[ANN] Dfect 1.1.0 0
[ANN] Dfect 0.1.0 0
[ANN] Dfect 1.0.0 0
[ANN] Dfect 1.0.1 0
[ANN] Rumai 3.2.1 (2010-03-22) 0
[ANN] DIFECTS 3.0.0 1

Top