Come for the quick hacks, stay for the epiphanies. | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
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. In reply to Re: the sorry state of Perl unit testing framework (drop-in replacement)
by Dallaylaen
|
|