From: Zbigniew Łukasiak Date: Mon, 23 Nov 2009 20:08:41 +0000 (+0000) Subject: Context for TestAppPluginWithConstructor X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=basic-app-ctx-separation-cleaned;hp=97473e1b7eb2f0bd8170997c02eb0631d33f32f6;p=catagits%2FCatalyst-Runtime.git Context for TestAppPluginWithConstructor --- diff --git a/t/lib/TestAppPluginWithConstructor/Context.pm b/t/lib/TestAppPluginWithConstructor/Context.pm new file mode 100644 index 0000000..5fb0d66 --- /dev/null +++ b/t/lib/TestAppPluginWithConstructor/Context.pm @@ -0,0 +1,55 @@ +package TestAppPluginWithConstructor::Context; +use Moose; +extends 'Catalyst::Context'; + +if (eval { Class::MOP::load_class('CatalystX::LeakChecker'); 1 }) { + with 'CatalystX::LeakChecker'; + + has leaks => ( + is => 'ro', + default => sub { [] }, + ); +} + +sub found_leaks { + my ($ctx, @leaks) = @_; + push @{ $ctx->leaks }, @leaks; +} + +sub count_leaks { + my ($ctx) = @_; + return scalar @{ $ctx->leaks }; +} + +sub execute { + my $c = shift; + my $class = ref( $c->component( $_[0] ) ) || $_[0]; + my $action = $_[1]->reverse; + + my $method; + + if ( $action =~ /->(\w+)$/ ) { + $method = $1; + } + elsif ( $action =~ /\/(\w+)$/ ) { + $method = $1; + } + elsif ( $action =~ /^(\w+)$/ ) { + $method = $action; + } + + if ( $class && $method && $method !~ /^_/ ) { + my $executed = sprintf( "%s->%s", $class, $method ); + my @executed = $c->response->headers->header('X-Catalyst-Executed'); + push @executed, $executed; + $c->response->headers->header( + 'X-Catalyst-Executed' => join ', ', + @executed + ); + } + no warnings 'recursion'; + return $c->SUPER::execute(@_); +} + +1; +