Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: When 100% Code Coverage Backfires

by eric256 (Parson)
on Mar 26, 2007 at 14:33 UTC ( [id://606588]=note: print w/replies, xml ) Need Help??


in reply to When 100% Code Coverage Backfires

I'm a bit confused. If you need the test, then there must be some way to reach it, if you don't then its not needed. I don't understand how you think you can never reach it AND still must have the condition. If you are afraid of them changing something earlier, then don't you need a test earlier in the code to make sure that it is a comment so that if it is changed that test will fail?


___________
Eric Hodges

Replies are listed 'Best First'.
Re^2: When 100% Code Coverage Backfires
by Ovid (Cardinal) on Mar 26, 2007 at 14:43 UTC

    Rather than put a comment in the code letting people know that the test might fail, it's better to have an assert in there which cannot be ignored. So in this case, I might have something like:

    my $split = Data::Record->new( { split => $comment, unless => $RE{quoted}, chomp => 0, trim => 1, } ); my @chunks = $split->records($line_of_sql); if ( @chunks > 1 ) { assert( $chunks[-2] =~ /$some_text/ ); $chunks[-2] =~ s/$some_text//; # XXX remove comment indicator pop @chunks; # XXX remove comment }

    With that, I never have to worry that someone might change the previous code and silently break the following code. Assertions should be used to assert that things that should never break in fact, do not break. They can take a bit to get used to, but they're very valuable. In this case, it's even better than my initial code because I don't have a silent failure if the chunk does not contain the code that it must contain at that point.

    Cheers,
    Ovid

    New address of my CGI Course.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (3)
As of 2024-04-20 08:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found