From: Tomas Doran Date: Sun, 7 Dec 2008 18:33:07 +0000 (+0000) Subject: Add test case for the thing which breaks C::P::Authentication X-Git-Tag: 5.8000_05~105 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=8716efe7fd7fc65d79931df525e529482798c717 Add test case for the thing which breaks C::P::Authentication --- diff --git a/t/caf_backcompat_plugin_accessor_override.t b/t/caf_backcompat_plugin_accessor_override.t new file mode 100644 index 0000000..e612fdc --- /dev/null +++ b/t/caf_backcompat_plugin_accessor_override.t @@ -0,0 +1,24 @@ +use strict; +use warnings; +use lib 't/lib'; + +use Test::More tests => 1; +use Test::Exception; + +# Force a stack trace. +use Carp; +$SIG{__DIE__} = \&Carp::confess; + +{ + package CAFCompatTestApp; + use Catalyst qw/ + +CAFCompatTestPlugin + /; +} + +TODO: { + local $TODO = 'The overridden setup in CAFCompatTestApp + the overridden accessor causes destruction'; + lives_ok { + CAFCompatTestApp->setup; + } 'Setup app with plugins which says use base qw/Class::Accessor::Fast/'; +} diff --git a/t/lib/CAFCompatTestPlugin.pm b/t/lib/CAFCompatTestPlugin.pm new file mode 100644 index 0000000..b663ae5 --- /dev/null +++ b/t/lib/CAFCompatTestPlugin.pm @@ -0,0 +1,30 @@ +package CAFCompatTestPlugin; + +# This plugin specificially tests an edge case of CAF compat, +# where you load a plugin which uses base CAF, and then override +# a core catalyst accessor (_config in this case).. + +# This is what happens if you use the authentication back-compat +# stuff, as C::A::Plugin::Credential::Password is added to the plugin +# list, and the base C::A::C::P class, does the mk_accessors, and +# then the C::P::A class calls the config method before setup finishes... + +use strict; +use warnings; + +# Note that we don't actually _really_ use CAF here, as MX::Adopt::CAF +# is in place... +use base qw/Class::Accessor::Fast/; + +BEGIN { + __PACKAGE__->mk_accessors(qw/_config/); +} + +sub setup { + my $app = shift; + + $app->config; + $app->NEXT::setup(@_); +} + +1;