one thing I noticed is that if ServerRoot is not specified in httpd.conf then Apache-Test can't resolve relative Include directives (such as conf/ssl.conf), so they need to be postponed until later in order to be picked up as they would if ServerRoot were specified.
Your patch works fine in my config here, but I do forsee one possible issue -- although this is a VERY UNLIKELY problem:
<IfModule mod_foo.c> Include conf/foo.conf </IfModule>
If I read your patch right, it would turn that into:
<IfModule mod_foo.c> </IfModule> [rest of httpd.conf] [Contents of conf/foo.conf inserted here]
Obviously, Apache-Test is only really interested in a couple directives from the user's config file, so the chances of that reordering (and removal of code from the conditional block) causing problems is very small.
As a bit of a side note: Apache 1.3.28 does it the simple way:
1) set "ap_server_root" to HTTPD_ROOT (http_main.c: 5396)
2) set "ap_server_root" to "-d VAL", if present (http_main.c: 5422)
3) set "ap_server_root" using ServerRoot directive (via normal module initalization stuff)
Whichever one is hit last is used, since it's a single global value.
So it seems like setting things up in that order within Apache-Test would be reasonable. But I agree with Stas that having a record of WHICH ServerRoot value is being used is a good thing and would surely ease some confusion in edge cases like mine.
-- Mike Cramer http://www.webkist.com/ | AIM: MikeWebkist