Fixed bug where if encoding was set in the config file it wasn't used,
Mark Ellis [Fri, 14 Jun 2013 12:11:42 +0000 (14:11 +0200)]
it had to be set in app.pm->config

lib/Catalyst.pm
t/encoding_set_in_app.t [new file with mode: 0644]
t/encoding_set_in_config.t [new file with mode: 0644]
t/lib/Catalyst/Plugin/Test/Plugin.pm
t/lib/TestAppEncodingSetInApp.pm [new file with mode: 0644]
t/lib/TestAppEncodingSetInApp/Controller/Root.pm [new file with mode: 0644]
t/lib/TestAppEncodingSetInConfig.pm [new file with mode: 0644]
t/lib/TestAppEncodingSetInConfig/Controller/Root.pm [new file with mode: 0644]
t/lib/TestAppEncodingSetInConfig/testappencodingsetinconfig.json [new file with mode: 0644]

index 4e62289..d796e12 100644 (file)
@@ -3001,7 +3001,7 @@ the plugin name does not begin with C<Catalyst::Plugin::>.
                 () }
                 : $_
         } @$plugins ];
-        unshift @$plugins, $class->_default_plugins;
+        push @$plugins, $class->_default_plugins;
         $plugins = Data::OptList::mkopt($plugins || []);
 
         my @plugins = map {
diff --git a/t/encoding_set_in_app.t b/t/encoding_set_in_app.t
new file mode 100644 (file)
index 0000000..976760a
--- /dev/null
@@ -0,0 +1,15 @@
+use strict;
+use warnings;
+
+use FindBin '$Bin';
+use lib "$Bin/lib";
+
+use Test::More;
+
+#for this test encoding => 'UTF-8' is set in TestAppEncodingSetInApp.pm
+use Catalyst::Test 'TestAppEncodingSetInApp';
+
+my ( undef, $c ) = ctx_request('/');
+isa_ok( $c->encoding,  'Encode::utf8', '$c->encoding' );
+
+done_testing;
diff --git a/t/encoding_set_in_config.t b/t/encoding_set_in_config.t
new file mode 100644 (file)
index 0000000..d15d4df
--- /dev/null
@@ -0,0 +1,15 @@
+use strict;
+use warnings;
+
+use FindBin '$Bin';
+use lib "$Bin/lib";
+
+use Test::More;
+
+#for this test encoding => 'UTF-8' is set in testappencodingsetinconfig.json
+use Catalyst::Test 'TestAppEncodingSetInConfig';
+
+my ( undef, $c ) = ctx_request('/');
+isa_ok( $c->encoding,  'Encode::utf8', '$c->encoding' );
+
+done_testing;
index f4f835b..0ec67b3 100644 (file)
@@ -11,6 +11,8 @@ use base qw/Class::Data::Inheritable/;
 sub setup {
    my $c = shift;
    $c->ran_setup('1');
+
+   return $c->next::method( @_ );
 }
 
 sub prepare {
diff --git a/t/lib/TestAppEncodingSetInApp.pm b/t/lib/TestAppEncodingSetInApp.pm
new file mode 100644 (file)
index 0000000..4869b94
--- /dev/null
@@ -0,0 +1,14 @@
+package TestAppEncodingSetInApp;
+use Moose;
+
+use Catalyst;
+
+extends 'Catalyst';
+
+__PACKAGE__->config(
+    encoding => 'UTF-8',
+);
+
+__PACKAGE__->setup;
+
+1;
diff --git a/t/lib/TestAppEncodingSetInApp/Controller/Root.pm b/t/lib/TestAppEncodingSetInApp/Controller/Root.pm
new file mode 100644 (file)
index 0000000..608f2af
--- /dev/null
@@ -0,0 +1,15 @@
+package TestAppEncodingSetInApp::Controller::Root;
+use Moose;
+use namespace::autoclean;
+
+BEGIN { extends 'Catalyst::Controller'; }
+
+__PACKAGE__->config(namespace => '');
+
+sub default: Local{
+    my ( $self, $c ) = @_;
+
+    $c->res->body('');
+}
+
+1;
diff --git a/t/lib/TestAppEncodingSetInConfig.pm b/t/lib/TestAppEncodingSetInConfig.pm
new file mode 100644 (file)
index 0000000..7abd703
--- /dev/null
@@ -0,0 +1,10 @@
+package TestAppEncodingSetInConfig;
+use Moose;
+
+use Catalyst qw/ConfigLoader/;
+
+extends 'Catalyst';
+
+__PACKAGE__->setup;
+
+1;
diff --git a/t/lib/TestAppEncodingSetInConfig/Controller/Root.pm b/t/lib/TestAppEncodingSetInConfig/Controller/Root.pm
new file mode 100644 (file)
index 0000000..6362e93
--- /dev/null
@@ -0,0 +1,15 @@
+package TestAppEncodingSetInConfig::Controller::Root;
+use Moose;
+use namespace::autoclean;
+
+BEGIN { extends 'Catalyst::Controller'; }
+
+__PACKAGE__->config(namespace => '');
+
+sub default: Local{
+    my ( $self, $c ) = @_;
+
+    $c->res->body('');
+}
+
+1;
diff --git a/t/lib/TestAppEncodingSetInConfig/testappencodingsetinconfig.json b/t/lib/TestAppEncodingSetInConfig/testappencodingsetinconfig.json
new file mode 100644 (file)
index 0000000..2b8b413
--- /dev/null
@@ -0,0 +1,3 @@
+{
+    "encoding": "UTF-8"
+}