Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^2: TDD with Coverage Analysis. Wow.

by davidrw (Prior)
on Aug 27, 2005 at 15:21 UTC ( [id://487154]=note: print w/replies, xml ) Need Help??


in reply to Re: TDD with Coverage Analysis. Wow.
in thread TDD with Coverage Analysis. Wow.

Can you invoke it directly in the test script as &{$SIG{__DIE__}} and test accordingly from there?

Also ditto on the above .. we started using Devel::Cover recently at work and besides being very cool in itself, is very great thing in terms of forcing you to really know your own code in order to write thorough test coverage for it. On more than one occaison has made me rethink/rework code, and also revealed hidden bugs.

As for coverage --> 100%, for me it is also usually the error conditions (e.g. </c>$dbh->prepare() or do { ... }</c>) that are the holes.. and while 100% isn't strictly necessary, it is nice feeling to get a completely green board ;)


As for another work around (this might not be possible depending on what the function actually does) for one of xdg's points, this might work in some cases:
# original my $filename = prompt_for_filename() || default_filename(); # potential workaround use constant DEFAULT_FILENAME => 'foo.txt'; my $filename = prompt_for_filename() || DEFAULT_FILENAME;

Replies are listed 'Best First'.
Re^3: TDD with Coverage Analysis. Wow.
by tlm (Prior) on Aug 27, 2005 at 17:20 UTC

    Can you invoke it directly in the test script as &{$SIG{__DIE__}} and test accordingly from there?

    Only if the !$^S branch doesn't die (and doesn't call something that does). I should have made that clearer in my original post. Will fix. Thanks.

    # potential workaround use constant DEFAULT_FILENAME => 'foo.txt'; my $filename = prompt_for_filename() || DEFAULT_FILENAME;

    I don't see how the second alternative of the || could ever be false (i.e. the coverage would never be 100%).

    Update: Ah, I see.

    the lowliest monk

      I don't see how the second alternative of the || could ever be false (i.e. the coverage would never be 100%).
      It can't, but just like with xdg's note about my $value = $some_other_value || undef;, Devel::Cover is also smart enough to realize that DEFAULT_FILENAME is a constant and removes the truth table entries of it being false, so that you can get to 100% coverage for that line.

Log In?
Username:
Password:

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

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

    No recent polls found