Hello community, here is the log from the commit of package perl-Mojolicious for openSUSE:Factory checked in at 2015-10-19 22:52:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Mojolicious (Old) and /work/SRC/openSUSE:Factory/.perl-Mojolicious.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Mojolicious" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Mojolicious/perl-Mojolicious.changes 2015-09-30 05:52:43.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Mojolicious.new/perl-Mojolicious.changes 2015-10-20 00:06:11.000000000 +0200 @@ -1,0 +2,27 @@ +Fri Oct 16 09:24:16 UTC 2015 - co...@suse.com + +- updated to 6.24 + see /usr/share/doc/packages/perl-Mojolicious/Changes + + 6.24 2015-10-13 + - Improved session security by not storing secrets in the stash and making + CSRF tokens much harder to guess. + - Improved commands to show all options that can affect their behavior. + - Fixed bug in Mojo::JSON::Pointer that prevented JSON Pointers with trailing + slash from working correctly. (dolmen) + - Fixed support for domains with trailing dot in Mojo::URL. + +------------------------------------------------------------------- +Sat Oct 10 09:08:13 UTC 2015 - co...@suse.com + +- updated to 6.23 + see /usr/share/doc/packages/perl-Mojolicious/Changes + + 6.23 2015-10-06 + - Improved documentation browser CSS. + - Fixed bug in Mojo::Transaction::WebSocket where an unsupported protocol + could be selected automatically. + - Fixed input record separator bug in Mojo::Util. (Zoffix, sri) + - Fixed small redirect bug in Mojo::UserAgent::Transactor. + +------------------------------------------------------------------- Old: ---- Mojolicious-6.22.tar.gz New: ---- Mojolicious-6.24.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Mojolicious.spec ++++++ --- /var/tmp/diff_new_pack.98BY8n/_old 2015-10-20 00:06:12.000000000 +0200 +++ /var/tmp/diff_new_pack.98BY8n/_new 2015-10-20 00:06:12.000000000 +0200 @@ -17,7 +17,7 @@ Name: perl-Mojolicious -Version: 6.22 +Version: 6.24 Release: 0 %define cpan_name Mojolicious Summary: Real-time web framework ++++++ Mojolicious-6.22.tar.gz -> Mojolicious-6.24.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/Changes new/Mojolicious-6.24/Changes --- old/Mojolicious-6.22/Changes 2015-09-26 04:10:45.000000000 +0200 +++ new/Mojolicious-6.24/Changes 2015-10-13 21:37:08.000000000 +0200 @@ -1,4 +1,19 @@ +6.24 2015-10-13 + - Improved session security by not storing secrets in the stash and making + CSRF tokens much harder to guess. + - Improved commands to show all options that can affect their behavior. + - Fixed bug in Mojo::JSON::Pointer that prevented JSON Pointers with trailing + slash from working correctly. (dolmen) + - Fixed support for domains with trailing dot in Mojo::URL. + +6.23 2015-10-06 + - Improved documentation browser CSS. + - Fixed bug in Mojo::Transaction::WebSocket where an unsupported protocol + could be selected automatically. + - Fixed input record separator bug in Mojo::Util. (Zoffix, sri) + - Fixed small redirect bug in Mojo::UserAgent::Transactor. + 6.22 2015-09-26 - Improved Mojo::JSON by reusing JSON::PP boolean constants. - Improved uniq method in Mojo::Collection to accept a callback. (CandyAngel) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/META.json new/Mojolicious-6.24/META.json --- old/Mojolicious-6.22/META.json 2015-09-27 03:03:11.000000000 +0200 +++ new/Mojolicious-6.24/META.json 2015-10-14 00:54:09.000000000 +0200 @@ -4,7 +4,7 @@ "Sebastian Riedel <s...@cpan.org>" ], "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150005", + "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001", "license" : [ "artistic_2" ], @@ -58,6 +58,5 @@ }, "x_IRC" : "irc://irc.perl.org/#mojo" }, - "version" : "6.22", - "x_serialization_backend" : "JSON::PP version 2.27300" + "version" : "6.24" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/META.yml new/Mojolicious-6.24/META.yml --- old/Mojolicious-6.22/META.yml 2015-09-27 03:03:10.000000000 +0200 +++ new/Mojolicious-6.24/META.yml 2015-10-14 00:54:09.000000000 +0200 @@ -7,7 +7,7 @@ configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 0 -generated_by: 'ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150005' +generated_by: 'ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001' license: artistic_2 meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -31,5 +31,4 @@ homepage: http://mojolicio.us license: http://www.opensource.org/licenses/artistic-license-2.0 repository: https://github.com/kraih/mojo.git -version: '6.22' -x_serialization_backend: 'CPAN::Meta::YAML version 0.016' +version: '6.24' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojo/JSON/Pointer.pm new/Mojolicious-6.24/lib/Mojo/JSON/Pointer.pm --- old/Mojolicious-6.22/lib/Mojo/JSON/Pointer.pm 2015-08-29 13:14:10.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojo/JSON/Pointer.pm 2015-10-13 15:36:18.000000000 +0200 @@ -13,7 +13,7 @@ my $data = $self->data; return $data unless $pointer =~ s!^/!!; - for my $p ($pointer eq '' ? ($pointer) : (split '/', $pointer)) { + for my $p ($pointer eq '' ? ($pointer) : (split '/', $pointer, -1)) { $p =~ s!~1!/!g; $p =~ s/~0/~/g; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojo/Transaction/WebSocket.pm new/Mojolicious-6.24/lib/Mojo/Transaction/WebSocket.pm --- old/Mojolicious-6.22/lib/Mojo/Transaction/WebSocket.pm 2015-08-29 15:57:52.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojo/Transaction/WebSocket.pm 2015-10-06 11:40:40.000000000 +0200 @@ -234,15 +234,11 @@ } sub server_handshake { - my $self = shift; - + my $self = shift; my $res_headers = $self->res->headers; $res_headers->upgrade('websocket')->connection('Upgrade'); - my $req_headers = $self->req->headers; - ($req_headers->sec_websocket_protocol // '') =~ /^\s*([^,]+)/ - and $res_headers->sec_websocket_protocol($1); $res_headers->sec_websocket_accept( - _challenge($req_headers->sec_websocket_key)); + _challenge($self->req->headers->sec_websocket_key)); } sub server_open { shift->{open}++ } @@ -590,7 +586,7 @@ =head2 kept_alive - my $kept_alive = $ws->kept_alive; + my $bool = $ws->kept_alive; Connection has been kept alive. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojo/Transaction.pm new/Mojolicious-6.24/lib/Mojo/Transaction.pm --- old/Mojolicious-6.22/lib/Mojo/Transaction.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojo/Transaction.pm 2015-10-06 11:40:40.000000000 +0200 @@ -131,8 +131,8 @@ =head2 kept_alive - my $kept_alive = $tx->kept_alive; - $tx = $tx->kept_alive(1); + my $bool = $tx->kept_alive; + $tx = $tx->kept_alive($bool); Connection has been kept alive. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojo/URL.pm new/Mojolicious-6.24/lib/Mojo/URL.pm --- old/Mojolicious-6.22/lib/Mojo/URL.pm 2015-08-29 16:33:18.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojo/URL.pm 2015-10-13 21:40:10.000000000 +0200 @@ -54,7 +54,7 @@ # Decode return $self->host(join '.', - map { /^xn--(.+)$/ ? punycode_decode($_) : $_ } split /\./, shift) + map { /^xn--(.+)$/ ? punycode_decode($_) : $_ } split(/\./, shift, -1)) if @_; # Check if host needs to be encoded @@ -63,8 +63,8 @@ # Encode return lc join '.', - map { /[^\x00-\x7f]/ ? ('xn--' . punycode_encode $_) : $_ } split /\./, - $host; + map { /[^\x00-\x7f]/ ? ('xn--' . punycode_encode $_) : $_ } + split(/\./, $host, -1); } sub is_abs { !!shift->scheme } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojo/UserAgent/Transactor.pm new/Mojolicious-6.24/lib/Mojo/UserAgent/Transactor.pm --- old/Mojolicious-6.22/lib/Mojo/UserAgent/Transactor.pm 2015-09-22 20:00:06.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojo/UserAgent/Transactor.pm 2015-10-06 11:40:40.000000000 +0200 @@ -75,7 +75,7 @@ $location = Mojo::URL->new($location); $location = $location->base($old->req->url)->to_abs unless $location->is_abs; my $proto = $location->protocol; - return undef unless $proto eq 'http' || $proto eq 'https'; + return undef if ($proto ne 'http' && $proto ne 'https') || !$location->host; # Clone request if necessary my $new = Mojo::Transaction::HTTP->new; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojo/UserAgent.pm new/Mojolicious-6.24/lib/Mojo/UserAgent.pm --- old/Mojolicious-6.22/lib/Mojo/UserAgent.pm 2015-09-18 14:30:58.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojo/UserAgent.pm 2015-10-09 18:51:24.000000000 +0200 @@ -253,7 +253,7 @@ # Finish WebSocket return $self->_remove($id, 1) if $old->is_websocket; - if (my $jar = $self->cookie_jar) { $jar->collect($old) } + $self->cookie_jar->collect($old); # Upgrade connection to WebSocket if (my $new = $self->transactor->upgrade($old)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojo/Util.pm new/Mojolicious-6.24/lib/Mojo/Util.pm --- old/Mojolicious-6.22/lib/Mojo/Util.pm 2015-09-04 16:28:17.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojo/Util.pm 2015-10-14 00:34:53.000000000 +0200 @@ -31,7 +31,7 @@ # To generate a new HTML entity table run this command # perl examples/entities.pl my %ENTITIES; -while (my $line = <DATA>) { +for my $line (split "\n", join('', <DATA>)) { next unless $line =~ /^(\S+)\s+U\+(\S+)(?:\s+U\+(\S+))?/; $ENTITIES{$1} = defined $3 ? (chr(hex $2) . chr(hex $3)) : chr(hex $2); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/cgi.pm new/Mojolicious-6.24/lib/Mojolicious/Command/cgi.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/cgi.pm 2015-08-29 13:14:22.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/cgi.pm 2015-10-09 20:01:54.000000000 +0200 @@ -26,7 +26,12 @@ Usage: APPLICATION cgi [OPTIONS] Options: - --nph Enable non-parsed-header mode + -h, --help Show this summary of available options + --home <path> Path to home directory of your application, defaults to + the value of MOJO_HOME or auto detection + -m, --mode <name> Operating mode for your application, defaults to the + value of MOJO_MODE/PLACK_ENV or "development" + --nph Enable non-parsed-header mode =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/cpanify.pm new/Mojolicious-6.24/lib/Mojolicious/Command/cpanify.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/cpanify.pm 2015-08-29 13:14:22.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/cpanify.pm 2015-10-09 20:05:03.000000000 +0200 @@ -52,6 +52,7 @@ mojo cpanify -u sri -p secr3t Mojolicious-Plugin-MyPlugin-0.01.tar.gz Options: + -h, --help Show this summary of available options -p, --password <password> PAUSE password -u, --user <name> PAUSE username diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/daemon.pm new/Mojolicious-6.24/lib/Mojolicious/Command/daemon.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/daemon.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/daemon.pm 2015-10-09 20:04:58.000000000 +0200 @@ -45,11 +45,18 @@ SOMAXCONN -c, --clients <number> Maximum number of concurrent connections, defaults to 1000 + -h, --help Show this summary of available options + --home <path> Path to home directory of your + application, defaults to the value of + MOJO_HOME or auto detection -i, --inactivity-timeout <seconds> Inactivity timeout, defaults to the value of MOJO_INACTIVITY_TIMEOUT or 15 -l, --listen <location> One or more locations you want to listen on, defaults to the value of MOJO_LISTEN or "http://*:3000" + -m, --mode <name> Operating mode for your application, + defaults to the value of + MOJO_MODE/PLACK_ENV or "development" -p, --proxy Activate reverse proxy support, defaults to the value of MOJO_REVERSE_PROXY diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/eval.pm new/Mojolicious-6.24/lib/Mojolicious/Command/eval.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/eval.pm 2015-08-29 13:14:23.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/eval.pm 2015-10-09 20:04:25.000000000 +0200 @@ -37,8 +37,13 @@ ./myapp.pl eval -V 'app->renderer->paths' Options: - -v, --verbose Print return value to STDOUT - -V Print returned data structure to STDOUT + -h, --help Show this summary of available options + --home <path> Path to home directory of your application, defaults to + the value of MOJO_HOME or auto detection + -m, --mode <name> Operating mode for your application, defaults to the + value of MOJO_MODE/PLACK_ENV or "development" + -v, --verbose Print return value to STDOUT + -V Print returned data structure to STDOUT =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/generate/app.pm new/Mojolicious-6.24/lib/Mojolicious/Command/generate/app.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/generate/app.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/generate/app.pm 2015-10-09 12:35:05.000000000 +0200 @@ -53,7 +53,10 @@ =head1 SYNOPSIS - Usage: APPLICATION generate app [NAME] + Usage: APPLICATION generate app [OPTIONS] [NAME] + + Options: + -h, --help Show this summary of available options =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/generate/lite_app.pm new/Mojolicious-6.24/lib/Mojolicious/Command/generate/lite_app.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/generate/lite_app.pm 2015-08-29 13:14:23.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/generate/lite_app.pm 2015-10-09 12:34:45.000000000 +0200 @@ -21,7 +21,10 @@ =head1 SYNOPSIS - Usage: APPLICATION generate lite_app [NAME] + Usage: APPLICATION generate lite_app [OPTIONS] [NAME] + + Options: + -h, --help Show this summary of available options =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/generate/makefile.pm new/Mojolicious-6.24/lib/Mojolicious/Command/generate/makefile.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/generate/makefile.pm 2015-08-29 13:14:24.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/generate/makefile.pm 2015-10-09 12:35:19.000000000 +0200 @@ -18,7 +18,10 @@ =head1 SYNOPSIS - Usage: APPLICATION generate makefile + Usage: APPLICATION generate makefile [OPTIONS] + + Options: + -h, --help Show this summary of available options =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/generate/plugin.pm new/Mojolicious-6.24/lib/Mojolicious/Command/generate/plugin.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/generate/plugin.pm 2015-08-29 13:14:24.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/generate/plugin.pm 2015-10-09 12:35:34.000000000 +0200 @@ -35,7 +35,10 @@ =head1 SYNOPSIS - Usage: APPLICATION generate plugin [NAME] + Usage: APPLICATION generate plugin [OPTIONS] [NAME] + + Options: + -h, --help Show this summary of available options =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/get.pm new/Mojolicious-6.24/lib/Mojolicious/Command/get.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/get.pm 2015-08-29 16:35:36.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/get.pm 2015-10-09 20:04:16.000000000 +0200 @@ -146,7 +146,14 @@ detection -c, --content <content> Content to send with request -H, --header <name:value> Additional HTTP header + -h, --help Show this summary of available options + --home <path> Path to home directory of your application, + defaults to the value of MOJO_HOME or auto + detection -M, --method <method> HTTP method to use, defaults to "GET" + -m, --mode <name> Operating mode for your application, defaults to + the value of MOJO_MODE/PLACK_ENV or + "development" -r, --redirect Follow up to 10 redirects -v, --verbose Print request and response headers to STDERR diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/inflate.pm new/Mojolicious-6.24/lib/Mojolicious/Command/inflate.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/inflate.pm 2015-08-29 13:14:25.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/inflate.pm 2015-10-09 20:04:05.000000000 +0200 @@ -38,7 +38,14 @@ =head1 SYNOPSIS - Usage: APPLICATION inflate + Usage: APPLICATION inflate [OPTIONS] + + Options: + -h, --help Show this summary of available options + --home <path> Path to home directory of your application, defaults to + the value of MOJO_HOME or auto detection + -m, --mode <name> Operating mode for your application, defaults to the + value of MOJO_MODE/PLACK_ENV or "development" =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/prefork.pm new/Mojolicious-6.24/lib/Mojolicious/Command/prefork.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/prefork.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/prefork.pm 2015-10-09 20:06:57.000000000 +0200 @@ -58,6 +58,10 @@ -G, --graceful-timeout <seconds> Graceful timeout, defaults to 20. -I, --heartbeat-interval <seconds> Heartbeat interval, defaults to 5 -H, --heartbeat-timeout <seconds> Heartbeat timeout, defaults to 20 + -h, --help Show this summary of available options + --home <path> Path to home directory of your + application, defaults to the value of + MOJO_HOME or auto detection -i, --inactivity-timeout <seconds> Inactivity timeout, defaults to the value of MOJO_INACTIVITY_TIMEOUT or 15 -l, --listen <location> One or more locations you want to @@ -65,6 +69,9 @@ MOJO_LISTEN or "http://*:3000" -M, --multi-accept <number> Number of connections to accept at once, defaults to 50 + -m, --mode <name> Operating mode for your application, + defaults to the value of + MOJO_MODE/PLACK_ENV or "development" -P, --pid-file <path> Path to process id file, defaults to "prefork.pid" in a temporary diretory -p, --proxy Activate reverse proxy support, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/psgi.pm new/Mojolicious-6.24/lib/Mojolicious/Command/psgi.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/psgi.pm 2015-08-29 13:14:25.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/psgi.pm 2015-10-09 20:03:36.000000000 +0200 @@ -18,7 +18,14 @@ =head1 SYNOPSIS - Usage: APPLICATION psgi + Usage: APPLICATION psgi [OPTIONS] + + Options: + -h, --help Show this summary of available options + --home <path> Path to home directory of your application, defaults to + the value of MOJO_HOME or auto detection + -m, --mode <name> Operating mode for your application, defaults to the + value of MOJO_MODE/PLACK_ENV or "development" =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/routes.pm new/Mojolicious-6.24/lib/Mojolicious/Command/routes.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/routes.pm 2015-08-29 13:14:26.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/routes.pm 2015-10-09 20:03:25.000000000 +0200 @@ -67,8 +67,13 @@ Usage: APPLICATION routes [OPTIONS] Options: - -v, --verbose Print additional details about routes, flags indicate - C=Conditions, D=Detour, U=Under and W=WebSocket + -h, --help Show this summary of available options + --home <path> Path to home directory of your application, defaults to + the value of MOJO_HOME or auto detection + -m, --mode <name> Operating mode for your application, defaults to the + value of MOJO_MODE/PLACK_ENV or "development" + -v, --verbose Print additional details about routes, flags indicate + C=Conditions, D=Detour, U=Under and W=WebSocket =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/test.pm new/Mojolicious-6.24/lib/Mojolicious/Command/test.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/test.pm 2015-08-29 13:14:26.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/test.pm 2015-10-09 12:59:37.000000000 +0200 @@ -41,6 +41,7 @@ ./myapp.pl test -v t/foo/*.t Options: + -h, --help Show this summary of available options -v, --verbose Print verbose debug information to STDERR =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Command/version.pm new/Mojolicious-6.24/lib/Mojolicious/Command/version.pm --- old/Mojolicious-6.22/lib/Mojolicious/Command/version.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Command/version.pm 2015-10-09 12:51:01.000000000 +0200 @@ -53,7 +53,10 @@ =head1 SYNOPSIS - Usage: APPLICATION version + Usage: APPLICATION version [OPTIONS] + + Options: + -h, --help Show this summary of available options =head1 DESCRIPTION diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Commands.pm new/Mojolicious-6.24/lib/Mojolicious/Commands.pm --- old/Mojolicious-6.22/lib/Mojolicious/Commands.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Commands.pm 2015-10-09 20:07:29.000000000 +0200 @@ -111,7 +111,7 @@ Options (for all commands): -h, --help Get more information on a specific command - --home <path> Path to your applications home directory, defaults to + --home <path> Path to home directory of your application, defaults to the value of MOJO_HOME or auto detection -m, --mode <name> Operating mode for your application, defaults to the value of MOJO_MODE/PLACK_ENV or "development" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Controller.pm new/Mojolicious-6.24/lib/Mojolicious/Controller.pm --- old/Mojolicious-6.22/lib/Mojolicious/Controller.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Controller.pm 2015-10-09 17:40:02.000000000 +0200 @@ -78,7 +78,7 @@ sub every_signed_cookie { my ($self, $name) = @_; - my $secrets = $self->stash->{'mojo.secrets'}; + my $secrets = $self->app->secrets; my @results; for my $value (@{$self->every_cookie($name)}) { @@ -283,8 +283,7 @@ return $self->every_signed_cookie($name)->[-1] unless defined $value; # Response cookie - my $checksum - = Mojo::Util::hmac_sha1_sum($value, $self->stash->{'mojo.secrets'}[0]); + my $checksum = Mojo::Util::hmac_sha1_sum($value, $self->app->secrets->[0]); return $self->cookie($name, "$value--$checksum", $options); } @@ -417,8 +416,9 @@ L<Mojolicious::Routes::Match> object. # Introspect - my $controller = $c->match->endpoint->pattern->defaults->{controller}; - my $action = $c->match->stack->[-1]{action}; + my $name = $c->match->endpoint->name; + my $foo = $c->match->endpoint->pattern->defaults->{foo}; + my $action = $c->match->stack->[-1]{action}; =head2 tx @@ -764,12 +764,12 @@ Automatically select best possible representation for resource from C<Accept> request header, C<format> stash value or C<format> C<GET>/C<POST> parameter, -defaults to rendering an empty C<204> response. Each representation can be -handled with a callback or a hash reference containing arguments to be passed -to L</"render">. Since browsers often don't really know what they actually -want, unspecific C<Accept> request headers with more than one MIME type will be -ignored, unless the C<X-Requested-With> header is set to the value -C<XMLHttpRequest>. +defaults to L<Mojolicious::Renderer/"default_format"> or rendering an empty +C<204> response. Each representation can be handled with a callback or a hash +reference containing arguments to be passed to L</"render">. Since browsers +often don't really know what they actually want, unspecific C<Accept> request +headers with more than one MIME type will be ignored, unless the +C<X-Requested-With> header is set to the value C<XMLHttpRequest>. # Everything else than "json" and "xml" gets a 204 response $c->respond_to( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Guides/Growing.pod new/Mojolicious-6.24/lib/Mojolicious/Guides/Growing.pod --- old/Mojolicious-6.22/lib/Mojolicious/Guides/Growing.pod 2015-08-13 03:30:53.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Guides/Growing.pod 2015-10-06 11:40:40.000000000 +0200 @@ -213,12 +213,30 @@ will be passed on to L<Mojolicious>, where it will be handled in a few simple steps. - 1. Check if a static file exists that would meet the requirements. - 2. Try to find a route that would meet the requirements. - 3. Dispatch the request to this route, usually reaching one or more actions. - 4. Process the request, maybe generating a response with the renderer. - 5. Return control to the web server, and if no response has been generated - yet, wait for a non-blocking operation to do so through the event loop. +=over 2 + +=item 1. + +Check if a static file exists that would meet the requirements. + +=item 2. + +Try to find a route that would meet the requirements. + +=item 3. + +Dispatch the request to this route, usually reaching one or more actions. + +=item 4. + +Process the request, maybe generating a response with the renderer. + +=item 5. + +Return control to the web server, and if no response has been generated yet, +wait for a non-blocking operation to do so through the event loop. + +=back With our application the router would have found an action in step 2, and rendered some text in step 4, resulting in an HTTP response like this being diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Guides/Rendering.pod new/Mojolicious-6.24/lib/Mojolicious/Guides/Rendering.pod --- old/Mojolicious-6.22/lib/Mojolicious/Guides/Rendering.pod 2015-08-19 05:20:41.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Guides/Rendering.pod 2015-10-12 18:40:15.000000000 +0200 @@ -1442,10 +1442,27 @@ return 1; }); - get '/' => {storable => {i => '♥ mojolicious'}, handler => 'storable'}; + # Set "handler" value automatically if "storable" value is set already + app->hook(before_render => sub { + my ($c, $args) = @_; + $args->{handler} = 'storable' + if exists $args->{storable} || exists $c->stash->{storable}; + }); + + get '/' => {storable => {i => '♥ mojolicious'}}; app->start; +The hook L<Mojolicious/"before_render"> can be used to make stash values like +C<storable> special, so that they no longer require a C<handler> value to be set +explicitly. + + # Explicit "handler" value + $c->render(storable => {i => '♥ mojolicious'}, handler => 'storable'); + + # Implicit "handler" value (with "before_render" hook) + $c->render(storable => {i => '♥ mojolicious'}); + =head1 MORE You can continue with L<Mojolicious::Guides> now or take a look at the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Plugin/DefaultHelpers.pm new/Mojolicious-6.24/lib/Mojolicious/Plugin/DefaultHelpers.pm --- old/Mojolicious-6.22/lib/Mojolicious/Plugin/DefaultHelpers.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Plugin/DefaultHelpers.pm 2015-10-12 14:04:10.000000000 +0200 @@ -5,7 +5,7 @@ use Mojo::Collection; use Mojo::Exception; use Mojo::IOLoop; -use Mojo::Util qw(dumper sha1_sum steady_time); +use Mojo::Util qw(dumper hmac_sha1_sum steady_time); sub register { my ($self, $app) = @_; @@ -67,8 +67,8 @@ sub _csrf_token { my $c = shift; - $c->session->{csrf_token} - ||= sha1_sum $c->app->secrets->[0] . steady_time . rand 999; + return $c->session->{csrf_token} + ||= hmac_sha1_sum $$ . steady_time . rand 999, $c->app->secrets->[0]; } sub _current_route { @@ -477,6 +477,8 @@ Alias for L<Mojolicious::Controller/"url_for">. + %= url_for('/index.html')->query(foo => 'bar') + =head2 url_with %= url_with 'named', controller => 'bar', action => 'baz' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Plugin/Mount.pm new/Mojolicious-6.24/lib/Mojolicious/Plugin/Mount.pm --- old/Mojolicious-6.22/lib/Mojolicious/Plugin/Mount.pm 2015-08-29 13:14:30.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Plugin/Mount.pm 2015-10-09 17:51:55.000000000 +0200 @@ -8,6 +8,7 @@ my $path = (keys %$conf)[0]; my $embed = Mojo::Server->new->load_app($conf->{$path}); + $embed->secrets($app->secrets); # Extract host my $host; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Renderer.pm new/Mojolicious-6.24/lib/Mojolicious/Renderer.pm --- old/Mojolicious-6.22/lib/Mojolicious/Renderer.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Renderer.pm 2015-10-06 20:44:04.000000000 +0200 @@ -296,12 +296,16 @@ # Add another class with templates in DATA section push @{$renderer->classes}, 'Mojolicious::Plugin::Fun'; + # Add another class with templates in DATA section and higher precedence + unshift @{$renderer->classes}, 'Mojolicious::Plugin::MoreFun'; + =head2 default_format my $default = $renderer->default_format; $renderer = $renderer->default_format('html'); -The default format to render if C<format> is not set in the stash. +The default format to render if C<format> is not set in the stash, defaults to +C<html>. =head2 default_handler @@ -345,6 +349,9 @@ # Add another "templates" directory push @{$renderer->paths}, '/home/sri/templates'; + # Add another "templates" directory with higher precedence + unshift @{$renderer->paths}, '/home/sri/themes/blue/templates'; + =head1 METHODS L<Mojolicious::Renderer> inherits all methods from L<Mojo::Base> and implements diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Routes/Route.pm new/Mojolicious-6.24/lib/Mojolicious/Routes/Route.pm --- old/Mojolicious-6.22/lib/Mojolicious/Routes/Route.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Routes/Route.pm 2015-10-06 11:40:40.000000000 +0200 @@ -309,6 +309,7 @@ request methods or all. See also L<Mojolicious::Guides::Tutorial> for many more argument variations. + # Route with destination $r->any('/user')->to('user#whatever'); =head2 delete @@ -321,6 +322,7 @@ Generate L<Mojolicious::Routes::Route> object matching only C<DELETE> requests. See also L<Mojolicious::Guides::Tutorial> for many more argument variations. + # Route with destination $r->delete('/user')->to('user#remove'); =head2 detour @@ -340,6 +342,7 @@ Find child route by name, custom names have precedence over automatically generated ones. + # Change default parameters of a named route $r->find('show_user')->to(foo => 'bar'); =head2 get @@ -352,6 +355,7 @@ Generate L<Mojolicious::Routes::Route> object matching only C<GET> requests. See also L<Mojolicious::Guides::Tutorial> for many more argument variations. + # Route with destination $r->get('/user')->to('user#show'); =head2 has_custom_name @@ -388,6 +392,7 @@ the route pattern. Note that the name C<current> is reserved for referring to the current route. + # Route with destination and custom name $r->get('/user')->to('user#show')->name('show_user'); =head2 new @@ -411,6 +416,7 @@ requests. See also L<Mojolicious::Guides::Tutorial> for many more argument variations. + # Route with destination $r->options('/user')->to('user#overview'); =head2 over @@ -423,6 +429,7 @@ Activate conditions for this route. Note that this automatically disables the routing cache, since conditions are too complex for caching. + # Route with condition and destination $r->get('/foo')->over(host => qr/mojolicio\.us/)->to('foo#bar'); =head2 parse @@ -443,6 +450,7 @@ Generate L<Mojolicious::Routes::Route> object matching only C<PATCH> requests. See also L<Mojolicious::Guides::Tutorial> for many more argument variations. + # Route with destination $r->patch('/user')->to('user#update'); =head2 post @@ -455,6 +463,7 @@ Generate L<Mojolicious::Routes::Route> object matching only C<POST> requests. See also L<Mojolicious::Guides::Tutorial> for many more argument variations. + # Route with destination $r->post('/user')->to('user#create'); =head2 put @@ -467,6 +476,7 @@ Generate L<Mojolicious::Routes::Route> object matching only C<PUT> requests. See also L<Mojolicious::Guides::Tutorial> for many more argument variations. + # Route with destination $r->put('/user')->to('user#replace'); =head2 remove @@ -545,6 +555,7 @@ intermediate destination. See also L<Mojolicious::Guides::Tutorial> for many more argument variations. + # Intermediate destination and prefix shared between two routes my $auth = $r->under('/user')->to('user#auth'); $auth->get('/show')->to('#show'); $auth->post('/create')->to('#create'); @@ -559,6 +570,7 @@ Restrict HTTP methods this route is allowed to handle, defaults to no restrictions. + # Route with two methods and destination $r->route('/foo')->via(qw(GET POST))->to('foo#bar'); =head2 websocket @@ -572,6 +584,7 @@ handshakes. See also L<Mojolicious::Guides::Tutorial> for many more argument variations. + # Route with destination $r->websocket('/echo')->to('example#echo'); =head1 AUTOLOAD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/Static.pm new/Mojolicious-6.24/lib/Mojolicious/Static.pm --- old/Mojolicious-6.22/lib/Mojolicious/Static.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/Static.pm 2015-10-06 20:44:09.000000000 +0200 @@ -184,6 +184,9 @@ # Add another class with static files in DATA section push @{$static->classes}, 'Mojolicious::Plugin::Fun'; + # Add another class with static files in DATA section and higher precedence + unshift @{$static->classes}, 'Mojolicious::Plugin::MoreFun'; + =head2 paths my $paths = $static->paths; @@ -194,6 +197,9 @@ # Add another "public" directory push @{$static->paths}, '/home/sri/public'; + # Add another "public" directory with higher precedence + unshift @{$static->paths}, '/home/sri/themes/blue/public'; + =head1 METHODS L<Mojolicious::Static> inherits all methods from L<Mojo::Base> and implements diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious/templates/perldoc.html.ep new/Mojolicious-6.24/lib/Mojolicious/templates/perldoc.html.ep --- old/Mojolicious-6.22/lib/Mojolicious/templates/perldoc.html.ep 2015-08-13 03:31:46.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious/templates/perldoc.html.ep 2015-10-06 11:40:40.000000000 +0200 @@ -16,6 +16,15 @@ line-height: 1.5em; margin: 0; } + dd { + margin: 0; + margin-left: 2em; + } + dt { + color: #2a2a2a; + font-weight: bold; + margin-left: 1em; + } :not(pre) > code { background-color: rgba(0, 0, 0, 0.04); border-radius: 3px; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Mojolicious.pm new/Mojolicious-6.24/lib/Mojolicious.pm --- old/Mojolicious-6.22/lib/Mojolicious.pm 2015-09-23 03:05:07.000000000 +0200 +++ new/Mojolicious-6.24/lib/Mojolicious.pm 2015-10-13 15:43:54.000000000 +0200 @@ -43,7 +43,7 @@ has validator => sub { Mojolicious::Validator->new }; our $CODENAME = 'Clinking Beer Mugs'; -our $VERSION = '6.22'; +our $VERSION = '6.24'; sub AUTOLOAD { my $self = shift; @@ -65,7 +65,6 @@ # Embedded application my $stash = {}; if (my $sub = $tx->can('stash')) { ($stash, $tx) = ($tx->$sub, $tx->tx) } - $stash->{'mojo.secrets'} //= $self->secrets; # Build default controller my $defaults = $self->defaults; @@ -437,6 +436,9 @@ # Add another "templates" directory push @{$app->renderer->paths}, '/home/sri/templates'; + # Add another "templates" directory with higher precedence + unshift @{$app->renderer->paths}, '/home/sri/themes/blue/templates'; + # Add another class with templates in DATA section push @{$app->renderer->classes}, 'Mojolicious::Plugin::Fun'; @@ -497,6 +499,9 @@ # Add another "public" directory push @{$app->static->paths}, '/home/sri/public'; + # Add another "public" directory with higher precedence + unshift @{$app->static->paths}, '/home/sri/themes/blue/public'; + # Add another class with static files in DATA section push @{$app->static->classes}, 'Mojolicious::Plugin::Fun'; @@ -944,6 +949,8 @@ Oleg Zhelo +Olivier Mengue + Pascal Gaudette Paul Evans diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/lib/Test/Mojo.pm new/Mojolicious-6.24/lib/Test/Mojo.pm --- old/Mojolicious-6.22/lib/Test/Mojo.pm 2015-09-21 22:13:57.000000000 +0200 +++ new/Mojolicious-6.24/lib/Test/Mojo.pm 2015-10-09 18:54:52.000000000 +0200 @@ -259,7 +259,7 @@ sub reset_session { my $self = shift; - if (my $jar = $self->ua->cookie_jar) { $jar->empty } + $self->ua->cookie_jar->empty; return $self->tx(undef); } @@ -497,9 +497,7 @@ # More specific tests is $t->tx->res->json->{foo}, 'bar', 'right value'; ok $t->tx->res->content->is_multipart, 'multipart content'; - - # Test custom transactions - $t->tx($t->tx->previous)->status_is(302)->header_like(Location => qr/foo/); + is $t->tx->previous->res->code, 302, 'right status'; =head2 ua diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/t/mojo/json_pointer.t new/Mojolicious-6.24/t/mojo/json_pointer.t --- old/Mojolicious-6.22/t/mojo/json_pointer.t 2015-08-29 01:31:18.000000000 +0200 +++ new/Mojolicious-6.24/t/mojo/json_pointer.t 2015-10-13 16:12:04.000000000 +0200 @@ -4,8 +4,9 @@ use Mojo::JSON::Pointer; # "contains" (hash) -my $pointer = Mojo::JSON::Pointer->new({foo => 23}); +my $pointer = Mojo::JSON::Pointer->new({foo => 23, '' => 24}); ok $pointer->contains(''), 'contains ""'; +ok $pointer->contains('/'), 'contains "/"'; ok $pointer->contains('/foo'), 'contains "/foo"'; ok !$pointer->contains('/bar'), 'does not contains "/bar"'; ok $pointer->new({foo => {bar => undef}})->contains('/foo/bar'), @@ -18,15 +19,21 @@ ok !$pointer->contains('/foo/9'), 'does not contain "/foo/9"'; ok !$pointer->contains('/foo/bar'), 'does not contain "/foo/bar"'; ok !$pointer->contains('/0'), 'does not contain "/0"'; +ok !$pointer->contains('/'), 'does not contain "/"'; # "get" (hash) -$pointer = Mojo::JSON::Pointer->new({foo => 'bar'}); -is_deeply $pointer->get(''), {foo => 'bar'}, '"" is "{foo => "bar"}"'; +$pointer = Mojo::JSON::Pointer->new({foo => 'bar', '' => 'baz'}); +is_deeply $pointer->get(''), {foo => 'bar', '' => 'baz'}, + '"" is "{foo => "bar", "" => "baz"}"'; +is $pointer->get('/'), 'baz', '"/" is "baz"'; is $pointer->get('/foo'), 'bar', '"/foo" is "bar"'; is $pointer->new({foo => {bar => 42}})->get('/foo/bar'), 42, '"/foo/bar" is "42"'; is_deeply $pointer->new({foo => {23 => {baz => 0}}})->get('/foo/23'), {baz => 0}, '"/foo/23" is "{baz => 0}"'; +is $pointer->new({foo => {'' => 42}})->get('/foo/'), 42, '"/foo/" is "42"'; +is $pointer->new({foo => {'' => {'' => 42}}})->get('/foo//'), 42, + '"/foo//" is "42"'; # "get" (mixed) is_deeply $pointer->new({foo => {bar => [1, 2, 3]}})->get('/foo/bar'), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/t/mojo/transactor.t new/Mojolicious-6.24/t/mojo/transactor.t --- old/Mojolicious-6.22/t/mojo/transactor.t 2015-09-23 00:47:25.000000000 +0200 +++ new/Mojolicious-6.24/t/mojo/transactor.t 2015-10-06 11:40:40.000000000 +0200 @@ -825,6 +825,10 @@ $tx->res->code(302); $tx->res->headers->location('data:image/png;base64,helloworld123'); is $t->redirect($tx), undef, 'unsupported redirect'; +$tx = $t->tx(GET => 'http://mojolicio.us/foo'); +$tx->res->code(302); +$tx->res->headers->location('http:'); +is $t->redirect($tx), undef, 'unsupported redirect'; # 302 redirect (relative path and query) $tx = $t->tx( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/t/mojo/url.t new/Mojolicious-6.24/t/mojo/url.t --- old/Mojolicious-6.22/t/mojo/url.t 2015-08-29 01:31:30.000000000 +0200 +++ new/Mojolicious-6.24/t/mojo/url.t 2015-10-13 21:35:52.000000000 +0200 @@ -654,6 +654,12 @@ is $url->path, '/100%25_fun', 'right path'; is "$url", 'http://mojolicio.us/100%25_fun', 'right format'; +# Trailing dot +$url = Mojo::URL->new('http://☃.net./♥'); +is $url->ihost, 'xn--n3h.net.', 'right internationalized host'; +is $url->host, '☃.net.', 'right host'; +is "$url", 'http://xn--n3h.net./%E2%99%A5', 'right format'; + # No charset $url = Mojo::URL->new; $url->path->charset(undef); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/t/mojo/user_agent_online.t new/Mojolicious-6.24/t/mojo/user_agent_online.t --- old/Mojolicious-6.22/t/mojo/user_agent_online.t 2015-08-29 01:31:31.000000000 +0200 +++ new/Mojolicious-6.24/t/mojo/user_agent_online.t 2015-10-09 04:53:16.000000000 +0200 @@ -204,10 +204,9 @@ # HTTPS request that requires SNI SKIP: { skip 'SNI support required!', 1 unless IO::Socket::SSL->can_client_sni; - - $tx = $ua->get('https://google.de'); - like $ua->ioloop->stream($tx->connection) - ->handle->peer_certificate('commonName'), qr/google\.de/, 'right name'; + $tx = $ua->get('https://cpanmin.us'); + is $tx->res->code, 302, 'right status'; + like $tx->res->headers->location, qr/github/, 'right "Location" header'; } # Fresh user agent again diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/t/mojolicious/commands.t new/Mojolicious-6.24/t/mojolicious/commands.t --- old/Mojolicious-6.22/t/mojolicious/commands.t 2015-08-29 01:31:37.000000000 +0200 +++ new/Mojolicious-6.24/t/mojolicious/commands.t 2015-10-09 13:04:59.000000000 +0200 @@ -116,21 +116,24 @@ local *STDOUT = $handle; $commands->run('help', 'generate', 'lite_app'); } -like $buffer, qr/Usage: APPLICATION generate lite_app \[NAME\]/, 'right output'; +like $buffer, qr/Usage: APPLICATION generate lite_app \[OPTIONS\] \[NAME\]/, + 'right output'; $buffer = ''; { open my $handle, '>', \$buffer; local *STDOUT = $handle; $commands->run('generate', 'app', '-h'); } -like $buffer, qr/Usage: APPLICATION generate app \[NAME\]/, 'right output'; +like $buffer, qr/Usage: APPLICATION generate app \[OPTIONS\] \[NAME\]/, + 'right output'; $buffer = ''; { open my $handle, '>', \$buffer; local *STDOUT = $handle; $commands->run('generate', 'lite_app', '--help'); } -like $buffer, qr/Usage: APPLICATION generate lite_app \[NAME\]/, 'right output'; +like $buffer, qr/Usage: APPLICATION generate lite_app \[OPTIONS\] \[NAME\]/, + 'right output'; # get require Mojolicious::Command::get; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/t/mojolicious/lite_app.t new/Mojolicious-6.24/t/mojolicious/lite_app.t --- old/Mojolicious-6.22/t/mojolicious/lite_app.t 2015-08-29 01:31:42.000000000 +0200 +++ new/Mojolicious-6.24/t/mojolicious/lite_app.t 2015-10-09 18:56:50.000000000 +0200 @@ -969,9 +969,10 @@ ->text_is('div#☃' => 'Redirect works!')->text_unlike('div#☃' => qr/Foo/) ->text_like('div#☃' => qr/^Redirect/); $t->ua->max_redirects(0); -Test::Mojo->new->tx($t->tx->previous)->status_is(302) - ->header_is(Server => 'Mojolicious (Perl)') - ->header_like(Location => qr!/template.txt$!)->content_is(''); +is $t->tx->previous->res->code, 302, 'right status'; +like $t->tx->previous->res->headers->location, qr!/template.txt$!, + 'right "Location" value'; +is $t->tx->previous->res->body, '', 'right content'; # Request with koi8-r content my $koi8 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.22/t/mojolicious/websocket_lite_app.t new/Mojolicious-6.24/t/mojolicious/websocket_lite_app.t --- old/Mojolicious-6.22/t/mojolicious/websocket_lite_app.t 2015-08-29 01:31:52.000000000 +0200 +++ new/Mojolicious-6.24/t/mojolicious/websocket_lite_app.t 2015-10-06 11:40:40.000000000 +0200 @@ -123,7 +123,7 @@ my $headers = {DNT => 1, 'Sec-WebSocket-Key' => 'NTA2MDAyMDU1NjMzNjkwMg=='}; $t->websocket_ok('/echo' => $headers => ['foo', 'bar', 'baz']) ->header_is('Sec-WebSocket-Accept' => 'I+x5C3/LJxrmDrWw42nMP4pCSes=') - ->header_is('Sec-WebSocket-Protocol' => 'foo')->send_ok('hello') + ->header_is('Sec-WebSocket-Protocol' => undef)->send_ok('hello') ->message_ok->message_is('echo: hello')->finish_ok; is $t->tx->req->headers->dnt, 1, 'right "DNT" value'; is $t->tx->req->headers->sec_websocket_protocol, 'foo, bar, baz',