On Sun, Jul 11, 2004 at 10:09:38PM +0200, James Mastros wrote:
>
> All unreachable code is either people misusing the term "unreachable", a
> bug in Devel::Cover, or dead code that should be removed.
Here's a puzzle, then.
I just ran into a similar "problem" in POE::Driver::SysRW. For
portability I have a couple lines similar to
$! = 0 if $! == EAGAIN or $! == EWOULDBLOCK;
EAGAIN and EWOULDBLOCK are identical on most systems. In fact, one is
usually defined in terms of the other. They differ on a few platforms,
however, and it's important to check both.
The expression boils down to this on my test system:
A B dec $! == 35 or $! == 35
0 0 0 (green, tested)
0 1 0 (red, impossible to test)
1 X 1 (green, tested)
> It may be possible to notice that you're running under Devel::Cover and
> run the "look under every rock" tests only in that case. But if it's
> your goal to cover everything and get that 100% there, then you need to
> try harder before declaring something unreachable.
>
> Note that this shouldn't be construed as saying that you should create
> insane tests, just to get 100% coverage. My point is almost the exact
> oppisate: that it's not reasonable to try for 100% conditional coverage.
While I'd like 100% coverage, I've decided to live with 98.3% because of
these untestable (at least on my machine) conditions. It's nice to have
the red flags pointing at some silly code, and maybe an improvement will
come later.
I don't advocate that the improvement appear in Perl or Devel::Cover.
On the contrary, logic errors like this should be pointed out to make
better code.
--
Rocco Caputo - http://poe.perl.org/