Matthew Pressly wrote:
> If module A depends on module B (uses methods or subroutines from module
> B), is there a good way to test that module A loads module B (i.e. has a
> "use" statement)? I frequently run into the following scenario:
>
> 1. Write one or more new modules plus a handler that uses them.
> 2. One or more of those modules is dependent on other existing modules.
> 3. One of those modules is missing a "use" statement for one of the
> existing modules that it makes method/sub calls to.
> 4. The handler works in the development environment because some other
> handler loaded that module previously in response to a previous http
> request. (The brunt of the handler code is "require"-ed on demand
> currently).
> 5. Promote code from development server to production server.
> 6. Restart apache on production server.
> 7. Handler fails on production server in response to an access that
> exercises the section of code where the missing "use" was needed
> (i.e.subroutine or method call to module that wasn't loaded).
there are a few things I could suggest (others may have more ideas)
- use Apache::Test to write a test suite for your modules.
Apache::Test is very easy to use and very convenient. I don't do any
more module development without it.
- always preload your modules with via PerlModule/startup.pl. if
you're missing a use() somewhere the module probably won't load and
the server won't start. it's a good idea anyway, for performance reasons.
- $ perl -cw MyLib.pm
HTH
--Geoff