Hello community, here is the log from the commit of package perl-Mojolicious for openSUSE:Factory checked in at 2015-11-08 11:26:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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-10-30 13:43:41.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.perl-Mojolicious.new/perl-Mojolicious.changes 2015-11-08 11:26:12.000000000 +0100 @@ -1,0 +2,22 @@ +Tue Nov 3 10:12:15 UTC 2015 - co...@suse.com + +- updated to 6.28 + see /usr/share/doc/packages/perl-Mojolicious/Changes + + 6.28 2015-11-02 + - Improved build_app method in Mojo::Server to work more like the load_app + method. + - Fixed multi-line attribute bug in Mojo::DOM::HTML. (jamadam) + +------------------------------------------------------------------- +Sat Oct 31 10:51:02 UTC 2015 - co...@suse.com + +- updated to 6.27 + see /usr/share/doc/packages/perl-Mojolicious/Changes + + 6.27 2015-10-29 + - Updated HTML5 entities in Mojo::Util. + - Improved Mojo::Server::Prefork to log if the process id file could not be + created. + +------------------------------------------------------------------- Old: ---- Mojolicious-6.26.tar.gz New: ---- Mojolicious-6.28.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Mojolicious.spec ++++++ --- /var/tmp/diff_new_pack.AaVtHq/_old 2015-11-08 11:26:13.000000000 +0100 +++ /var/tmp/diff_new_pack.AaVtHq/_new 2015-11-08 11:26:13.000000000 +0100 @@ -17,7 +17,7 @@ Name: perl-Mojolicious -Version: 6.26 +Version: 6.28 Release: 0 %define cpan_name Mojolicious Summary: Real-time web framework ++++++ Mojolicious-6.26.tar.gz -> Mojolicious-6.28.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/Changes new/Mojolicious-6.28/Changes --- old/Mojolicious-6.26/Changes 2015-10-28 01:24:01.000000000 +0100 +++ new/Mojolicious-6.28/Changes 2015-11-02 13:10:32.000000000 +0100 @@ -1,4 +1,14 @@ +6.28 2015-11-02 + - Improved build_app method in Mojo::Server to work more like the load_app + method. + - Fixed multi-line attribute bug in Mojo::DOM::HTML. (jamadam) + +6.27 2015-10-29 + - Updated HTML5 entities in Mojo::Util. + - Improved Mojo::Server::Prefork to log if the process id file could not be + created. + 6.26 2015-10-28 - Renamed built-in templates with more descriptive names. - Added warmup method to Mojolicious::Renderer and Mojolicious::Static. @@ -1446,9 +1456,9 @@ - Added direct array access for parsed parameters to Mojo::Parameters. - Added direct array access for path parts to Mojo::Path. - Improved dumper helper to sort hash keys. - - Fixed bug in Mojo::Headers that prevented multiline headers from being + - Fixed bug in Mojo::Headers that prevented multi-line headers from being parsed correctly. - - Fixed multiline header support in hash representation of Mojo::Headers. + - Fixed multi-line header support in hash representation of Mojo::Headers. - Fixed cloning bug in Mojo::Headers. 3.89 2013-03-04 @@ -3388,7 +3398,7 @@ - Improved nested exception handling. (spleenjack) - Fixed relative path handling. - Fixed application generator. (yko) - - Fixed support for multiline expressions in Mojo::Template. + - Fixed support for multi-line expressions in Mojo::Template. - Fixed multiple --reload related leaks and reduced overall memory usage. - Fixed exception handling for included templates. - Fixed a small Mojo::Server::PSGI header bug. @@ -3618,7 +3628,7 @@ - Fixed Mojo::DOM to support escaped selectors. - Fixed Mojo::DOM parser bugs. - Fixed Mojo::DOM child listing bug. (evt) - - Fixed Mojo::DOM multiline attribute bug. (tempire) + - Fixed Mojo::DOM multi-line attribute bug. (tempire) - Fixed charset detection of the dom builder in Mojo::Message. (und3f) - Fixed json/data rendering with layouts in MojoX::Renderer. - Fixed Mojo::IOLoop to not stop unexpectedly. @@ -4218,7 +4228,7 @@ 0.991234 2009-07-03 - Added name and value filters to Mojo::Headers. (acajou) - - Added clean multiline value handling to Mojo::Headers. + - Added clean multi-line value handling to Mojo::Headers. - Added prepare/finalize methods to Mojolicious. - Added some additional MIME types to MojoX::Types. - Renamed method add_line to add in Mojo::Headers. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/META.json new/Mojolicious-6.28/META.json --- old/Mojolicious-6.26/META.json 2015-10-29 01:27:55.000000000 +0100 +++ new/Mojolicious-6.28/META.json 2015-11-02 16:16:03.000000000 +0100 @@ -58,5 +58,5 @@ }, "x_IRC" : "irc://irc.perl.org/#mojo" }, - "version" : "6.26" + "version" : "6.28" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/META.yml new/Mojolicious-6.28/META.yml --- old/Mojolicious-6.26/META.yml 2015-10-29 01:27:55.000000000 +0100 +++ new/Mojolicious-6.28/META.yml 2015-11-02 16:16:03.000000000 +0100 @@ -31,4 +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.26' +version: '6.28' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Content.pm new/Mojolicious-6.28/lib/Mojo/Content.pm --- old/Mojolicious-6.26/lib/Mojo/Content.pm 2015-10-08 20:45:17.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojo/Content.pm 2015-11-02 13:08:18.000000000 +0100 @@ -342,8 +342,7 @@ Emitted when a new chunk of content arrives. - $content->unsubscribe('read'); - $content->on(read => sub { + $content->unsubscribe('read')->on(read => sub { my ($content, $bytes) = @_; say "Streaming: $bytes"; }); @@ -577,11 +576,11 @@ $content = $content->write_chunk($bytes); $content = $content->write_chunk($bytes => sub {...}); -Write dynamic content non-blocking with C<chunked> transfer encoding, the -optional drain callback will be invoked once all data has been written. Calling -this method without a chunk of data will finalize the L</"headers"> and allow -for dynamic content to be written later. You can write an empty chunk of data -at any time to end the stream. +Write dynamic content non-blocking with chunked transfer encoding, the optional +drain callback will be invoked once all data has been written. Calling this +method without a chunk of data will finalize the L</"headers"> and allow for +dynamic content to be written later. You can write an empty chunk of data at any +time to end the stream. # Make sure previous chunk of data has been written before continuing $content->write_chunk('He' => sub { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/DOM/HTML.pm new/Mojolicious-6.28/lib/Mojo/DOM/HTML.pm --- old/Mojolicious-6.26/lib/Mojo/DOM/HTML.pm 2015-10-26 21:49:30.000000000 +0100 +++ new/Mojolicious-6.28/lib/Mojo/DOM/HTML.pm 2015-10-30 05:25:59.000000000 +0100 @@ -8,10 +8,10 @@ has 'xml'; my $ATTR_RE = qr/ - ([^<>=\s\/]+|\/) # Key + ([^<>=\s\/]+|\/) # Key (?: \s*=\s* - (?:(["'])(.*?)\g{-2}|([^>\s]*)) # Value + (?s:(["'])(.*?)\g{-2}|([^>\s]*)) # Value )? \s* /x; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/DOM.pm new/Mojolicious-6.28/lib/Mojo/DOM.pm --- old/Mojolicious-6.26/lib/Mojo/DOM.pm 2015-10-24 15:16:44.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojo/DOM.pm 2015-11-01 04:32:19.000000000 +0100 @@ -282,8 +282,8 @@ sub _parse { Mojo::DOM::HTML->new(xml => shift->xml)->parse(shift)->tree } sub _replace { - my ($self, $parent, $tree, @nodes) = @_; - splice @$parent, _offset($parent, $tree), 1, _link($parent, @nodes); + my ($self, $parent, $child, @nodes) = @_; + splice @$parent, _offset($parent, $child), 1, _link($parent, @nodes); return $self->parent; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Headers.pm new/Mojolicious-6.28/lib/Mojo/Headers.pm --- old/Mojolicious-6.26/lib/Mojo/Headers.pm 2015-10-08 18:54:16.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojo/Headers.pm 2015-10-30 05:27:05.000000000 +0100 @@ -101,7 +101,7 @@ # New header if ($line =~ /^(\S[^:]*)\s*:\s*(.*)$/) { push @$headers, [$1, $2] } - # Multiline + # Multi-line elsif ($line =~ s/^\s+// && @$headers) { $headers->[-1][1] .= " $line" } # Empty line @@ -135,7 +135,7 @@ sub to_string { my $self = shift; - # Make sure multiline values are formatted correctly + # Make sure multi-line values are formatted correctly my @headers; for my $name (@{$self->names}) { push @headers, "$name: $_" for @{$self->{headers}{lc $name}}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Log.pm new/Mojolicious-6.28/lib/Mojo/Log.pm --- old/Mojolicious-6.26/lib/Mojo/Log.pm 2015-08-29 13:14:11.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojo/Log.pm 2015-11-02 13:08:37.000000000 +0100 @@ -114,8 +114,7 @@ Emitted when a new message gets logged. - $log->unsubscribe('message'); - $log->on(message => sub { + $log->unsubscribe('message')->on(message => sub { my ($log, $level, @lines) = @_; say "$level: ", @lines; }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Server/CGI.pm new/Mojolicious-6.28/lib/Mojo/Server/CGI.pm --- old/Mojolicious-6.26/lib/Mojo/Server/CGI.pm 2015-08-29 13:14:14.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojo/Server/CGI.pm 2015-11-02 13:09:06.000000000 +0100 @@ -77,8 +77,7 @@ use Mojo::Server::CGI; my $cgi = Mojo::Server::CGI->new; - $cgi->unsubscribe('request'); - $cgi->on(request => sub { + $cgi->unsubscribe('request')->on(request => sub { my ($cgi, $tx) = @_; # Request diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Server/Daemon.pm new/Mojolicious-6.28/lib/Mojo/Server/Daemon.pm --- old/Mojolicious-6.26/lib/Mojo/Server/Daemon.pm 2015-10-27 16:50:24.000000000 +0100 +++ new/Mojolicious-6.28/lib/Mojo/Server/Daemon.pm 2015-11-02 13:09:11.000000000 +0100 @@ -255,8 +255,7 @@ use Mojo::Server::Daemon; my $daemon = Mojo::Server::Daemon->new(listen => ['http://*:8080']); - $daemon->unsubscribe('request'); - $daemon->on(request => sub { + $daemon->unsubscribe('request')->on(request => sub { my ($daemon, $tx) = @_; # Request @@ -311,7 +310,10 @@ my $acceptors = $daemon->acceptors; $daemon = $daemon->acceptors([]); -Active acceptors. +Active acceptor ids. + + # Check port + mu $port = $daemon->ioloop->acceptor($daemon->acceptors->[0])->port; =head2 backlog @@ -466,6 +468,11 @@ my $id = $daemon->listen(['http://127.0.0.1'])->start->acceptors->[0]; my $port = $daemon->ioloop->acceptor($id)->port; + # Run multiple web servers concurrently + my $daemon1 = Mojo::Server::Daemon->new(listen => ['http://*:3000'])->start; + my $daemon2 = Mojo::Server::Daemon->new(listen => ['http://*:4000'])->start; + Mojo::IOLoop->start unless Mojo::IOLoop->is_running; + =head2 stop $daemon = $daemon->stop; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Server/Hypnotoad.pm new/Mojolicious-6.28/lib/Mojo/Server/Hypnotoad.pm --- old/Mojolicious-6.26/lib/Mojo/Server/Hypnotoad.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojo/Server/Hypnotoad.pm 2015-10-30 17:02:48.000000000 +0100 @@ -10,7 +10,7 @@ use Mojo::Util qw(steady_time); use Scalar::Util 'weaken'; -has prefork => sub { Mojo::Server::Prefork->new }; +has prefork => sub { Mojo::Server::Prefork->new(listen => ['http://*:8080']) }; has upgrade_timeout => 60; sub configure { @@ -19,7 +19,6 @@ # Hypnotoad settings my $prefork = $self->prefork; my $c = $prefork->app->config($name) || {}; - $c->{listen} ||= ['http://*:8080']; $self->upgrade_timeout($c->{upgrade_timeout}) if $c->{upgrade_timeout}; # Prefork settings @@ -384,7 +383,7 @@ $hypnotoad->run('script/my_app'); -Run server for application. +Run server for application and wait for L</"MANAGER SIGNALS">. =head1 SEE ALSO diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Server/Morbo.pm new/Mojolicious-6.28/lib/Mojo/Server/Morbo.pm --- old/Mojolicious-6.26/lib/Mojo/Server/Morbo.pm 2015-08-29 13:14:15.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojo/Server/Morbo.pm 2015-10-30 17:02:17.000000000 +0100 @@ -173,7 +173,7 @@ $morbo->run('script/my_app'); -Run server for application. +Run server for application and wait for L</"SIGNALS">. =head1 SEE ALSO diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Server/PSGI.pm new/Mojolicious-6.28/lib/Mojo/Server/PSGI.pm --- old/Mojolicious-6.26/lib/Mojo/Server/PSGI.pm 2015-08-29 16:31:58.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojo/Server/PSGI.pm 2015-11-02 13:09:36.000000000 +0100 @@ -76,8 +76,7 @@ use Mojo::Server::PSGI; my $psgi = Mojo::Server::PSGI->new; - $psgi->unsubscribe('request'); - $psgi->on(request => sub { + $psgi->unsubscribe('request')->on(request => sub { my ($psgi, $tx) = @_; # Request diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Server/Prefork.pm new/Mojolicious-6.28/lib/Mojo/Server/Prefork.pm --- old/Mojolicious-6.26/lib/Mojo/Server/Prefork.pm 2015-10-27 16:53:22.000000000 +0100 +++ new/Mojolicious-6.28/lib/Mojo/Server/Prefork.pm 2015-11-02 13:09:26.000000000 +0100 @@ -45,9 +45,10 @@ return if -e (my $file = $self->pid_file); # Create PID file - $self->app->log->info(qq{Creating process id file "$file"}); - die qq{Can't create process id file "$file": $!} + $self->app->log->error(qq{Can't create process id file "$file": $!}) + and die qq{Can't create process id file "$file": $!} unless open my $handle, '>', $file; + $self->app->log->info(qq{Creating process id file "$file"}); chmod 0644, $handle; print $handle $$; } @@ -210,8 +211,7 @@ use Mojo::Server::Prefork; my $prefork = Mojo::Server::Prefork->new(listen => ['http://*:8080']); - $prefork->unsubscribe('request'); - $prefork->on(request => sub { + $prefork->unsubscribe('request')->on(request => sub { my ($prefork, $tx) = @_; # Request diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Server.pm new/Mojolicious-6.28/lib/Mojo/Server.pm --- old/Mojolicious-6.26/lib/Mojo/Server.pm 2015-08-29 13:17:09.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojo/Server.pm 2015-11-02 13:08:49.000000000 +0100 @@ -14,7 +14,7 @@ sub build_app { my ($self, $app) = @_; local $ENV{MOJO_EXE}; - return $app->new unless my $e = load_class $app; + return $self->app($app->new)->app unless my $e = load_class $app; die ref $e ? $e : qq{Can't find application class "$app" in \@INC. (@INC)\n}; } @@ -115,8 +115,7 @@ Emitted when a request is ready and needs to be handled. - $server->unsubscribe('request'); - $server->on(request => sub { + $server->unsubscribe('request')->on(request => sub { my ($server, $tx) = @_; $tx->res->code(200); $tx->res->headers->content_type('text/plain'); @@ -152,7 +151,7 @@ my $app = $server->build_app('MyApp'); -Build application from class. +Build application from class and assign it to L</"app">. =head2 build_tx @@ -170,7 +169,7 @@ my $app = $server->load_app('/home/sri/myapp.pl'); -Load application from script. +Load application from script and assign it to L</"app">. say Mojo::Server->new->load_app('./myapp.pl')->home; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Template.pm new/Mojolicious-6.28/lib/Mojo/Template.pm --- old/Mojolicious-6.26/lib/Mojo/Template.pm 2015-10-28 01:07:25.000000000 +0100 +++ new/Mojolicious-6.28/lib/Mojo/Template.pm 2015-10-30 05:27:18.000000000 +0100 @@ -43,7 +43,7 @@ $blocks[-1] .= "\$_O .= \"" . $value . "\";" if $value ne ''; } - # Code or multiline expression + # Code or multi-line expression elsif ($op eq 'code' || $multi) { $blocks[-1] .= $value } # Capture end @@ -65,7 +65,7 @@ # Raw elsif (!$multi) { $blocks[-1] .= "\$_O .= scalar + $value" } - # Multiline + # Multi-line $multi = !$next || $next->[0] ne 'text'; # Append semicolon diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Transaction/WebSocket.pm new/Mojolicious-6.28/lib/Mojo/Transaction/WebSocket.pm --- old/Mojolicious-6.26/lib/Mojo/Transaction/WebSocket.pm 2015-10-06 11:40:40.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojo/Transaction/WebSocket.pm 2015-11-02 13:09:48.000000000 +0100 @@ -404,8 +404,7 @@ Emitted when a WebSocket frame has been received. - $ws->unsubscribe('frame'); - $ws->on(frame => sub { + $ws->unsubscribe('frame')->on(frame => sub { my ($ws, $frame) = @_; say "FIN: $frame->[0]"; say "RSV1: $frame->[1]"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojo/Util.pm new/Mojolicious-6.28/lib/Mojo/Util.pm --- old/Mojolicious-6.26/lib/Mojo/Util.pm 2015-10-26 17:14:42.000000000 +0100 +++ new/Mojolicious-6.28/lib/Mojo/Util.pm 2015-10-30 05:27:26.000000000 +0100 @@ -114,7 +114,7 @@ sub html_unescape { my $str = shift; - $str =~ s/&(?:\#((?:\d{1,7}|x[0-9a-fA-F]{1,6}));|(\w+;?))/_decode($1, $2)/ge; + $str =~ s/&(?:\#((?:\d{1,7}|x[0-9a-fA-F]{1,6}));|(\w+;))/_decode($1, $2)/ge; return $str; } @@ -365,13 +365,8 @@ # Code point return chr($point !~ /^x/ ? $point : hex $point) unless defined $name; - # Find entity name - my $rest = ''; - while ($name ne '') { - return "$ENTITIES{$name}$rest" if exists $ENTITIES{$name}; - $rest = chop($name) . $rest; - } - return "&$rest"; + # Named character reference + return exists $ENTITIES{$name} ? $ENTITIES{$name} : "&$name"; } sub _encoding { @@ -757,7 +752,7 @@ my $unindented = unindent $str; -Unindent multiline string. +Unindent multi-line string. # "foo\nbar\nbaz\n" unindent " foo\n bar\n baz\n"; @@ -819,33 +814,24 @@ __DATA__ Aacute; U+000C1 -Aacute U+000C1 aacute; U+000E1 -aacute U+000E1 Abreve; U+00102 abreve; U+00103 ac; U+0223E acd; U+0223F acE; U+0223E U+00333 Acirc; U+000C2 -Acirc U+000C2 acirc; U+000E2 -acirc U+000E2 acute; U+000B4 -acute U+000B4 Acy; U+00410 acy; U+00430 AElig; U+000C6 -AElig U+000C6 aelig; U+000E6 -aelig U+000E6 af; U+02061 Afr; U+1D504 afr; U+1D51E Agrave; U+000C0 -Agrave U+000C0 agrave; U+000E0 -agrave U+000E0 alefsym; U+02135 aleph; U+02135 Alpha; U+00391 @@ -854,9 +840,7 @@ amacr; U+00101 amalg; U+02A3F AMP; U+00026 -AMP U+00026 amp; U+00026 -amp U+00026 And; U+02A53 and; U+02227 andand; U+02A55 @@ -895,9 +879,7 @@ approx; U+02248 approxeq; U+0224A Aring; U+000C5 -Aring U+000C5 aring; U+000E5 -aring U+000E5 Ascr; U+1D49C ascr; U+1D4B6 Assign; U+02254 @@ -905,13 +887,9 @@ asymp; U+02248 asympeq; U+0224D Atilde; U+000C3 -Atilde U+000C3 atilde; U+000E3 -atilde U+000E3 Auml; U+000C4 -Auml U+000C4 auml; U+000E4 -auml U+000E4 awconint; U+02233 awint; U+02A11 backcong; U+0224C @@ -1026,7 +1004,6 @@ Breve; U+002D8 breve; U+002D8 brvbar; U+000A6 -brvbar U+000A6 Bscr; U+0212C bscr; U+1D4B7 bsemi; U+0204F @@ -1060,9 +1037,7 @@ Ccaron; U+0010C ccaron; U+0010D Ccedil; U+000C7 -Ccedil U+000C7 ccedil; U+000E7 -ccedil U+000E7 Ccirc; U+00108 ccirc; U+00109 Cconint; U+02230 @@ -1071,11 +1046,9 @@ Cdot; U+0010A cdot; U+0010B cedil; U+000B8 -cedil U+000B8 Cedilla; U+000B8 cemptyv; U+029B2 cent; U+000A2 -cent U+000A2 CenterDot; U+000B7 centerdot; U+000B7 Cfr; U+0212D @@ -1132,9 +1105,7 @@ coprod; U+02210 Coproduct; U+02210 COPY; U+000A9 -COPY U+000A9 copy; U+000A9 -copy U+000A9 copysr; U+02117 CounterClockwiseContourIntegral; U+02233 crarr; U+021B5 @@ -1169,7 +1140,6 @@ curlyvee; U+022CE curlywedge; U+022CF curren; U+000A4 -curren U+000A4 curvearrowleft; U+021B6 curvearrowright; U+021B7 cuvee; U+022CE @@ -1199,7 +1169,6 @@ DDotrahd; U+02911 ddotseq; U+02A77 deg; U+000B0 -deg U+000B0 Del; U+02207 Delta; U+00394 delta; U+003B4 @@ -1226,7 +1195,6 @@ disin; U+022F2 div; U+000F7 divide; U+000F7 -divide U+000F7 divideontimes; U+022C7 divonx; U+022C7 DJcy; U+00402 @@ -1298,17 +1266,13 @@ dzcy; U+0045F dzigrarr; U+027FF Eacute; U+000C9 -Eacute U+000C9 eacute; U+000E9 -eacute U+000E9 easter; U+02A6E Ecaron; U+0011A ecaron; U+0011B ecir; U+02256 Ecirc; U+000CA -Ecirc U+000CA ecirc; U+000EA -ecirc U+000EA ecolon; U+02255 Ecy; U+0042D ecy; U+0044D @@ -1322,9 +1286,7 @@ efr; U+1D522 eg; U+02A9A Egrave; U+000C8 -Egrave U+000C8 egrave; U+000E8 -egrave U+000E8 egs; U+02A96 egsdot; U+02A98 el; U+02A99 @@ -1380,13 +1342,9 @@ Eta; U+00397 eta; U+003B7 ETH; U+000D0 -ETH U+000D0 eth; U+000F0 -eth U+000F0 Euml; U+000CB -Euml U+000CB euml; U+000EB -euml U+000EB euro; U+020AC excl; U+00021 exist; U+02203 @@ -1420,17 +1378,14 @@ Fouriertrf; U+02131 fpartint; U+02A0D frac12; U+000BD -frac12 U+000BD frac13; U+02153 frac14; U+000BC -frac14 U+000BC frac15; U+02155 frac16; U+02159 frac18; U+0215B frac23; U+02154 frac25; U+02156 frac34; U+000BE -frac34 U+000BE frac35; U+02157 frac38; U+0215C frac45; U+02158 @@ -1505,10 +1460,8 @@ gsime; U+02A8E gsiml; U+02A90 GT; U+0003E -GT U+0003E Gt; U+0226B gt; U+0003E -gt U+0003E gtcc; U+02AA7 gtcir; U+02A7A gtdot; U+022D7 @@ -1564,28 +1517,21 @@ hybull; U+02043 hyphen; U+02010 Iacute; U+000CD -Iacute U+000CD iacute; U+000ED -iacute U+000ED ic; U+02063 Icirc; U+000CE -Icirc U+000CE icirc; U+000EE -icirc U+000EE Icy; U+00418 icy; U+00438 Idot; U+00130 IEcy; U+00415 iecy; U+00435 iexcl; U+000A1 -iexcl U+000A1 iff; U+021D4 Ifr; U+02111 ifr; U+1D526 Igrave; U+000CC -Igrave U+000CC igrave; U+000EC -igrave U+000EC ii; U+02148 iiiint; U+02A0C iiint; U+0222D @@ -1630,7 +1576,6 @@ iota; U+003B9 iprod; U+02A3C iquest; U+000BF -iquest U+000BF Iscr; U+02110 iscr; U+1D4BE isin; U+02208 @@ -1645,9 +1590,7 @@ Iukcy; U+00406 iukcy; U+00456 Iuml; U+000CF -Iuml U+000CF iuml; U+000EF -iuml U+000EF Jcirc; U+00134 jcirc; U+00135 Jcy; U+00419 @@ -1695,7 +1638,6 @@ lap; U+02A85 Laplacetrf; U+02112 laquo; U+000AB -laquo U+000AB Larr; U+0219E lArr; U+021D0 larr; U+02190 @@ -1876,10 +1818,8 @@ Lstrok; U+00141 lstrok; U+00142 LT; U+0003C -LT U+0003C Lt; U+0226A lt; U+0003C -lt U+0003C ltcc; U+02AA6 ltcir; U+02A79 ltdot; U+022D6 @@ -1896,7 +1836,6 @@ lvertneqq; U+02268 U+0FE00 lvnE; U+02268 U+0FE00 macr; U+000AF -macr U+000AF male; U+02642 malt; U+02720 maltese; U+02720 @@ -1919,12 +1858,10 @@ mfr; U+1D52A mho; U+02127 micro; U+000B5 -micro U+000B5 mid; U+02223 midast; U+0002A midcir; U+02AF0 middot; U+000B7 -middot U+000B7 minus; U+02212 minusb; U+0229F minusd; U+02238 @@ -1957,7 +1894,6 @@ natural; U+0266E naturals; U+02115 nbsp; U+000A0 -nbsp U+000A0 nbump; U+0224E U+00338 nbumpe; U+0224F U+00338 ncap; U+02A43 @@ -2040,7 +1976,6 @@ nopf; U+1D55F Not; U+02AEC not; U+000AC -not U+000AC NotCongruent; U+02262 NotCupCap; U+0226D NotDoubleVerticalBar; U+02226 @@ -2150,9 +2085,7 @@ nsupseteqq; U+02AC6 U+00338 ntgl; U+02279 Ntilde; U+000D1 -Ntilde U+000D1 ntilde; U+000F1 -ntilde U+000F1 ntlg; U+02278 ntriangleleft; U+022EA ntrianglelefteq; U+022EC @@ -2185,15 +2118,11 @@ nwarrow; U+02196 nwnear; U+02927 Oacute; U+000D3 -Oacute U+000D3 oacute; U+000F3 -oacute U+000F3 oast; U+0229B ocir; U+0229A Ocirc; U+000D4 -Ocirc U+000D4 ocirc; U+000F4 -ocirc U+000F4 Ocy; U+0041E ocy; U+0043E odash; U+0229D @@ -2209,9 +2138,7 @@ ofr; U+1D52C ogon; U+002DB Ograve; U+000D2 -Ograve U+000D2 ograve; U+000F2 -ograve U+000F2 ogt; U+029C1 ohbar; U+029B5 ohm; U+003A9 @@ -2243,9 +2170,7 @@ order; U+02134 orderof; U+02134 ordf; U+000AA -ordf U+000AA ordm; U+000BA -ordm U+000BA origof; U+022B6 oror; U+02A56 orslope; U+02A57 @@ -2254,21 +2179,15 @@ Oscr; U+1D4AA oscr; U+02134 Oslash; U+000D8 -Oslash U+000D8 oslash; U+000F8 -oslash U+000F8 osol; U+02298 Otilde; U+000D5 -Otilde U+000D5 otilde; U+000F5 -otilde U+000F5 Otimes; U+02A37 otimes; U+02297 otimesas; U+02A36 Ouml; U+000D6 -Ouml U+000D6 ouml; U+000F6 -ouml U+000F6 ovbar; U+0233D OverBar; U+0203E OverBrace; U+023DE @@ -2276,7 +2195,6 @@ OverParenthesis; U+023DC par; U+02225 para; U+000B6 -para U+000B6 parallel; U+02225 parsim; U+02AF3 parsl; U+02AFD @@ -2312,7 +2230,6 @@ pluse; U+02A72 PlusMinus; U+000B1 plusmn; U+000B1 -plusmn U+000B1 plussim; U+02A26 plustwo; U+02A27 pm; U+000B1 @@ -2321,7 +2238,6 @@ Popf; U+02119 popf; U+1D561 pound; U+000A3 -pound U+000A3 Pr; U+02ABB pr; U+0227A prap; U+02AB7 @@ -2375,9 +2291,7 @@ quest; U+0003F questeq; U+0225F QUOT; U+00022 -QUOT U+00022 quot; U+00022 -quot U+00022 rAarr; U+021DB race; U+0223D U+00331 Racute; U+00154 @@ -2390,7 +2304,6 @@ range; U+029A5 rangle; U+027E9 raquo; U+000BB -raquo U+000BB Rarr; U+021A0 rArr; U+021D2 rarr; U+02192 @@ -2439,9 +2352,7 @@ reals; U+0211D rect; U+025AD REG; U+000AE -REG U+000AE reg; U+000AE -reg U+000AE ReverseElement; U+0220B ReverseEquilibrium; U+021CB ReverseUpEquilibrium; U+0296F @@ -2557,7 +2468,6 @@ searr; U+02198 searrow; U+02198 sect; U+000A7 -sect U+000A7 semi; U+0003B seswar; U+02929 setminus; U+02216 @@ -2578,7 +2488,6 @@ ShortRightArrow; U+02192 ShortUpArrow; U+02191 shy; U+000AD -shy U+000AD Sigma; U+003A3 sigma; U+003C3 sigmaf; U+003C2 @@ -2690,11 +2599,8 @@ Sup; U+022D1 sup; U+02283 sup1; U+000B9 -sup1 U+000B9 sup2; U+000B2 -sup2 U+000B2 sup3; U+000B3 -sup3 U+000B3 supdot; U+02ABE supdsub; U+02AD8 supE; U+02AC6 @@ -2724,7 +2630,6 @@ swarrow; U+02199 swnwar; U+0292A szlig; U+000DF -szlig U+000DF Tab; U+00009 target; U+02316 Tau; U+003A4 @@ -2755,16 +2660,13 @@ thkap; U+02248 thksim; U+0223C THORN; U+000DE -THORN U+000DE thorn; U+000FE -thorn U+000FE Tilde; U+0223C tilde; U+002DC TildeEqual; U+02243 TildeFullEqual; U+02245 TildeTilde; U+02248 times; U+000D7 -times U+000D7 timesb; U+022A0 timesbar; U+02A31 timesd; U+02A30 @@ -2807,9 +2709,7 @@ twoheadleftarrow; U+0219E twoheadrightarrow; U+021A0 Uacute; U+000DA -Uacute U+000DA uacute; U+000FA -uacute U+000FA Uarr; U+0219F uArr; U+021D1 uarr; U+02191 @@ -2819,9 +2719,7 @@ Ubreve; U+0016C ubreve; U+0016D Ucirc; U+000DB -Ucirc U+000DB ucirc; U+000FB -ucirc U+000FB Ucy; U+00423 ucy; U+00443 udarr; U+021C5 @@ -2832,9 +2730,7 @@ Ufr; U+1D518 ufr; U+1D532 Ugrave; U+000D9 -Ugrave U+000D9 ugrave; U+000F9 -ugrave U+000F9 uHar; U+02963 uharl; U+021BF uharr; U+021BE @@ -2846,7 +2742,6 @@ Umacr; U+0016A umacr; U+0016B uml; U+000A8 -uml U+000A8 UnderBar; U+0005F UnderBrace; U+023DF UnderBracket; U+023B5 @@ -2894,9 +2789,7 @@ utrif; U+025B4 uuarr; U+021C8 Uuml; U+000DC -Uuml U+000DC uuml; U+000FC -uuml U+000FC uwangle; U+029A7 vangrt; U+0299C varepsilon; U+003F5 @@ -3002,9 +2895,7 @@ xvee; U+022C1 xwedge; U+022C0 Yacute; U+000DD -Yacute U+000DD yacute; U+000FD -yacute U+000FD YAcy; U+0042F yacy; U+0044F Ycirc; U+00176 @@ -3012,7 +2903,6 @@ Ycy; U+0042B ycy; U+0044B yen; U+000A5 -yen U+000A5 Yfr; U+1D51C yfr; U+1D536 YIcy; U+00407 @@ -3025,7 +2915,6 @@ yucy; U+0044E Yuml; U+00178 yuml; U+000FF -yuml U+000FF Zacute; U+00179 zacute; U+0017A Zcaron; U+0017D diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojolicious/Controller.pm new/Mojolicious-6.28/lib/Mojolicious/Controller.pm --- old/Mojolicious-6.26/lib/Mojolicious/Controller.pm 2015-10-20 18:57:25.000000000 +0200 +++ new/Mojolicious-6.28/lib/Mojolicious/Controller.pm 2015-10-29 17:27:53.000000000 +0100 @@ -995,10 +995,10 @@ $c = $c->write_chunk(sub {...}); $c = $c->write_chunk($bytes => sub {...}); -Write dynamic content non-blocking with C<chunked> transfer encoding, the -optional drain callback will be invoked once all data has been written. Calling -this method without a chunk of data will finalize the response headers and -allow for dynamic content to be written later. +Write dynamic content non-blocking with chunked transfer encoding, the optional +drain callback will be invoked once all data has been written. Calling this +method without a chunk of data will finalize the response headers and allow for +dynamic content to be written later. # Make sure previous chunk has been written before continuing $c->write_chunk('H' => sub { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojolicious/Guides/Cookbook.pod new/Mojolicious-6.28/lib/Mojolicious/Guides/Cookbook.pod --- old/Mojolicious-6.26/lib/Mojolicious/Guides/Cookbook.pod 2015-10-28 01:05:32.000000000 +0100 +++ new/Mojolicious-6.28/lib/Mojolicious/Guides/Cookbook.pod 2015-11-01 04:36:26.000000000 +0100 @@ -345,6 +345,8 @@ use Mojolicious::Lite; + app->config(hypnotoad => {listen => ['http://*:80']}); + plugin Mount => {'test1.example.com' => '/home/sri/myapp1.pl'}; plugin Mount => {'test2.example.com' => '/home/sri/myapp2.pl'}; @@ -1035,8 +1037,8 @@ $tx = $ua->start($tx); The event L<Mojo::Content/"read"> will be emitted for every chunk of data that -is received, even C<chunked> encoding and gzip compression will be handled -transparently if necessary. +is received, even chunked transfer encoding and gzip content encoding will be +handled transparently if necessary. =head2 Streaming request diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojolicious/Guides/Rendering.pod new/Mojolicious-6.28/lib/Mojolicious/Guides/Rendering.pod --- old/Mojolicious-6.26/lib/Mojolicious/Guides/Rendering.pod 2015-10-28 01:05:55.000000000 +0100 +++ new/Mojolicious-6.28/lib/Mojolicious/Guides/Rendering.pod 2015-10-29 17:28:02.000000000 +0100 @@ -1258,7 +1258,7 @@ =head2 Chunked transfer encoding For very dynamic content you might not know the response content length in -advance, that's where the C<chunked> transfer encoding and +advance, that's where the chunked transfer encoding and L<Mojolicious::Controller/"write_chunk"> come in handy. A common use would be to send the C<head> section of an HTML document to the browser in advance and speed up preloading of referenced images and stylesheets. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/lib/Mojolicious.pm new/Mojolicious-6.28/lib/Mojolicious.pm --- old/Mojolicious-6.26/lib/Mojolicious.pm 2015-10-28 01:03:42.000000000 +0100 +++ new/Mojolicious-6.28/lib/Mojolicious.pm 2015-10-30 01:06:42.000000000 +0100 @@ -43,7 +43,7 @@ has validator => sub { Mojolicious::Validator->new }; our $CODENAME = 'Clinking Beer Mugs'; -our $VERSION = '6.26'; +our $VERSION = '6.28'; sub AUTOLOAD { my $self = shift; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/t/mojo/daemon.t new/Mojolicious-6.28/t/mojo/daemon.t --- old/Mojolicious-6.26/t/mojo/daemon.t 2015-08-29 01:31:12.000000000 +0200 +++ new/Mojolicious-6.28/t/mojo/daemon.t 2015-10-30 18:13:11.000000000 +0100 @@ -79,10 +79,13 @@ is_deeply $app->config, {foo => 'bar', baz => 'yada', test => 23}, 'right value'; -# Script name -my $path = "$FindBin::Bin/lib/../lib/myapp.pl"; -is(Mojo::Server::Daemon->new->load_app($path)->config('script'), - abs_path($path), 'right script name'); +# Loading +my $daemon = Mojo::Server::Daemon->new; +my $path = "$FindBin::Bin/lib/../lib/myapp.pl"; +is ref $daemon->load_app($path), 'Mojolicious::Lite', 'right reference'; +is $daemon->app->config('script'), abs_path($path), 'right script name'; +is ref $daemon->build_app('TestApp'), 'TestApp', 'right reference'; +is ref $daemon->app, 'TestApp', 'right reference'; # Load broken app my $bin = $FindBin::Bin; @@ -229,7 +232,7 @@ ok $remote_port > 0, 'has remote port'; # Pipelined -my $daemon +$daemon = Mojo::Server::Daemon->new({listen => ['http://127.0.0.1'], silent => 1}); $daemon->start; my $port = Mojo::IOLoop->acceptor($daemon->acceptors->[0])->port; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/t/mojo/dom.t new/Mojolicious-6.28/t/mojo/dom.t --- old/Mojolicious-6.26/t/mojo/dom.t 2015-10-23 19:30:35.000000000 +0200 +++ new/Mojolicious-6.28/t/mojo/dom.t 2015-10-30 15:41:09.000000000 +0100 @@ -773,6 +773,13 @@ is $dom->at('[test2=""]')->tag, 'div', 'right tag'; is $dom->at('[test3=""]'), undef, 'no result'; +# Multi-line attribute +$dom = Mojo::DOM->new(qq{<div class="line1\nline2" />}); +is $dom->at('div')->attr->{class}, "line1\nline2", 'multi-line attribute value'; +is $dom->at('.line1')->tag, 'div', 'right tag'; +is $dom->at('.line2')->tag, 'div', 'right tag'; +is $dom->at('.line3'), undef, 'no result'; + # Whitespaces before closing bracket $dom = Mojo::DOM->new('<div >content</div>'); ok $dom->at('div'), 'tag found'; @@ -2280,10 +2287,10 @@ 'right attribute'; is $dom->find('head > [http-equiv$="-type"]')->[1], undef, 'no result'; -# Find "0" attribute value and unescape relaxed entity +# Find "0" attribute value $dom = Mojo::DOM->new(<<EOF); <a accesskey="0">Zero</a> -<a accesskey="1">O&gTn>e</a> +<a accesskey="1">O&gTn>e</a> EOF is $dom->find('a[accesskey]')->[0]->text, 'Zero', 'right text'; is $dom->find('a[accesskey]')->[1]->text, 'O&gTn>e', 'right text'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/t/mojo/headers.t new/Mojolicious-6.28/t/mojo/headers.t --- old/Mojolicious-6.26/t/mojo/headers.t 2015-08-29 01:31:15.000000000 +0200 +++ new/Mojolicious-6.28/t/mojo/headers.t 2015-10-30 05:27:35.000000000 +0100 @@ -141,7 +141,7 @@ is $headers->expires, 'Thu, 01 Dec 1994 16:00:00 GMT', 'right value'; is $headers->header('o'), 'x', 'right value'; -# Parse multiline headers +# Parse multi-line headers $headers = Mojo::Headers->new; $headers->parse(<<'EOF'); Foo: first diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/t/mojo/prefork.t new/Mojolicious-6.28/t/mojo/prefork.t --- old/Mojolicious-6.26/t/mojo/prefork.t 2015-08-29 01:31:21.000000000 +0200 +++ new/Mojolicious-6.28/t/mojo/prefork.t 2015-10-29 18:48:37.000000000 +0100 @@ -7,6 +7,8 @@ plan skip_all => 'set TEST_PREFORK to enable this test (developer only!)' unless $ENV{TEST_PREFORK}; +use File::Basename 'dirname'; +use File::Spec::Functions 'catfile'; use Mojo::IOLoop::Server; use Mojo::Server::Prefork; use Mojo::UserAgent; @@ -26,6 +28,18 @@ undef $prefork; ok !-e $file, 'file has been cleaned up'; +# Bad PID file +my $bad = catfile dirname(__FILE__), 'does_not_exist', 'test.pid'; +$prefork = Mojo::Server::Prefork->new(pid_file => $bad); +$prefork->app->log->level('fatal'); +my $log = ''; +my $cb = $prefork->app->log->on(message => sub { $log .= pop }); +eval { $prefork->ensure_pid_file }; +like $@, qr/Can't create process id file/, 'right error'; +unlike $log, qr/Creating process id file/, 'right message'; +like $log, qr/Can't create process id file/, 'right message'; +$prefork->app->log->unsubscribe(message => $cb); + # Multiple workers and graceful shutdown my $port = Mojo::IOLoop::Server::->generate_port; $prefork = Mojo::Server::Prefork->new( @@ -54,8 +68,8 @@ ); $prefork->on(reap => sub { push @reap, pop }); $prefork->on(finish => sub { $graceful = pop }); -my $log = ''; -my $cb = $prefork->app->log->on(message => sub { $log .= pop }); +$log = ''; +$cb = $prefork->app->log->on(message => sub { $log .= pop }); is $prefork->healthy, 0, 'no healthy workers'; $prefork->run; ok $healthy >= 1, 'healthy workers'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-6.26/t/mojo/util.t new/Mojolicious-6.28/t/mojo/util.t --- old/Mojolicious-6.26/t/mojo/util.t 2015-10-22 01:54:41.000000000 +0200 +++ new/Mojolicious-6.28/t/mojo/util.t 2015-10-29 17:04:45.000000000 +0100 @@ -191,7 +191,7 @@ # html_unescape (special entities) is html_unescape('foo ☃ ∳ bar ¹baz'), - "foo ☃ \x{2233} bar \x{00b9}baz", 'right HTML unescaped result'; + "foo ☃ \x{2233} bar ¹baz", 'right HTML unescaped result'; # html_unescape (multi-character entity) is html_unescape(decode 'UTF-8', '∾̳'), "\x{223e}\x{0333}", @@ -204,10 +204,6 @@ # html_unescape (nothing to unescape) is html_unescape('foobar'), 'foobar', 'right HTML unescaped result'; -# html_unescape (relaxed) -is html_unescape('&0&Ltf&&0oo ba;<r'), "&0&Ltf&&0oo\x{00a0}ba;<r", - 'right HTML unescaped result'; - # html_unescape (UTF-8) is html_unescape(decode 'UTF-8', 'foo<baz>&"Œ&Foo;'), "foo<baz>&\"\x{152}&Foo;", 'right HTML unescaped result';