Tyler MacDonald <[EMAIL PROTECTED]> wrote:
>       After digging around a bit, it looks like I just have to attach
> myself to the "stop-httpd" option instead of the "stop" method, but that's
> getting less obvious and more deep into an undocumented API.

        Got it in a hackety-hacked way; this does what I want.

        Thanks,
                Tyler
#!perl
  
use strict;
use warnings FATAL => 'all';
  
use lib qw(lib);
use base q(Apache::TestRunPerl);
use Apache::TestConfig ();

main::->new->run(@ARGV);

sub pre_configure {
      my $self = shift;
      # mod_bt doesn't like to be loaded if it isn't configured.
      Apache::TestConfig::autoconfig_skip_module_add('mod_bt.c')
}

sub configure {
    my $self = shift;
    bless $self->{server}, "Apache2::AUS::TestServer";
    return $self->SUPER::configure(@_);
}

package Apache2::AUS::TestServer;

use base q(Apache::TestServer);
use lib 't/tlib';
use t::dbh;
use DBIx::Migration::Directories;

sub start {
    my $self = shift;
    warn "installing database schema!";
    if(my $dbh = dbh) {
        my $mh = DBIx::Migration::Directories->new(
            schema      =>  "Schema::RDBMS::AUS",
            dbh         =>  $dbh,
        );
        $mh->full_migrate;
        $dbh->disconnect;
    }
    return $self->SUPER::start(@_);
}

sub stop {
    my $self = shift;
    my $rv;
    if($rv = $self->SUPER::stop(@_)) {
        warn "removing database schema!";
        if(my $dbh = dbh) {
            my $mh = DBIx::Migration::Directories->new(
                schema      =>  "Schema::RDBMS::AUS",
                dbh         =>  $dbh,
            );
            $mh->full_delete_schema;
            $dbh->disconnect;
        }
    }
    return $rv;
}

Reply via email to