Andreas J. Koenig wrote:
>>>>>> On Tue, 09 Sep 2008 05:03:25 -0700, Michael G Schwern <[EMAIL 
>>>>>> PROTECTED]> said:
> 
>   > I've uploaded a new alpha to deal with this.
> 
> It still breaks Sub::Uplevel. Sub::Uplevel has lots of dependencies. I
> won't smoke a Test-Simple that breaks Sub-Uplevel. Or if the fault is
> on Sub-Uplevel, please let David Golden know. I'm pretty sure I have
> reported this recently. Have I not?

Not that I'm aware of.  I presume you mean this?

t/05_honor_prior_override....1/7
#   Failed test 'use Sub::Uplevel;'
#   at t/05_honor_prior_override.t line 53.
#     Tried to use 'Sub::Uplevel'.
#     Error:  Global symbol "$VERSION" requires explicit package name at
/private/var/local/cpan_shell/build/Sub-Uplevel-0.19_03-JKkppY/blib/lib/Sub/Uplevel.pm
line 5.
# Global symbol "$VERSION" requires explicit package name at
/private/var/local/cpan_shell/build/Sub-Uplevel-0.19_03-JKkppY/blib/lib/Sub/Uplevel.pm
line 6.
# Global symbol "$VERSION" requires explicit package name at
/private/var/local/cpan_shell/build/Sub-Uplevel-0.19_03-JKkppY/blib/lib/Sub/Uplevel.pm
line 6.
# Global symbol "@ISA" requires explicit package name at
/private/var/local/cpan_shell/build/Sub-Uplevel-0.19_03-JKkppY/blib/lib/Sub/Uplevel.pm
line 17.
# Global symbol "@EXPORT" requires explicit package name at
/private/var/local/cpan_shell/build/Sub-Uplevel-0.19_03-JKkppY/blib/lib/Sub/Uplevel.pm
line 18.
# BEGIN not safe after errors--compilation aborted at
/private/var/local/cpan_shell/build/Sub-Uplevel-0.19_03-JKkppY/blib/lib/Sub/Uplevel.pm
line 89.
# Compilation failed in require at (eval 4) line 2.
# BEGIN failed--compilation aborted at (eval 4) line 2.
Number found where operator expected at t/05_honor_prior_override.t line 68,
near "uplevel 1"
        (Do you need to predeclare uplevel?)
Name "main::uplevel" used only once: possible typo at
t/05_honor_prior_override.t line 68.
Name "DB::single" used only once: possible typo at t/05_honor_prior_override.t
line 16.

#   Failed test 'caller from uplevel subroutine calls custom routine'
#   at t/05_honor_prior_override.t line 84.
#          got: 'CODE(0x1801d08)'
#     expected: 'niam'
# Looks like you failed 2 tests of 7.
t/05_honor_prior_override.... Dubious, test returned 2 (wstat 512, 0x200)
 Failed 2/7 subtests


Taking a knife to CORE::caller() and then calling someone else's functions and
expecting them to work is not a good idea.

After some poking around, the test fails because "use vars" depends on
caller() and caller() is bleeding on the floor.  It used to work because
Test::More happened to load vars.pm before caller() got the knife.  Now it
doesn't, it uses our().

So this is definitely "fixage", the test should never have worked.

The goal of the test seems to be to detect that a customized caller() routine
is not blown away by Sub::Uplevel.  A much safer way to do that is to have
your customized caller() just flick a file-scoped variable when it gets called
and look for that change.


-- 
The mind is a terrible thing,
and it must be stopped.

Reply via email to