$path ||= '';
$namespace = '' if $path =~ /^\//;
$path =~ s/^\///;
+ $path =~ s/\?/%3F/g;
my $params =
( scalar @args && ref $args[$#args] eq 'HASH' ? pop @args : {} );
};
# join args with '/', or a blank string
- my $args = ( scalar @args ? '/' . join( '/', @args ) : '' );
+ my $args = ( scalar @args ? '/' . join( '/', map {s/\?/%3F/g; $_} @args ) : '' );
$args =~ s/^\/// unless $path;
my $res =
URI->new_abs( URI->new_abs( "$path$args", "$basepath$namespace" ), $base )
use strict;
use warnings;
-use Test::More tests => 11;
+use Test::More tests => 13;
use URI;
use_ok('Catalyst');
'URI for undef action with query params'
);
+is (Catalyst::uri_for( $context, '/bar/wibble?' )->as_string,
+ 'http://127.0.0.1/foo/bar/wibble%3F', 'Question Mark gets encoded'
+);
+
+is( Catalyst::uri_for( $context, qw/bar wibble?/, 'with space' )->as_string,
+ 'http://127.0.0.1/foo/yada/bar/wibble%3F/with%20space', 'Space gets encoded'
+);
+
+
# test with utf-8
is(
Catalyst::uri_for( $context, 'quux', { param1 => "\x{2620}" } )->as_string,