Module dependency testing question

2002-08-20 Thread Matthew Pressly

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).

--
Matthew Pressly




Re: Module dependency testing question

2002-08-20 Thread Geoffrey Young



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