Hello community,

here is the log from the commit of package perl-Mojolicious for 
openSUSE:Factory checked in at 2015-03-16 07:01:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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-03-03 11:15:14.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.perl-Mojolicious.new/perl-Mojolicious.changes   
2015-03-16 07:01:13.000000000 +0100
@@ -1,0 +2,13 @@
+Thu Mar 12 13:55:35 UTC 2015 - co...@suse.com
+
+- updated to 6.02
+  - Added daemon attribute to Mojo::Server::Morbo.
+  - Improved portability of Mojo::Server::Morbo.
+  - Fixed empty template handling in Mojo::Template.
+
+ 6.01  2015-03-03
+  - Added content_with helper to Mojolicious::Plugin::DefaultHelpers.
+  - Relaxed request-line handling in Mojo::Message::Request.
+  - Fixed code name in version command and built-in templates.
+
+-------------------------------------------------------------------

Old:
----
  Mojolicious-6.0.tar.gz

New:
----
  Mojolicious-6.02.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Mojolicious.spec ++++++
--- /var/tmp/diff_new_pack.IbbnLg/_old  2015-03-16 07:01:14.000000000 +0100
+++ /var/tmp/diff_new_pack.IbbnLg/_new  2015-03-16 07:01:14.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           perl-Mojolicious
-Version:        6.0
+Version:        6.02
 Release:        0
 %define cpan_name Mojolicious
 Summary:        Real-time web framework

++++++ Mojolicious-6.0.tar.gz -> Mojolicious-6.02.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/Changes new/Mojolicious-6.02/Changes
--- old/Mojolicious-6.0/Changes 2015-02-26 06:57:34.000000000 +0100
+++ new/Mojolicious-6.02/Changes        2015-03-10 01:26:27.000000000 +0100
@@ -1,4 +1,14 @@
 
+6.02  2015-03-09
+  - Added daemon attribute to Mojo::Server::Morbo.
+  - Improved portability of Mojo::Server::Morbo.
+  - Fixed empty template handling in Mojo::Template.
+
+6.01  2015-03-03
+  - Added content_with helper to Mojolicious::Plugin::DefaultHelpers.
+  - Relaxed request-line handling in Mojo::Message::Request.
+  - Fixed code name in version command and built-in templates.
+
 6.0  2015-02-26
   - Code name "Clinking Beer Mugs", this is a major release.
   - Removed name listing support from param method in Mojolicious::Controller.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/META.json 
new/Mojolicious-6.02/META.json
--- old/Mojolicious-6.0/META.json       2015-02-26 23:16:00.000000000 +0100
+++ new/Mojolicious-6.02/META.json      2015-03-10 03:52:12.000000000 +0100
@@ -4,7 +4,7 @@
       "Sebastian Riedel <s...@cpan.org>"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter 
version 2.143240",
+   "generated_by" : "ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter 
version 2.150001",
    "license" : [
       "artistic_2"
    ],
@@ -54,5 +54,5 @@
       },
       "x_IRC" : "irc://irc.perl.org/#mojo"
    },
-   "version" : "6.0"
+   "version" : "6.02"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/META.yml 
new/Mojolicious-6.02/META.yml
--- old/Mojolicious-6.0/META.yml        2015-02-26 23:16:00.000000000 +0100
+++ new/Mojolicious-6.02/META.yml       2015-03-10 03:52:12.000000000 +0100
@@ -7,7 +7,7 @@
 configure_requires:
   ExtUtils::MakeMaker: '0'
 dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter version 
2.143240'
+generated_by: 'ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter version 
2.150001'
 license: artistic_2
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -29,4 +29,4 @@
   homepage: http://mojolicio.us
   license: http://www.opensource.org/licenses/artistic-license-2.0
   repository: https://github.com/kraih/mojo.git
-version: '6.0'
+version: '6.02'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojo/Message/Request.pm 
new/Mojolicious-6.02/lib/Mojo/Message/Request.pm
--- old/Mojolicious-6.0/lib/Mojo/Message/Request.pm     2015-02-24 
23:56:28.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojo/Message/Request.pm    2015-03-02 
22:28:04.000000000 +0100
@@ -10,12 +10,6 @@
 has url => sub { Mojo::URL->new };
 has 'reverse_proxy';
 
-my $START_LINE_RE = qr/
-  ^([a-zA-Z]+)                                              # Method
-  \s+([0-9a-zA-Z!#\$\%&'()*+,\-.\/:;=?\@[\\\]^_`\{|\}~]+)   # URL
-  \s+HTTP\/(\d\.\d)$                                        # Version
-/x;
-
 sub clone {
   my $self = shift;
 
@@ -61,7 +55,7 @@
 
   # We have a (hopefully) full request-line
   return !$self->error({message => 'Bad request start-line'})
-    unless $1 =~ $START_LINE_RE;
+    unless $1 =~ /^(\S+)\s+(\S+)\s+HTTP\/(\d\.\d)$/;
   my $url = $self->method($1)->version($3)->url;
   return !!($1 eq 'CONNECT' ? $url->authority($2) : $url->parse($2));
 }
@@ -323,9 +317,9 @@
 HTTP request URL, defaults to a L<Mojo::URL> object.
 
   # Get request information
-  say $req->url->to_abs->userinfo;
-  say $req->url->to_abs->host;
-  say $req->url->to_abs->path;
+  my $info = $req->url->to_abs->userinfo;
+  my $host = $req->url->to_abs->host;
+  my $path = $req->url->to_abs->path;
 
 =head2 reverse_proxy
 
@@ -353,6 +347,9 @@
 
 Access request cookies, usually L<Mojo::Cookie::Request> objects.
 
+  # Names of all cookies
+  say $_->name for @{$req->cookies};
+
 =head2 every_param
 
   my $values = $req->every_param('foo');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojo/Message/Response.pm 
new/Mojolicious-6.02/lib/Mojo/Message/Response.pm
--- old/Mojolicious-6.0/lib/Mojo/Message/Response.pm    2015-02-24 
23:56:35.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojo/Message/Response.pm   2015-02-27 
06:31:47.000000000 +0100
@@ -211,6 +211,9 @@
 
 Access response cookies, usually L<Mojo::Cookie::Response> objects.
 
+  # Names of all cookies
+  say $_->name for @{$res->cookies};
+
 =head2 default_message
 
   my $msg = $res->default_message;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojo/Message.pm 
new/Mojolicious-6.02/lib/Mojo/Message.pm
--- old/Mojolicious-6.0/lib/Mojo/Message.pm     2015-02-26 02:38:19.000000000 
+0100
+++ new/Mojolicious-6.02/lib/Mojo/Message.pm    2015-02-27 06:33:12.000000000 
+0100
@@ -651,6 +651,9 @@
 
 All C<multipart/form-data> file uploads, usually L<Mojo::Upload> objects.
 
+  # Names of all uploads
+  say $_->name for @{$msg->uploads};
+
 =head1 SEE ALSO
 
 L<Mojolicious>, L<Mojolicious::Guides>, L<http://mojolicio.us>.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojo/Parameters.pm 
new/Mojolicious-6.02/lib/Mojo/Parameters.pm
--- old/Mojolicious-6.0/lib/Mojo/Parameters.pm  2015-02-25 00:11:13.000000000 
+0100
+++ new/Mojolicious-6.02/lib/Mojo/Parameters.pm 2015-02-27 04:25:20.000000000 
+0100
@@ -308,7 +308,6 @@
 
 =head2 param
 
-  my @names = $params->param;
   my $value = $params->param('foo');
   $params   = $params->param(foo => 'ba&r');
   $params   = $params->param(foo => qw(ba&r baz));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojo/Server/Morbo.pm 
new/Mojolicious-6.02/lib/Mojo/Server/Morbo.pm
--- old/Mojolicious-6.0/lib/Mojo/Server/Morbo.pm        2015-02-24 
23:58:13.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojo/Server/Morbo.pm       2015-03-10 
01:28:13.000000000 +0100
@@ -8,7 +8,8 @@
 use Mojo::Server::Daemon;
 use POSIX 'WNOHANG';
 
-has watch => sub { [qw(lib templates)] };
+has daemon => sub { Mojo::Server::Daemon->new };
+has watch  => sub { [qw(lib templates)] };
 
 sub check {
   my $self = shift;
@@ -31,8 +32,7 @@
   my ($self, $app) = @_;
 
   # Clean manager environment
-  local $SIG{CHLD} = sub { $self->_reap if $self->{worker} };
-  local $SIG{INT} = local $SIG{TERM} = local $SIG{QUIT} = sub {
+  local $SIG{INT} = local $SIG{TERM} = sub {
     $self->{finished} = 1;
     kill 'TERM', $self->{worker} if $self->{worker};
   };
@@ -40,9 +40,9 @@
   $self->{modified} = 1;
 
   # Prepare and cache listen sockets for smooth restarting
-  $self->{daemon} = Mojo::Server::Daemon->new->start->stop;
+  $self->daemon->start->stop;
 
-  $self->_manage while !$self->{finished} || $self->{worker};
+  $self->_manage until $self->{finished} && !$self->{worker};
   exit 0;
 }
 
@@ -67,16 +67,14 @@
     $self->{modified} = 1;
   }
 
-  # Windows workaround
-  delete $self->{worker} if $self->{worker} && !kill 0, $self->{worker};
+  if (my $pid = $self->{worker}) {
+    delete $self->{worker} if waitpid($pid, WNOHANG) == $pid;
+  }
 
-  $self->_reap;
   $self->_spawn if !$self->{worker} && delete $self->{modified};
   sleep 1;
 }
 
-sub _reap { delete $_[0]{worker} while (waitpid -1, WNOHANG) > 0 }
-
 sub _spawn {
   my $self = shift;
 
@@ -86,14 +84,10 @@
   return if $pid;
 
   # Worker
-  $SIG{CHLD} = 'DEFAULT';
-  $SIG{INT} = $SIG{TERM} = $SIG{QUIT} = sub { $self->{finished} = 1 };
-  my $daemon = $self->{daemon};
+  my $daemon = $self->daemon;
   $daemon->load_app($self->watch->[0]);
-  my $loop = $daemon->start->ioloop;
-  $loop->recurring(
-    1 => sub { shift->stop if !kill(0, $manager) || $self->{finished} });
-  $loop->start;
+  $daemon->ioloop->recurring(1 => sub { shift->stop unless kill 0, $manager });
+  $daemon->run;
   exit 0;
 }
 
@@ -139,7 +133,7 @@
 The L<Mojo::Server::Morbo> process can be controlled at runtime with the
 following signals.
 
-=head2 INT, QUIT, TERM
+=head2 INT, TERM
 
 Shut down server immediately.
 
@@ -147,6 +141,13 @@
 
 L<Mojo::Server::Morbo> implements the following attributes.
 
+=head2 daemon
+
+  my $daemon = $morbo->daemon;
+  $morbo     = $morbo->daemon(Mojo::Server::Daemon->new);
+
+L<Mojo::Server::Daemon> object this server manages.
+
 =head2 watch
 
   my $watch = $morbo->watch;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojo/Template.pm 
new/Mojolicious-6.02/lib/Mojo/Template.pm
--- old/Mojolicious-6.0/lib/Mojo/Template.pm    2015-02-25 19:41:52.000000000 
+0100
+++ new/Mojolicious-6.02/lib/Mojo/Template.pm   2015-03-09 19:48:07.000000000 
+0100
@@ -87,7 +87,7 @@
   my $self = shift;
 
   # Compile with line directive
-  return undef unless my $code = $self->code;
+  return undef unless defined(my $code = $self->code);
   my $compiled = eval $self->_wrap($code);
   $self->compiled($compiled) and return undef unless $@;
 
@@ -378,7 +378,9 @@
   lines
 
 You can capture whole template blocks for reuse later with the C<begin> and
-C<end> keywords.
+C<end> keywords. Just be aware that both keywords are part of the surrounding
+tag and not actual Perl code, so there can only be whitespace after C<begin>
+and before C<end>.
 
   <% my $block = begin %>
     <% my $name = shift; =%>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojo/Transaction/WebSocket.pm 
new/Mojolicious-6.02/lib/Mojo/Transaction/WebSocket.pm
--- old/Mojolicious-6.0/lib/Mojo/Transaction/WebSocket.pm       2015-02-25 
00:00:06.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojo/Transaction/WebSocket.pm      2015-02-28 
19:52:17.000000000 +0100
@@ -564,9 +564,9 @@
 
 =head2 connection
 
-  my $connection = $ws->connection;
+  my $id = $ws->connection;
 
-Connection identifier or socket.
+Connection identifier.
 
 =head2 finish
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojo/UserAgent/Transactor.pm 
new/Mojolicious-6.02/lib/Mojo/UserAgent/Transactor.pm
--- old/Mojolicious-6.0/lib/Mojo/UserAgent/Transactor.pm        2015-02-26 
06:55:45.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojo/UserAgent/Transactor.pm       2015-03-09 
18:12:10.000000000 +0100
@@ -265,12 +265,9 @@
 
   use Mojo::UserAgent::Transactor;
 
-  # Simple GET request
+  # GET request with Accept header
   my $t = Mojo::UserAgent::Transactor->new;
-  say $t->tx(GET => 'http://example.com')->req->to_string;
-
-  # PATCH request with "Do Not Track" header and content
-  say $t->tx(PATCH => 'example.com' => {DNT => 1} => 'Hi!')->req->to_string;
+  say $t->tx(GET => 'http://example.com' => {Accept => '*/*'})->req->to_string;
 
   # POST request with form-data
   say $t->tx(POST => 'example.com' => form => {a => 'b'})->req->to_string;
@@ -367,9 +364,9 @@
   my $tx = $t->tx(PUT  => 'http://example.com' => json => {a => 'b'});
   my $tx = $t->tx(POST => 'http://example.com' => {Accept => '*/*'} => 'Hi!');
   my $tx = $t->tx(
-    PUT  => 'http://example.com' => {Accept => '*/*'} => form => {a => 'b'});
+    PUT => 'http://example.com' => {Accept => '*/*'} => form => {a => 'b'});
   my $tx = $t->tx(
-    PUT  => 'http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
+    PUT => 'http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
 
 Versatile general purpose L<Mojo::Transaction::HTTP> transaction builder for
 requests, with support for L</"GENERATORS">.
@@ -440,7 +437,7 @@
     POST => 'http://example.com' => form => {mytext => {file => $asset}});
 
 A C<filename> value will be generated automatically, but can also be set
-manually if necessary. All remainging values in the hash reference get merged
+manually if necessary. All remaining values in the hash reference get merged
 into the C<multipart/form-data> content as headers.
 
   # POST request with form values and customized upload (filename and header)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojo/UserAgent.pm 
new/Mojolicious-6.02/lib/Mojo/UserAgent.pm
--- old/Mojolicious-6.0/lib/Mojo/UserAgent.pm   2015-02-26 07:04:17.000000000 
+0100
+++ new/Mojolicious-6.02/lib/Mojo/UserAgent.pm  2015-03-10 02:02:34.000000000 
+0100
@@ -259,13 +259,13 @@
   if (my $new = $self->transactor->upgrade($old)) {
     weaken $self;
     $new->on(resume => sub { $self->_write($id) });
-    $c->{cb}->($self, $c->{tx} = $new);
+    $c->{cb}($self, $c->{tx} = $new);
     return $new->client_read($old->res->content->leftovers);
   }
 
   # Finish normal connection and handle redirects
   $self->_remove($id, $close);
-  $c->{cb}->($self, $old) unless $self->_redirect($c, $old);
+  $c->{cb}($self, $old) unless $self->_redirect($c, $old);
 }
 
 sub _loop { $_[1] ? Mojo::IOLoop->singleton : $_[0]->ioloop }
@@ -361,11 +361,11 @@
 
   use Mojo::UserAgent;
 
-  # Say hello to the Unicode snowman with "Do Not Track" header
+  # Say hello to the Unicode snowman and include an Accept header
   my $ua = Mojo::UserAgent->new;
-  say $ua->get('www.☃.net?hello=there' => {DNT => 1})->res->body;
+  say $ua->get('www.☃.net?hello=there' => {Accept => '*/*'})->res->body;
 
-  # Form POST with exception handling
+  # Form POST (application/x-www-form-urlencoded) with exception handling
   my $tx = $ua->post('https://metacpan.org/search' => form => {q => 'mojo'});
   if (my $res = $tx->success) { say $res->body }
   else {
@@ -374,34 +374,32 @@
     die "Connection error: $err->{message}";
   }
 
-  # Quick JSON API request with Basic authentication
-  say $ua->get('https://sri:s3c...@example.com/search.json?q=perl')
-    ->res->json('/results/0/title');
-
-  # Extract data from HTML and XML resources
+  # Extract data from HTML and XML resources with CSS selectors
   say $ua->get('www.perl.org')->res->dom->at('title')->text;
 
-  # Scrape the latest headlines from a news site with CSS selectors
+  # Scrape the latest headlines from a news site
   say $ua->get('blogs.perl.org')
     ->res->dom->find('h2 > a')->map('text')->join("\n");
 
+  # IPv6 PUT request with Content-Type header and content
+  my $tx = $ua->put('[::1]:3000' => {'Content-Type' => 'text/plain'} => 'Hi!');
+
+  # Quick JSON API request with Basic authentication
+  my $value = $ua->get('https://sri:s3c...@example.com/test.json')->res->json;
+
+  # JSON POST (application/json) with TLS certificate authentication
+  my $tx = $ua->cert('tls.crt')->key('tls.key')
+    ->post('https://example.com' => json => {top => 'secret'});
+
   # Search DuckDuckGo anonymously through Tor
   $ua->proxy->http('socks://127.0.0.1:9050');
   say $ua->get('api.3g2upl4pq6kufc4m.onion/?q=mojolicious&format=json')
     ->res->json('/Abstract');
 
-  # IPv6 PUT request with content
-  my $tx
-    = $ua->put('[::1]:3000' => {'Content-Type' => 'text/plain'} => 'Hello!');
-
-  # Follow redirects to grab the latest Mojolicious release :)
+  # Follow redirects to download Mojolicious from GitHub
   $ua->max_redirects(5)
     ->get('https://www.github.com/kraih/mojo/tarball/master')
-    ->res->content->asset->move_to('/Users/sri/mojo.tar.gz');
-
-  # TLS certificate authentication and JSON POST
-  my $tx = $ua->cert('tls.crt')->key('tls.key')
-    ->post('https://example.com' => json => {top => 'secret'});
+    ->res->content->asset->move_to('/home/sri/mojo.tar.gz');
 
   # Non-blocking concurrent requests
   Mojo::IOLoop->delay(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojo/Util.pm 
new/Mojolicious-6.02/lib/Mojo/Util.pm
--- old/Mojolicious-6.0/lib/Mojo/Util.pm        2015-02-25 00:17:08.000000000 
+0100
+++ new/Mojolicious-6.02/lib/Mojo/Util.pm       2015-03-04 15:38:13.000000000 
+0100
@@ -276,7 +276,7 @@
   my @spec;
   for my $row (@$rows) {
     for my $i (0 .. $#$row) {
-      $row->[$i] =~ s/[\r\n]//g;
+      ($row->[$i] //= '') =~ s/[\r\n]//g;
       my $len = length $row->[$i];
       $spec[$i] = $len if $len >= ($spec[$i] // 0);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojolicious/Controller.pm 
new/Mojolicious-6.02/lib/Mojolicious/Controller.pm
--- old/Mojolicious-6.0/lib/Mojolicious/Controller.pm   2015-02-25 
05:38:44.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojolicious/Controller.pm  2015-02-27 
18:24:14.000000000 +0100
@@ -590,7 +590,7 @@
 For more control you can also access request information directly.
 
   # Only GET parameters
-  my $foo = $c->req->url->query->param('foo');
+  my $foo = $c->req->query_params->param('foo');
 
   # Only POST parameters
   my $foo = $c->req->body_params->param('foo');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojolicious/Guides/Rendering.pod 
new/Mojolicious-6.02/lib/Mojolicious/Guides/Rendering.pod
--- old/Mojolicious-6.0/lib/Mojolicious/Guides/Rendering.pod    2015-02-25 
19:44:56.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojolicious/Guides/Rendering.pod   2015-03-06 
04:36:47.000000000 +0100
@@ -350,15 +350,12 @@
   # Controller
   my $serialized = $c->dumper([1, 2, 3]);
 
-The helper L<Mojolicious::Plugin::DefaultHelpers/"dumper"> for example will use
-L<Data::Dumper> to serialize whatever data structure you pass it, this can be
-very useful for debugging. We differentiate between default helpers which are
-more general purpose like C<dumper> and tag helpers, which are template
-specific and mostly used to generate HTML tags.
+We differentiate between default helpers, which are more general purpose like
+L<Mojolicious::Plugin::DefaultHelpers/"dumper">, and tag helpers like
+L<Mojolicious::Plugin::TagHelpers/"link_to">, which are template specific and
+mostly used to generate HTML tags.
 
-  %= link_to 'http://mojolicio.us' => begin
-    Mojolicious
-  % end
+  %= link_to Mojolicious => 'http://mojolicio.us'
 
 In controllers you can also use the method L<Mojolicious::Controller/"helpers">
 to fully qualify helper calls and ensure that they don't conflict with existing
@@ -637,7 +634,9 @@
 
 It's never fun to repeat yourself, that's why you can build reusable template
 blocks in C<ep> that work very similar to normal Perl functions, with the
-C<begin> and C<end> keywords.
+C<begin> and C<end> keywords. Just be aware that both keywords are part of the
+surrounding tag and not actual Perl code, so there can only be whitespace after
+C<begin> and before C<end>.
 
   use Mojolicious::Lite;
 
@@ -675,8 +674,9 @@
 =head2 Adding helpers
 
 You should always try to keep your actions small and reuse as much code as
-possible. Helpers make this very easy, you can use them to do pretty much
-anything an action could do.
+possible. Helpers make this very easy, they get passed the current controller
+object as first argument and you can use them to do pretty much anything an
+action could do.
 
   use Mojolicious::Lite;
 
@@ -782,7 +782,7 @@
   @@ layouts/mylayout.html.ep
   <!DOCTYPE html>
   <html>
-    <head><%= content_for 'header' %></head>
+    <head><%= content 'header' %></head>
     <body><%= content %></body>
   </html>
 
@@ -1017,7 +1017,12 @@
 
   use Mojolicious::Lite;
 
-  get '/some_static_file' => sub {
+  get '/' => sub {
+    my $c = shift;
+    $c->reply->static('index.html');
+  };
+
+  get '/some_download' => sub {
     my $c = shift;
     $c->res->headers->content_disposition('attachment; filename=bar.png;');
     $c->reply->static('foo/bar.png');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-6.0/lib/Mojolicious/Plugin/DefaultHelpers.pm 
new/Mojolicious-6.02/lib/Mojolicious/Plugin/DefaultHelpers.pm
--- old/Mojolicious-6.0/lib/Mojolicious/Plugin/DefaultHelpers.pm        
2015-02-26 22:22:42.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojolicious/Plugin/DefaultHelpers.pm       
2015-03-03 22:34:32.000000000 +0100
@@ -25,9 +25,13 @@
   $app->helper(c       => sub { shift; Mojo::Collection->new(@_) });
   $app->helper(config  => sub { shift->app->config(@_) });
 
+  $app->helper(content      => sub { _content(0, 0, @_) });
+  $app->helper(content_for  => sub { _content(1, 0, @_) });
+  $app->helper(content_with => sub { _content(0, 1, @_) });
+
   $app->helper($_ => $self->can("_$_"))
-    for qw(content content_for csrf_token current_route delay),
-    qw(inactivity_timeout is_fresh url_with);
+    for
+    qw(csrf_token current_route delay inactivity_timeout is_fresh url_with);
 
   $app->helper(dumper => sub { shift; dumper @_ });
   $app->helper(include => sub { shift->render_to_string(@_) });
@@ -36,7 +40,8 @@
 
   $app->helper('reply.exception' => sub { _development('exception', @_) });
   $app->helper('reply.not_found' => sub { _development('not_found', @_) });
-  $app->helper(ua                => sub { shift->app->ua });
+
+  $app->helper(ua => sub { shift->app->ua });
 }
 
 sub _asset {
@@ -45,26 +50,22 @@
   $c->rendered;
 }
 
+sub _block { ref $_[0] eq 'CODE' ? $_[0]() : $_[0] }
+
 sub _content {
-  my ($c, $name, $content) = @_;
+  my ($append, $replace, $c, $name, $content) = @_;
   $name ||= 'content';
 
-  # Set (first come)
   my $hash = $c->stash->{'mojo.content'} ||= {};
-  $hash->{$name} //= ref $content eq 'CODE' ? $content->() : $content
-    if defined $content;
+  if (defined $content) {
+    if ($append) { $hash->{$name} .= _block($content) }
+    if ($replace) { $hash->{$name} = _block($content) }
+    else          { $hash->{$name} //= _block($content) }
+  }
 
-  # Get
   return Mojo::ByteStream->new($hash->{$name} // '');
 }
 
-sub _content_for {
-  my ($c, $name, $content) = @_;
-  return _content($c, $name) unless defined $content;
-  my $hash = $c->stash->{'mojo.content'} ||= {};
-  return $hash->{$name} .= ref $content eq 'CODE' ? $content->() : $content;
-}
-
 sub _csrf_token {
   my $c = shift;
   $c->session->{csrf_token}
@@ -238,10 +239,10 @@
   %= content 'bar'
   %= content
 
-Store partial rendered content in named buffer and retrieve it, defaults to
-retrieving the named buffer C<content>, which is commonly used for the
-renderers C<layout> and C<extends> features. Note that new content will be
-ignored if the named buffer is already in use.
+Store partial rendered content in a named buffer and retrieve it later,
+defaults to retrieving the named buffer C<content>, which is commonly used for
+the renderers C<layout> and C<extends> features. New content will be ignored if
+the named buffer is already in use.
 
 =head2 content_for
 
@@ -250,8 +251,8 @@
   % end
   %= content_for 'foo'
 
-Append partial rendered content to named buffer and retrieve it. Note that
-named buffers are shared with the L</"content"> helper.
+Same as L</"content">, but appends content to named buffers if they are already
+in use.
 
   % content_for message => begin
     Hello
@@ -259,7 +260,25 @@
   % content_for message => begin
     world!
   % end
-  %= content_for 'message'
+  %= content 'message'
+
+=head2 content_with
+
+  % content_with foo => begin
+    test
+  % end
+  %= content_with 'foo'
+
+Same as L</"content">, but replaces content of named buffers if they are
+already in use.
+
+  % content message => begin
+    world!
+  % end
+  % content_with message => begin
+    Hello <%= content 'message' %>
+  % end
+  %= content 'message'
 
 =head2 csrf_token
 
@@ -309,7 +328,8 @@
 
   %= dumper {some => 'data'}
 
-Dump a Perl data structure with L<Mojo::Util/"dumper">.
+Dump a Perl data structure with L<Mojo::Util/"dumper">, very useful for
+debugging.
 
 =head2 extends
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojolicious/Plugin/EPRenderer.pm 
new/Mojolicious-6.02/lib/Mojolicious/Plugin/EPRenderer.pm
--- old/Mojolicious-6.0/lib/Mojolicious/Plugin/EPRenderer.pm    2015-02-21 
07:08:18.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojolicious/Plugin/EPRenderer.pm   2015-03-09 
20:03:32.000000000 +0100
@@ -36,7 +36,7 @@
         # Stash values (every time)
         my $prepend = 'my $self = my $c = shift; my $_S = $c->stash; {';
         $prepend .= join '', map {" my \$$_ = \$_S->{'$_'};"} @keys;
-        $mt->prepend($prepend . $mt->prepend)->append('}' . $mt->append);
+        $mt->prepend($prepend . $mt->prepend)->append(';}' . $mt->append);
 
         $cache->set($key => $mt);
       }
@@ -47,7 +47,7 @@
       local *{"${ns}::_C"} = sub {$c};
 
       # Render with "epl" handler
-      return $renderer->handlers->{epl}->($renderer, $c, $output, $options);
+      return $renderer->handlers->{epl}($renderer, $c, $output, $options);
     }
   );
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojolicious/Renderer.pm 
new/Mojolicious-6.02/lib/Mojolicious/Renderer.pm
--- old/Mojolicious-6.0/lib/Mojolicious/Renderer.pm     2015-02-24 
23:48:25.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojolicious/Renderer.pm    2015-03-03 
01:13:10.000000000 +0100
@@ -112,20 +112,20 @@
   # Data
   my $output;
   if (defined(my $data = delete $stash->{data})) {
-    $self->handlers->{data}->($self, $c, \$output, {data => $data});
+    $self->handlers->{data}($self, $c, \$output, {data => $data});
     return $output, $options->{format};
   }
 
   # JSON
   elsif (exists $stash->{json}) {
     my $json = delete $stash->{json};
-    $self->handlers->{json}->($self, $c, \$output, {json => $json});
+    $self->handlers->{json}($self, $c, \$output, {json => $json});
     return $output, 'json';
   }
 
   # Text
   elsif (defined(my $text = delete $stash->{text})) {
-    $self->handlers->{text}->($self, $c, \$output, {text => $text});
+    $self->handlers->{text}($self, $c, \$output, {text => $text});
   }
 
   # Template or templateless handler
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Mojolicious-6.0/lib/Mojolicious/templates/perldoc.html.ep 
new/Mojolicious-6.02/lib/Mojolicious/templates/perldoc.html.ep
--- old/Mojolicious-6.0/lib/Mojolicious/templates/perldoc.html.ep       
2015-02-21 07:08:18.000000000 +0100
+++ new/Mojolicious-6.02/lib/Mojolicious/templates/perldoc.html.ep      
2015-03-03 22:20:45.000000000 +0100
@@ -109,7 +109,7 @@
             </li>
           % }
         </ul>
-        %= content_for 'perldoc'
+        %= content 'perldoc'
       </div>
     </div>
     <div id="footer">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Mojolicious.pm 
new/Mojolicious-6.02/lib/Mojolicious.pm
--- old/Mojolicious-6.0/lib/Mojolicious.pm      2015-02-24 23:31:49.000000000 
+0100
+++ new/Mojolicious-6.02/lib/Mojolicious.pm     2015-03-03 17:11:31.000000000 
+0100
@@ -42,8 +42,8 @@
 has types     => sub { Mojolicious::Types->new };
 has validator => sub { Mojolicious::Validator->new };
 
-our $CODENAME = 'Tiger Face';
-our $VERSION  = '6.0';
+our $CODENAME = 'Clinking Beer Mugs';
+our $VERSION  = '6.02';
 
 sub AUTOLOAD {
   my $self = shift;
@@ -117,7 +117,7 @@
 
   # Dispatcher has to be last in the chain
   ++$self->{dispatch}
-    and $self->hook(around_action   => sub { $_[2]->($_[1]) })
+    and $self->hook(around_action   => sub { $_[2]($_[1]) })
     and $self->hook(around_dispatch => sub { $_[1]->app->dispatch($_[1]) })
     unless $self->{dispatch};
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/Test/Mojo.pm 
new/Mojolicious-6.02/lib/Test/Mojo.pm
--- old/Mojolicious-6.0/lib/Test/Mojo.pm        2015-02-26 05:59:01.000000000 
+0100
+++ new/Mojolicious-6.02/lib/Test/Mojo.pm       2015-03-09 21:37:55.000000000 
+0100
@@ -626,6 +626,14 @@
 Checks for existence of the CSS selectors first matching HTML/XML element with
 L<Mojo::DOM/"at">.
 
+  # Check attribute values
+  $t->get_ok('/login')
+    ->element_exists('label[for=email]')
+    ->element_exists('input[name=email][type=text][value*="example.com"]')
+    ->element_exists('label[for=pass]')
+    ->element_exists('input[name=pass][type=password]')
+    ->element_exists('input[type=submit][value]');
+
 =head2 element_exists_not
 
   $t = $t->element_exists_not('div.foo[x=y]');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/lib/ojo.pm 
new/Mojolicious-6.02/lib/ojo.pm
--- old/Mojolicious-6.0/lib/ojo.pm      2015-02-24 23:26:42.000000000 +0100
+++ new/Mojolicious-6.02/lib/ojo.pm     2015-03-03 22:07:08.000000000 +0100
@@ -17,7 +17,7 @@
   my $caller = caller;
   eval "package $caller; use Mojolicious::Lite; 1" or die $@;
   my $ua = $caller->app->ua;
-  $ua->server->app->hook(around_action => sub { local $_ = $_[1]; $_[0]->() });
+  $ua->server->app->hook(around_action => sub { local $_ = $_[1]; $_[0]() });
 
   $ua->max_redirects(10) unless defined $ENV{MOJO_MAX_REDIRECTS};
   $ua->proxy->detect unless defined $ENV{MOJO_PROXY};
@@ -116,6 +116,8 @@
 
   my $res = d('example.com');
   my $res = d('http://example.com' => {Accept => '*/*'} => 'Hi!');
+  my $res = d('http://example.com' => {Accept => '*/*'} => form => {a => 'b'});
+  my $res = d('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
 
 Perform C<DELETE> request with L<Mojo::UserAgent/"delete"> and return resulting
 L<Mojo::Message::Response> object.
@@ -124,6 +126,8 @@
 
   my $res = g('example.com');
   my $res = g('http://example.com' => {Accept => '*/*'} => 'Hi!');
+  my $res = g('http://example.com' => {Accept => '*/*'} => form => {a => 'b'});
+  my $res = g('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
 
 Perform C<GET> request with L<Mojo::UserAgent/"get"> and return resulting
 L<Mojo::Message::Response> object.
@@ -134,6 +138,8 @@
 
   my $res = h('example.com');
   my $res = h('http://example.com' => {Accept => '*/*'} => 'Hi!');
+  my $res = h('http://example.com' => {Accept => '*/*'} => form => {a => 'b'});
+  my $res = h('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
 
 Perform C<HEAD> request with L<Mojo::UserAgent/"head"> and return resulting
 L<Mojo::Message::Response> object.
@@ -162,6 +168,8 @@
 
   my $res = o('example.com');
   my $res = o('http://example.com' => {Accept => '*/*'} => 'Hi!');
+  my $res = o('http://example.com' => {Accept => '*/*'} => form => {a => 'b'});
+  my $res = o('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
 
 Perform C<OPTIONS> request with L<Mojo::UserAgent/"options"> and return
 resulting L<Mojo::Message::Response> object.
@@ -170,6 +178,8 @@
 
   my $res = p('example.com');
   my $res = p('http://example.com' => {Accept => '*/*'} => 'Hi!');
+  my $res = p('http://example.com' => {Accept => '*/*'} => form => {a => 'b'});
+  my $res = p('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
 
 Perform C<POST> request with L<Mojo::UserAgent/"post"> and return resulting
 L<Mojo::Message::Response> object.
@@ -186,6 +196,8 @@
 
   my $res = t('example.com');
   my $res = t('http://example.com' => {Accept => '*/*'} => 'Hi!');
+  my $res = t('http://example.com' => {Accept => '*/*'} => form => {a => 'b'});
+  my $res = t('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
 
 Perform C<PATCH> request with L<Mojo::UserAgent/"patch"> and return resulting
 L<Mojo::Message::Response> object.
@@ -194,6 +206,8 @@
 
   my $res = u('example.com');
   my $res = u('http://example.com' => {Accept => '*/*'} => 'Hi!');
+  my $res = u('http://example.com' => {Accept => '*/*'} => form => {a => 'b'});
+  my $res = u('http://example.com' => {Accept => '*/*'} => json => {a => 'b'});
 
 Perform C<PUT> request with L<Mojo::UserAgent/"put"> and return resulting
 L<Mojo::Message::Response> object.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/script/morbo 
new/Mojolicious-6.02/script/morbo
--- old/Mojolicious-6.0/script/morbo    2015-02-24 21:03:06.000000000 +0100
+++ new/Mojolicious-6.02/script/morbo   2015-03-10 01:27:29.000000000 +0100
@@ -18,9 +18,9 @@
   die Mojolicious::Command->new->extract_usage;
 }
 
-$ENV{MOJO_LISTEN} = join ',', @listen if @listen;
 require Mojo::Server::Morbo;
 my $morbo = Mojo::Server::Morbo->new;
+$morbo->daemon->listen(\@listen) if @listen;
 $morbo->watch(\@watch) if @watch;
 $morbo->run($app);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/t/mojo/hypnotoad.t 
new/Mojolicious-6.02/t/mojo/hypnotoad.t
--- old/Mojolicious-6.0/t/mojo/hypnotoad.t      2015-02-22 08:07:48.000000000 
+0100
+++ new/Mojolicious-6.02/t/mojo/hypnotoad.t     2015-03-10 01:59:12.000000000 
+0100
@@ -94,9 +94,8 @@
 sleep 1 while !_port($port2);
 my $old = _pid();
 
-my $ua = Mojo::UserAgent->new;
-
 # Application is alive
+my $ua = Mojo::UserAgent->new;
 my $tx = $ua->get("http://127.0.0.1:$port1/hello";);
 ok $tx->is_finished, 'transaction is finished';
 ok $tx->keep_alive,  'connection will be kept alive';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/t/mojo/morbo.t 
new/Mojolicious-6.02/t/mojo/morbo.t
--- old/Mojolicious-6.0/t/mojo/morbo.t  2015-02-22 06:29:15.000000000 +0100
+++ new/Mojolicious-6.02/t/mojo/morbo.t 2015-03-10 01:58:41.000000000 +0100
@@ -40,9 +40,8 @@
   "http://127.0.0.1:$port";, $script;
 sleep 1 while !_port($port);
 
-my $ua = Mojo::UserAgent->new;
-
 # Application is alive
+my $ua = Mojo::UserAgent->new;
 my $tx = $ua->get("http://127.0.0.1:$port/hello";);
 ok $tx->is_finished, 'transaction is finished';
 is $tx->res->code, 200,            'right status';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/t/mojo/request.t 
new/Mojolicious-6.02/t/mojo/request.t
--- old/Mojolicious-6.0/t/mojo/request.t        2015-02-23 21:19:54.000000000 
+0100
+++ new/Mojolicious-6.02/t/mojo/request.t       2015-03-02 22:36:12.000000000 
+0100
@@ -2070,12 +2070,12 @@
 
 # Parse lots of special characters in URL
 $req = Mojo::Message::Request->new;
-$req->parse('GET /#09azAZ!$%&\'()*+,-./:;=?@[\\]^_`{|}~ ');
+$req->parse("GET /#09azAZ!\$%&'()*+,-./:;=?@[\\]^_`{|}~\xC3\x9F ");
 $req->parse("HTTP/1.1\x0d\x0a\x0d\x0a");
 ok $req->is_finished, 'request is finished';
 is $req->method,      'GET', 'right method';
 is $req->version,     '1.1', 'right version';
-is $req->url,         '/#09azAZ!$%&\'()*+,-./:;=?@%5B%5C%5D%5E_%60%7B%7C%7D~',
+is $req->url, "/#09azAZ!\$%&\'()*+,-./:;=?@%5B%5C%5D%5E_%60%7B%7C%7D~%C3%9F",
   'right URL';
 
 # Abstract methods
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/t/mojo/template.t 
new/Mojolicious-6.02/t/mojo/template.t
--- old/Mojolicious-6.0/t/mojo/template.t       2015-02-25 19:30:14.000000000 
+0100
+++ new/Mojolicious-6.02/t/mojo/template.t      2015-03-10 03:08:48.000000000 
+0100
@@ -1,3 +1,11 @@
+use Mojo::Base -strict;
+
+use Test::More;
+use Cwd 'abs_path';
+use File::Basename 'dirname';
+use File::Spec::Functions 'catfile';
+use Mojo::Template;
+
 package MyTemplateExporter;
 use Mojo::Base -strict;
 
@@ -13,21 +21,15 @@
 sub exception { die 'ohoh' }
 
 package main;
-use Mojo::Base -strict;
 
-use Test::More;
-use Cwd 'abs_path';
-use File::Basename 'dirname';
-use File::Spec::Functions 'catfile';
-use Mojo::Template;
-
-# Capture helper
-my $capture = 'no warnings "redefine"; sub capture { shift->(@_) }';
+# Empty template
+my $mt     = Mojo::Template->new;
+my $output = $mt->render('');
+is $output, '', 'empty string';
 
 # Consistent scalar context
-my $mt = Mojo::Template->new;
 $mt->prepend('my @foo = (3, 4);')->parse('<%= @foo %>:<%== @foo %>');
-my $output = $mt->build->compile || $mt->interpret;
+$output = $mt->build->compile || $mt->interpret;
 is $output, "2:2\n", 'same context';
 
 # Parentheses
@@ -42,8 +44,8 @@
 
 # Trim expression
 $mt     = Mojo::Template->new;
-$output = $mt->render("<%= '123' %><%= 'test' =%>\n");
-is $output, '123test', 'expression trimmed';
+$output = $mt->render("<%= '123' %><%= 'begin#test' =%>\n");
+is $output, '123begin#test', 'expression trimmed';
 
 # Trim expression (multiple lines)
 $mt     = Mojo::Template->new;
@@ -66,6 +68,7 @@
 is $output, "    \ntest    \n", 'expression trimmed';
 
 # Trim expression tags
+my $capture = 'no warnings "redefine"; sub capture { shift->(@_) }';
 $mt = Mojo::Template->new(prepend => $capture);
 $output = $mt->render('    <%= capture begin =%><html><% end =%>    ');
 is $output, '<html>', 'expression tags trimmed';
@@ -641,21 +644,21 @@
 EOF
 isa_ok $output, 'Mojo::Exception', 'right exception';
 like $output->message, qr/ohoh/, 'right message';
-is $output->lines_before->[0][0], 8,   'right number';
+is $output->lines_before->[0][0], 16,  'right number';
 is $output->lines_before->[0][1], '}', 'right line';
-is $output->lines_before->[1][0], 9,   'right number';
+is $output->lines_before->[1][0], 17,  'right number';
 is $output->lines_before->[1][1], '',  'right line';
-is $output->lines_before->[2][0], 10,  'right number';
+is $output->lines_before->[2][0], 18,  'right number';
 is $output->lines_before->[2][1], 'package MyTemplateException;', 'right line';
-is $output->lines_before->[3][0], 11,                        'right number';
+is $output->lines_before->[3][0], 19,                        'right number';
 is $output->lines_before->[3][1], 'use Mojo::Base -strict;', 'right line';
-is $output->lines_before->[4][0], 12,                        'right number';
+is $output->lines_before->[4][0], 20,                        'right number';
 is $output->lines_before->[4][1], '',                        'right line';
-is $output->line->[0], 13, 'right number';
+is $output->line->[0], 21, 'right number';
 is $output->line->[1], "sub exception { die 'ohoh' }", 'right line';
-is $output->lines_after->[0][0], 14,              'right number';
+is $output->lines_after->[0][0], 22,              'right number';
 is $output->lines_after->[0][1], '',              'right line';
-is $output->lines_after->[1][0], 15,              'right number';
+is $output->lines_after->[1][0], 23,              'right number';
 is $output->lines_after->[1][1], 'package main;', 'right line';
 like "$output", qr/ohoh/, 'right result';
 
@@ -842,14 +845,14 @@
 $mt->auto_escape(1);
 $output = $mt->render(<<'EOF');
 <html><%= '<html>' %>
-%= '&lt;'
-%== '&lt;'
+%= 'begin#&lt;'
+%== 'begin#&lt;'
 </html>
 EOF
 is $output, <<EOF, 'XML auto escape';
 <html>&lt;html&gt;
-&amp;lt;
-&lt;
+begin#&amp;lt;
+begin#&lt;
 </html>
 EOF
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/t/mojo/util.t 
new/Mojolicious-6.02/t/mojo/util.t
--- old/Mojolicious-6.0/t/mojo/util.t   2015-02-21 07:08:18.000000000 +0100
+++ new/Mojolicious-6.02/t/mojo/util.t  2015-03-03 14:32:21.000000000 +0100
@@ -464,10 +464,11 @@
 is tablify([['foo']]), "foo\n", 'right result';
 is tablify([['foo', 'yada'], ['yada', 'yada']]), "foo   yada\nyada  yada\n",
   'right result';
+is tablify([[undef, 'yada'], ['yada', undef]]), "      yada\nyada  \n",
+  'right result';
 is tablify([['foo', 'bar', 'baz'], ['yada', 'yada', 'yada']]),
   "foo   bar   baz\nyada  yada  yada\n", 'right result';
-is tablify([['a', '', 'b'], ['c', '', 'd']]), "a    b\nc    d\n",
-  'right result';
+is tablify([['a', '', 0], [0, '', 'b']]), "a    0\n0    b\n", 'right result';
 
 # deprecated
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-6.0/t/mojolicious/layouted_lite_app.t 
new/Mojolicious-6.02/t/mojolicious/layouted_lite_app.t
--- old/Mojolicious-6.0/t/mojolicious/layouted_lite_app.t       2015-02-21 
07:08:18.000000000 +0100
+++ new/Mojolicious-6.02/t/mojolicious/layouted_lite_app.t      2015-03-03 
22:30:30.000000000 +0100
@@ -97,6 +97,8 @@
 
 get '/content_for';
 
+get '/content_with';
+
 get '/inline' => {inline => '<%= "inline!" %>'};
 
 get '/inline/again' => {inline => 0};
@@ -235,6 +237,9 @@
 $t->get_ok('/content_for')->status_is(200)
   ->header_is(Server => 'Mojolicious (Perl)')
   ->content_is("DefaultThis\n\nseems\nto\nHello    world!\n\nwork!\n\n");
+$t->get_ok('/content_with')->status_is(200)
+  ->header_is(Server => 'Mojolicious (Perl)')
+  ->content_is("Default\n\nSomething <b>else</b>!\n\n\n<br>Hello world!\n\n");
 
 # Inline template
 $t->get_ok('/inline')->status_is(200)
@@ -399,6 +404,17 @@
 <%= content_for 'message' %>
 work!
 
+@@ content_with.html.ep
+<% content first => begin %>Something<% end %>
+<% content_for first => begin %> <b>else<% end %>
+% content_for first => '</b>!';
+%= content_with 'first'
+% content_with first => '';
+%= content_with 'first'
+<% content second => begin %>world<% end %>
+<%= content_with second => begin %><br>Hello <%= content 'second' %>!<% end %>
+% content_with 'second'
+
 @@ layouts/variants.txt.ep
 Variant: <%= content %>\
 

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to