http://qs1969.pair.com?node_id=606590


in reply to Re: When 100% Code Coverage Backfires
in thread When 100% Code Coverage Backfires

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.