Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: the sorry state of Perl unit testing framework (drop-in replacement)

by Dallaylaen (Chaplain)
on Dec 30, 2016 at 21:21 UTC ( [id://1178686]=note: print w/replies, xml ) Need Help??


in reply to the sorry state of Perl unit testing framework

Hello, bulk88!

If you're still interested in this topic, you might find the following exercise called Test::Refute interesting. Right now it seems to be crystallizing into something very similar to what you're proposing: a cleanroom Test::More counterpart, easily extensible, not keeping passed tests, and also much faster than the original.

It's based on powerful $contract->refute( $condition, $message ); primitive. The $contract is an object storing information about (un)met conditions. Or outputting it right away as TAP, if needed. The $message is a human-readable name of the test. The $condition is false if everything is fine and the reason for failure otherwise.

One can think of it as of a program exit code that is always 0 on success, but different for different failure modes.

So an example "is" implementation looks like follows (real one is a bit longer though, undef handling, quoting etc.):

sub { return $_[0] eq $_[1] ? "" : "$_[0]!=$_[1]" };

Suddenly this is a pure function! We may need to provide a prototyped exportable wrapper for convenience, but that's left to my builder class. But no builder is required for making test logic.

I'm hoping to go beta around mid-January.

  • Comment on Re: the sorry state of Perl unit testing framework (drop-in replacement)
  • Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1178686]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (5)
As of 2024-04-19 07:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found