hi all :)
so, as a standard practice, I start with
use_ok($class);
as the first test in each file, the idea being that if the class doesn't
compile I shouldn't care about the results of the rest of the test - I
know immediately that subsequent failures are because I introduced a
typo or something.
rationale agreement aside, because most of the time the typos are
introduced in the subroutine I'm testing I get a bunch of failures later
on in the test file (which I ignore). but yesterday a fellow coder
introduced a typo at the package level, something equivalent to this:
package Foo;
use strict;
use warnings FATAL => qw(all);
foo; # blows up
sub bar {
return "inside bar";
}
simple enough. I was, however, met with surprise when my test for bar()
came back ok:
$ perl bar.t
1..2
not ok 1 - use Foo;
# Failed test 'use Foo;'
# in bar.t at line 5.
# Tried to use 'Foo'.
# Error: Bareword "foo" not allowed while "strict subs" in use...
# Compilation failed in require at (eval 3) line 2.
# BEGIN failed--compilation aborted at bar.t line 5.
ok 2 - bar() called successfully
# Looks like you failed 1 test of 2.
so, the compile test failed, but bar() could still be called and, in
fact, even executed successfully.
anyway, I'm not suggesting this is a bug. I might be suggesting that
use_ok() should change somewhat. but, more than all that, I figured
folks would just find it interesting if it's something y'all didn't
already know.
--Geoff