Merge branch 'master' into ancona
John Napiorkowski [Tue, 27 May 2014 15:01:04 +0000 (11:01 -0400)]
Changes
lib/Catalyst/Plugin/Unicode/Encoding.pm
t/psgi_utils.t

diff --git a/Changes b/Changes
index fa58fa2..6175a9c 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,6 @@
 # This file documents the revision history for Perl extension Catalyst.
 
+  - Set encoding on STDERR when encoding is set in config
   - Fix spelling, grammar and structural errors in POD
   - Remove redundant ->setup call in t/head_middleware.t RT#95361
   - Fix test failures when running under CATALYST_DEBUG. RT#95358
index 7c61530..022efd2 100644 (file)
@@ -23,6 +23,10 @@ sub encoding {
         if (my $wanted = shift)  {
             $encoding = Encode::find_encoding($wanted)
               or Carp::croak( qq/Unknown encoding '$wanted'/ );
+            binmode(STDERR, ':encoding(' . $encoding->name . ')');
+        }
+        else {
+            binmode(STDERR);
         }
 
         $encoding = ref $c
index 15afb9d..078dd82 100644 (file)
@@ -77,6 +77,27 @@ my $psgi_app = sub {
         $c->res->from_psgi_response(
           $psgi_app->($env));
       }
+
+  sub mounted :Local Args(1) {
+    my ($self, $c, $arg) = @_;
+    our $app ||= ref($c)->psgi_app;
+    my $env = $self->get_env($c);
+    $c->res->from_psgi_response(
+      $app->($env));
+  }
+
+  sub mount_arg :Path(/mounted) Arg(1) {
+    my ($self, $c, $arg) = @_;
+    my $uri =  $c->uri_for( $self->action_for('local_example_args1'),$arg);
+    $c->res->body("$uri");
+  }
+
+  sub mount_noarg :Path(/mounted_no_arg)  {
+    my ($self, $c) = @_;
+    my $uri =  $c->uri_for( $self->action_for('local_example_args1'),444);
+    $c->res->body("$uri");
+  }
+
   
   sub get_env {
     my ($self, $c) = @_;
@@ -100,6 +121,20 @@ my $psgi_app = sub {
 use Test::More;
 use Catalyst::Test 'MyApp';
 
+{
+  my ($res, $c) = ctx_request('/user/mounted/111?path_prefix=1');
+  is $c->action, 'user/mounted';
+  is $res->content, 'http://localhost/user/user/local_example_args1/111';
+  is_deeply $c->req->args, [111];
+}
+
+{
+  my ($res, $c) = ctx_request('/user/mounted/mounted_no_arg?env_path=1');
+  is $c->action, 'user/mounted';
+  is $res->content, 'http://localhost/user/mounted/user/local_example_args1/444';
+  is_deeply $c->req->args, ['mounted_no_arg'];
+}
+
 # BEGIN [user/local_example]
 {
   my ($res, $c) = ctx_request('/user/local_example');