Jan Kaluža wrote on 2013-07-15:
> On 07/15/2013 02:58 PM, Steve Hay wrote:
>> [...] right now I still have it crashing
> on startup (with or without revision r1303215), so we obviously didn't
> have the same crashing problem after all :-/ I will try to fix that
> next.
>>
>
> I'm afraid I can't help you further here...
>
When running "nmake test" I'm getting:
Can't load
'D:\temp\mp2d\modperl-httpd24\blib\arch/auto/Apache2/Const/Const.dll' for
module Apache2::Const: load_file:The specified module could not be found at
D:/temp/mp2d/perl/lib/DynaLoader.pm line 190.
at D:\temp\mp2d\modperl-httpd24\t\response\TestApache\subprocess.pm line 13.
Trying a simple one-liner:
D:\temp\mp2d\perl\bin\perl.exe -Iblib\arch -Iblib\lib -MApache2::Const -e1
does much the same. That works with trunk, built against httpd-2.2. The
difference is that Apache2/Const/Const.dll now depends on mod_perl.so (it
didn't use to), and that isn't in a location in the PATH when running the test
suite.
Using dumpbin /imports to see why we have this new dependency shows that it's
due to the 'perl_module' symbol... We've been here before recently with the
APR::Brigade build failure. I wondered if Apache2::Const (and maybe others)
needed to link against libaprext.lib (with its fake 'perl_module' symbol) to
avoid this problem, but lib/ModPerl/BuildMM says:
# in order to decouple APR/APR::* from mod_perl.so,
# link these modules against the static MP_APR_LIB lib,
# rather than the mod_perl lib (which would demand mod_perl.so
# be available). For other modules, use mod_perl.lib as
# usual.
which suggests that Apache2::* modules are expected to depend on mod_perl.so
(even though this one happened not to until now), so using libaprext.lib
instead of mod_perl.lib here is probably the wrong thing to do here and would
likely break things that require a proper definitions of 'perl_module'.
So I think the answer is to add src/modules/perl (where mod_perl.so has been
built) to the PATH when running the test suite.
If I do that manually in my Command Prompt window then "nmake test" runs
normally (albeit with a *lot* of test failures [1] which I'll look at later),
but I'm not sure where is the best place to make that happen automatically
within Apache-Test?
Is this an issue on other OSes, or only on Windows? (Not sure if you normally
build mod_perl dynamically or statically linked elsewhere?)
[1] The complete list of failures on this first run through (using a perl
without LWP installed, so lots more tests were skipped too) is:
Test Summary Report
-------------------
t\apache\subprocess.t (Wstat: 0 Tests: 1 Failed: 0)
Parse errors: Bad plan. You planned 5 tests but ran 1.
t\api\access2.t (Wstat: 0 Tests: 0 Failed: 0)
Parse errors: No plan found in TAP output
t\api\server_const.t (Wstat: 2304 Tests: 0 Failed: 0)
Non-zero exit status: 9
Parse errors: No plan found in TAP output
t\apr-ext\brigade.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 14 tests but ran 0.
t\apr-ext\bucket.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 21 tests but ran 0.
t\apr-ext\finfo.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 27 tests but ran 0.
t\apr-ext\perlio.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: No plan found in TAP output
t\apr-ext\pool.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 77 tests but ran 0.
t\apr-ext\table.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 58 tests but ran 0.
t\apr-ext\threadmutex.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 5 tests but ran 0.
t\apr-ext\threadrwlock.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 5 tests but ran 0.
t\apr-ext\uri.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 36 tests but ran 0.
t\compat\conn_rec.t (Wstat: 0 Tests: 2 Failed: 0)
Parse errors: Bad plan. You planned 4 tests but ran 2.
t\modperl\local_env.t (Wstat: 0 Tests: 6 Failed: 1)
Failed test: 6
t\modperl\merge.t (Wstat: 0 Tests: 10 Failed: 3)
Failed tests: 3, 6, 9
t\modperl\merge2.t (Wstat: 0 Tests: 10 Failed: 3)
Failed tests: 3, 6, 9
t\modperl\merge3.t (Wstat: 0 Tests: 10 Failed: 3)
Failed tests: 3, 6, 9
t\modperl\setupenv2.t (Wstat: 0 Tests: 23 Failed: 7)
Failed tests: 17-23
t\modules\cgi.t (Wstat: 0 Tests: 4 Failed: 4)
Failed tests: 1-4
t\modules\cgi2.t (Wstat: 0 Tests: 4 Failed: 4)
Failed tests: 1-4
t\modules\cgipost.t (Wstat: 0 Tests: 6 Failed: 5)
Failed tests: 2-6
t\modules\cgipost2.t (Wstat: 0 Tests: 6 Failed: 5)
Failed tests: 2-6
t\protocol\echo_block.t (Wstat: 0 Tests: 3 Failed: 2)
Failed tests: 2-3
t\protocol\echo_nonblock.t (Wstat: 0 Tests: 3 Failed: 1)
Failed test: 2
t\protocol\echo_timeout.t (Wstat: 0 Tests: 5 Failed: 4)
Failed tests: 2-5
t\protocol\pseudo_http.t (Wstat: 0 Tests: 13 Failed: 9)
Failed tests: 3-8, 11-13
Files=249, Tests=1937, 722 wallclock secs ( 2.12 usr + 0.30 sys = 2.42 CPU)
Result: FAIL
Failed 26/249 test programs. 51/1937 subtests failed.