Hello community,

here is the log from the commit of package perl-Mojolicious for 
openSUSE:Factory checked in at 2016-09-23 11:24:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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        
2016-09-05 21:18:16.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.perl-Mojolicious.new/perl-Mojolicious.changes   
2016-09-23 11:24:54.000000000 +0200
@@ -1,0 +2,20 @@
+Wed Sep 21 05:46:53 UTC 2016 - co...@suse.com
+
+- updated to 7.07
+   see /usr/share/doc/packages/perl-Mojolicious/Changes
+
+  7.07  2016-09-20
+    - Fixed bug in Mojo::UserAgent::Transactor where 303 redirects would not be
+      followed correctly with GET requests. (jberger)
+
+-------------------------------------------------------------------
+Sun Sep 18 05:42:57 UTC 2016 - co...@suse.com
+
+- updated to 7.06
+   see /usr/share/doc/packages/perl-Mojolicious/Changes
+
+  7.06  2016-09-17
+    - Fixed bug where Mojolicious::Renderer would wrap text in layouts.
+    - Fixed a few test description encoding bugs in Test::Mojo.
+
+-------------------------------------------------------------------

Old:
----
  Mojolicious-7.05.tar.gz

New:
----
  Mojolicious-7.07.tar.gz

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

Other differences:
------------------
++++++ perl-Mojolicious.spec ++++++
--- /var/tmp/diff_new_pack.KD1ZLX/_old  2016-09-23 11:24:55.000000000 +0200
+++ /var/tmp/diff_new_pack.KD1ZLX/_new  2016-09-23 11:24:55.000000000 +0200
@@ -17,14 +17,14 @@
 
 
 Name:           perl-Mojolicious
-Version:        7.05
+Version:        7.07
 Release:        0
 %define cpan_name Mojolicious
 Summary:        Real-time web framework
 License:        Artistic-2.0
 Group:          Development/Libraries/Perl
 Url:            http://search.cpan.org/dist/Mojolicious/
-Source0:        
http://www.cpan.org/authors/id/S/SR/SRI/%{cpan_name}-%{version}.tar.gz
+Source0:        
http://www.cpan.org/authors/id/J/JB/JBERGER/%{cpan_name}-%{version}.tar.gz
 Source1:        cpanspec.yml
 BuildArch:      noarch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ Mojolicious-7.05.tar.gz -> Mojolicious-7.07.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/Changes new/Mojolicious-7.07/Changes
--- old/Mojolicious-7.05/Changes        2016-08-29 17:10:48.000000000 +0200
+++ new/Mojolicious-7.07/Changes        2016-09-20 14:20:08.000000000 +0200
@@ -1,4 +1,12 @@
 
+7.07  2016-09-20
+  - Fixed bug in Mojo::UserAgent::Transactor where 303 redirects would not be
+    followed correctly with GET requests. (jberger)
+
+7.06  2016-09-17
+  - Fixed bug where Mojolicious::Renderer would wrap text in layouts.
+  - Fixed a few test description encoding bugs in Test::Mojo.
+
 7.05  2016-08-29
   - Fixed bug in Mojo::IOLoop::Subprocess where EV would steal the subprocess
     exit status.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/META.json 
new/Mojolicious-7.07/META.json
--- old/Mojolicious-7.05/META.json      2016-08-29 18:43:03.000000000 +0200
+++ new/Mojolicious-7.07/META.json      2016-09-20 14:29:33.000000000 +0200
@@ -4,7 +4,7 @@
       "Sebastian Riedel <s...@cpan.org>"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter 
version 2.150010",
+   "generated_by" : "ExtUtils::MakeMaker version 7.22, CPAN::Meta::Converter 
version 2.150005",
    "license" : [
       "artistic_2"
    ],
@@ -58,6 +58,6 @@
       },
       "x_IRC" : "irc://irc.perl.org/#mojo"
    },
-   "version" : "7.05",
+   "version" : "7.07",
    "x_serialization_backend" : "JSON::PP version 2.27400"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/META.yml 
new/Mojolicious-7.07/META.yml
--- old/Mojolicious-7.05/META.yml       2016-08-29 18:43:03.000000000 +0200
+++ new/Mojolicious-7.07/META.yml       2016-09-20 14:29:33.000000000 +0200
@@ -7,7 +7,7 @@
 configure_requires:
   ExtUtils::MakeMaker: '0'
 dynamic_config: 0
-generated_by: 'ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 
2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.22, CPAN::Meta::Converter version 
2.150005'
 license: artistic_2
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -31,5 +31,5 @@
   homepage: http://mojolicious.org
   license: http://www.opensource.org/licenses/artistic-license-2.0
   repository: https://github.com/kraih/mojo.git
-version: '7.05'
+version: '7.07'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/lib/Mojo/UserAgent/Transactor.pm 
new/Mojolicious-7.07/lib/Mojo/UserAgent/Transactor.pm
--- old/Mojolicious-7.05/lib/Mojo/UserAgent/Transactor.pm       2016-08-21 
18:02:29.000000000 +0200
+++ new/Mojolicious-7.07/lib/Mojo/UserAgent/Transactor.pm       2016-09-20 
14:18:46.000000000 +0200
@@ -89,8 +89,8 @@
     $new->req($clone);
   }
   else {
-    my $method = uc $req->method;
-    my $headers = $new->req->method($method eq 'POST' ? 'GET' : $method)
+    my $m = uc $req->method;
+    my $headers = $new->req->method($code == 303 || $m eq 'POST' ? 'GET' : $m)
       ->content->headers($req->headers->clone)->headers;
     $headers->remove($_) for grep {/^content-/i} @{$headers->names};
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/lib/Mojolicious/Controller.pm 
new/Mojolicious-7.07/lib/Mojolicious/Controller.pm
--- old/Mojolicious-7.05/lib/Mojolicious/Controller.pm  2016-08-27 
14:19:33.000000000 +0200
+++ new/Mojolicious-7.07/lib/Mojolicious/Controller.pm  2016-09-18 
05:52:14.000000000 +0200
@@ -736,6 +736,7 @@
   my $bytes  = $c->req->body;
   my $str    = $c->req->text;
   my $hash   = $c->req->params->to_hash;
+  my $all    = $c->req->uploads;
   my $value  = $c->req->json;
   my $foo    = $c->req->json('/23/foo');
   my $dom    = $c->req->dom;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/lib/Mojolicious/Guides/Cookbook.pod 
new/Mojolicious-7.07/lib/Mojolicious/Guides/Cookbook.pod
--- old/Mojolicious-7.05/lib/Mojolicious/Guides/Cookbook.pod    2016-08-01 
02:03:56.000000000 +0200
+++ new/Mojolicious-7.07/lib/Mojolicious/Guides/Cookbook.pod    2016-09-18 
05:52:14.000000000 +0200
@@ -122,9 +122,9 @@
 =head2 Hypnotoad
 
 For bigger applications L<Mojolicious> contains the UNIX optimized pre-forking
-web server L<Mojo::Server::Hypnotoad>, which can take advantage of multiple CPU
-cores and copy-on-write memory management to scale up to thousands of
-concurrent client connections.
+web server L<Hypnotoad|Mojo::Server::Hypnotoad>, which can take advantage of
+multiple CPU cores and copy-on-write memory management to scale up to thousands
+of concurrent client connections.
 
   Mojo::Server::Hypnotoad
   |- Mojo::Server::Daemon [1]
@@ -172,15 +172,16 @@
   $ hypnotoad ./script/my_app
   Starting hot deployment for Hypnotoad server 31841.
 
-You might also want to enable proxy support if you're using Hypnotoad behind a
-reverse proxy. This allows L<Mojolicious> to automatically pick up the
-C<X-Forwarded-For> and C<X-Forwarded-Proto> headers.
+You might also want to enable proxy support if you're using
+L<Hypnotoad|Mojo::Server::Hypnotoad> behind a reverse proxy. This allows
+L<Mojolicious> to automatically pick up the C<X-Forwarded-For> and
+C<X-Forwarded-Proto> headers.
 
   # myapp.conf
   {hypnotoad => {proxy => 1}};
 
-To manage Hypnotoad with systemd, you can use a unit configuration file like
-this.
+To manage L<Hypnotoad|Mojo::Server::Hypnotoad> with systemd, you can use a unit
+configuration file like this.
 
   [Unit]
   Description=My Mojolicious application
@@ -198,10 +199,10 @@
 
 =head2 Zero downtime software upgrades
 
-Hypnotoad makes zero downtime software upgrades (hot deployment) very simple,
-as you can see above, but on modern operating systems that support the
-C<SO_REUSEPORT> socket option, there is also another method available that
-works with all built-in web servers.
+L<Hypnotoad|Mojo::Server::Hypnotoad> makes zero downtime software upgrades (hot
+deployment) very simple, as you can see above, but on modern operating systems
+that support the C<SO_REUSEPORT> socket option, there is also another method
+available that works with all built-in web servers.
 
   $ ./script/my_app prefork -P /tmp/first.pid -l http://*:8080?reuse=1
   Server available at http://127.0.0.1:8080
@@ -218,9 +219,9 @@
 
 =head2 Nginx
 
-One of the most popular setups these days is Hypnotoad behind an
-L<Nginx|http://nginx.org> reverse proxy, which even supports WebSockets in
-newer versions.
+One of the most popular setups these days is
+L<Hypnotoad|Mojo::Server::Hypnotoad> behind an L<Nginx|http://nginx.org> 
reverse
+proxy, which even supports WebSockets in newer versions.
 
   upstream myapp {
     server 127.0.0.1:8080;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/lib/Mojolicious/Guides/FAQ.pod 
new/Mojolicious-7.07/lib/Mojolicious/Guides/FAQ.pod
--- old/Mojolicious-7.05/lib/Mojolicious/Guides/FAQ.pod 2016-08-27 
14:23:36.000000000 +0200
+++ new/Mojolicious-7.07/lib/Mojolicious/Guides/FAQ.pod 2016-09-18 
05:52:14.000000000 +0200
@@ -78,9 +78,16 @@
 legacy version that we deem worthy of supporting, but not specifically optimize
 for it, this is currently 5.10.1.
 
+=head2 How well is Windows supported by Mojolicious?
+
+Windows is fully supported by L<Mojolicious>, some of the more advanced
+features, such as L<subprocesses|Mojo::IOLoop/"subprocess"> and the
+L<Hypnotoad|Mojo::Server::Hypnotoad> web server, will however require the use 
of
+the L<Windows Subsystem for Linux|https://msdn.microsoft.com/commandline/wsl/>.
+
 =head2 Do I need to clean my environment before testing Mojolicious?
 
-Mojolicious uses many environment variables both internally and externally,
+L<Mojolicious> uses many environment variables both internally and externally,
 notably (but not exclusively) those starting with the prefix C<MOJO_*> and
 C<PLACK_ENV>. The test suite expects a clean environment; testing with a
 non-standard environment is unsupported and is unlikely to succeed. Therefore
@@ -114,10 +121,12 @@
 
 No, it is not possible to magically make Perl code non-blocking. While
 L<Mojolicious> has been designed from the ground up for non-blocking I/O and
-event loops, taking advantage of this requires specialized code available
-through modules like L<Mojo::IOLoop> and L<Mojo::UserAgent>, or third-party
-event loops. In the documentation we often refer to this as real-time web, for
-more information see also L<Mojolicious::Guides::Cookbook/"REAL-TIME WEB">.
+event loops, taking advantage of this requires blocking code to be wrapped in
+L<subprocesses|Mojo::IOLoop/"subprocess">, and the use of specialized
+non-blocking code available through modules like L<Mojo::IOLoop> and
+L<Mojo::UserAgent>, or third-party event loops. In the documentation we often
+refer to this as real-time web, for more information see also
+L<Mojolicious::Guides::Cookbook/"REAL-TIME WEB">.
 
 =head2 What is an event loop?
 
@@ -155,11 +164,11 @@
 
 =head2 Can I configure Hypnotoad from the command line?
 
-No, you can't, Hypnotoad is a bit special in this regard. Because when you
-initiate a zero downtime software upgrade (hot deployment), you are only really
-sending a C<USR2> signal to the already running server, and no other 
information
-can be passed along. What you can do instead, is to use a
-L<Mojolicious::Plugin::Config> or L<Mojolicious::Plugin::JSONConfig>
+No, you can't, L<Hypnotoad|Mojo::Server::Hypnotoad> is a bit special in this
+regard. Because when you initiate a zero downtime software upgrade (hot
+deployment), you are only really sending a C<USR2> signal to the already 
running
+server, and no other information can be passed along. What you can do instead,
+is to use a L<Mojolicious::Plugin::Config> or 
L<Mojolicious::Plugin::JSONConfig>
 configuration file.
 
   # myapp.conf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/lib/Mojolicious/Guides/Tutorial.pod 
new/Mojolicious-7.07/lib/Mojolicious/Guides/Tutorial.pod
--- old/Mojolicious-7.05/lib/Mojolicious/Guides/Tutorial.pod    2016-08-16 
16:57:46.000000000 +0200
+++ new/Mojolicious-7.07/lib/Mojolicious/Guides/Tutorial.pod    2016-09-18 
05:52:14.000000000 +0200
@@ -791,10 +791,11 @@
 =head2 File uploads
 
 All files uploaded via C<multipart/form-data> request are automatically
-available as L<Mojo::Upload> objects. And you don't have to worry about memory
-usage, because all files above 250KB will be automatically streamed into a
-temporary file. To build HTML forms more efficiently, you can also use tag
-helpers like L<Mojolicious::Plugin::TagHelpers/"form_for">.
+available as L<Mojo::Upload> objects from L<Mojolicious::Controller/"param">.
+And you don't have to worry about memory usage, because all files above 250KB
+will be automatically streamed into a temporary file. To build HTML forms more
+efficiently, you can also use tag helpers like
+L<Mojolicious::Plugin::TagHelpers/"form_for">.
 
   use Mojolicious::Lite;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/lib/Mojolicious/Renderer.pm 
new/Mojolicious-7.07/lib/Mojolicious/Renderer.pm
--- old/Mojolicious-7.05/lib/Mojolicious/Renderer.pm    2016-07-19 
02:38:18.000000000 +0200
+++ new/Mojolicious-7.07/lib/Mojolicious/Renderer.pm    2016-09-18 
05:52:14.000000000 +0200
@@ -99,17 +99,16 @@
   # Data
   return delete $stash->{data}, $options->{format} if defined $stash->{data};
 
+  # Text
+  return _maybe($options->{encoding}, delete $stash->{text}), 
$options->{format}
+    if defined $stash->{text};
+
   # JSON
   return encode_json(delete $stash->{json}), 'json' if exists $stash->{json};
 
-  # Text
-  my $output = delete $stash->{text};
-
   # Template or templateless handler
-  unless (defined $output) {
-    $options->{template} //= $self->template_for($c);
-    return () unless $self->_render_template($c, \$output, $options);
-  }
+  $options->{template} //= $self->template_for($c);
+  return () unless $self->_render_template($c, \my $output, $options);
 
   # Inheritance
   my $content = $stash->{'mojo.content'} ||= {};
@@ -122,11 +121,8 @@
     $content->{content} //= $output if $output =~ /\S/;
   }
 
-  # Encoding
-  $output = encode $options->{encoding}, $output
-    if !$string && $options->{encoding} && $output;
-
-  return $output, $options->{format};
+  return $string ? $output : _maybe($options->{encoding}, $output),
+    $options->{format};
 }
 
 sub template_for {
@@ -195,6 +191,8 @@
   }
 }
 
+sub _maybe { $_[0] ? encode @_ : $_[1] }
+
 sub _next {
   my $stash = shift;
   return delete $stash->{extends} if $stash->{extends};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/lib/Mojolicious.pm 
new/Mojolicious-7.07/lib/Mojolicious.pm
--- old/Mojolicious-7.05/lib/Mojolicious.pm     2016-08-29 16:00:05.000000000 
+0200
+++ new/Mojolicious-7.07/lib/Mojolicious.pm     2016-09-20 14:20:47.000000000 
+0200
@@ -43,7 +43,7 @@
 has validator => sub { Mojolicious::Validator->new };
 
 our $CODENAME = 'Doughnut';
-our $VERSION  = '7.05';
+our $VERSION  = '7.07';
 
 sub AUTOLOAD {
   my $self = shift;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/lib/Test/Mojo.pm 
new/Mojolicious-7.07/lib/Test/Mojo.pm
--- old/Mojolicious-7.05/lib/Test/Mojo.pm       2016-07-19 02:38:18.000000000 
+0200
+++ new/Mojolicious-7.07/lib/Test/Mojo.pm       2016-09-18 05:52:14.000000000 
+0200
@@ -31,74 +31,74 @@
 
 sub content_is {
   my ($self, $value, $desc) = @_;
-  $desc ||= 'exact match for content';
-  return $self->_test('is', $self->tx->res->text, $value, $desc);
+  return $self->_test('is', $self->tx->res->text,
+    $value, _desc($desc, 'exact match for content'));
 }
 
 sub content_isnt {
   my ($self, $value, $desc) = @_;
-  $desc ||= 'no match for content';
-  return $self->_test('isnt', $self->tx->res->text, $value, $desc);
+  return $self->_test('isnt', $self->tx->res->text,
+    $value, _desc($desc, 'no match for content'));
 }
 
 sub content_like {
   my ($self, $regex, $desc) = @_;
-  $desc ||= 'content is similar';
-  return $self->_test('like', $self->tx->res->text, $regex, $desc);
+  return $self->_test('like', $self->tx->res->text,
+    $regex, _desc($desc, 'content is similar'));
 }
 
 sub content_type_is {
   my ($self, $type, $desc) = @_;
-  $desc ||= "Content-Type: $type";
+  $desc = _desc($desc, "Content-Type: $type");
   return $self->_test('is', $self->tx->res->headers->content_type, $type,
     $desc);
 }
 
 sub content_type_isnt {
   my ($self, $type, $desc) = @_;
-  $desc ||= "not Content-Type: $type";
+  $desc = _desc($desc, "not Content-Type: $type");
   return $self->_test('isnt', $self->tx->res->headers->content_type, $type,
     $desc);
 }
 
 sub content_type_like {
   my ($self, $regex, $desc) = @_;
-  $desc ||= 'Content-Type is similar';
+  $desc = _desc($desc, 'Content-Type is similar');
   return $self->_test('like', $self->tx->res->headers->content_type, $regex,
     $desc);
 }
 
 sub content_type_unlike {
   my ($self, $regex, $desc) = @_;
-  $desc ||= 'Content-Type is not similar';
+  $desc = _desc($desc, 'Content-Type is not similar');
   return $self->_test('unlike', $self->tx->res->headers->content_type, $regex,
     $desc);
 }
 
 sub content_unlike {
   my ($self, $regex, $desc) = @_;
-  $desc ||= 'content is not similar';
-  return $self->_test('unlike', $self->tx->res->text, $regex, $desc);
+  return $self->_test('unlike', $self->tx->res->text,
+    $regex, _desc($desc, 'content is not similar'));
 }
 
 sub delete_ok { shift->_build_ok(DELETE => @_) }
 
 sub element_count_is {
   my ($self, $selector, $count, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{element count for selector "$selector"};
   my $size = $self->tx->res->dom->find($selector)->size;
-  return $self->_test('is', $size, $count, $desc);
+  return $self->_test('is', $size, $count,
+    _desc($desc, qq{element count for selector "$selector"}));
 }
 
 sub element_exists {
   my ($self, $selector, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{element for selector "$selector" exists};
+  $desc = _desc($desc, qq{element for selector "$selector" exists});
   return $self->_test('ok', $self->tx->res->dom->at($selector), $desc);
 }
 
 sub element_exists_not {
   my ($self, $selector, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{no element for selector "$selector"};
+  $desc = _desc($desc, qq{no element for selector "$selector"});
   return $self->_test('ok', !$self->tx->res->dom->at($selector), $desc);
 }
 
@@ -122,42 +122,42 @@
 
 sub header_is {
   my ($self, $name, $value, $desc) = @_;
-  $desc ||= "$name: " . ($value // '');
+  $desc = _desc($desc, "$name: " . ($value // ''));
   return $self->_test('is', $self->tx->res->headers->header($name), $value,
     $desc);
 }
 
 sub header_isnt {
   my ($self, $name, $value, $desc) = @_;
-  $desc ||= "not $name: " . ($value // '');
+  $desc = _desc($desc, "not $name: " . ($value // ''));
   return $self->_test('isnt', $self->tx->res->headers->header($name), $value,
     $desc);
 }
 
 sub header_like {
   my ($self, $name, $regex, $desc) = @_;
-  $desc ||= "$name is similar";
+  $desc = _desc($desc, "$name is similar");
   return $self->_test('like', $self->tx->res->headers->header($name), $regex,
     $desc);
 }
 
 sub header_unlike {
   my ($self, $name, $regex, $desc) = @_;
-  $desc ||= "$name is not similar";
+  $desc = _desc($desc, "$name is not similar");
   return $self->_test('unlike', $self->tx->res->headers->header($name),
     $regex, $desc);
 }
 
 sub json_has {
   my ($self, $p, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{has value for JSON Pointer "$p"};
+  $desc = _desc($desc, qq{has value for JSON Pointer "$p"});
   return $self->_test('ok',
     !!Mojo::JSON::Pointer->new($self->tx->res->json)->contains($p), $desc);
 }
 
 sub json_hasnt {
   my ($self, $p, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{has no value for JSON Pointer "$p"};
+  $desc = _desc($desc, qq{has no value for JSON Pointer "$p"});
   return $self->_test('ok',
     !Mojo::JSON::Pointer->new($self->tx->res->json)->contains($p), $desc);
 }
@@ -165,76 +165,77 @@
 sub json_is {
   my $self = shift;
   my ($p, $data) = @_ > 1 ? (shift, shift) : ('', shift);
-  my $desc = encode 'UTF-8', shift || qq{exact match for JSON Pointer "$p"};
+  my $desc = _desc(shift, qq{exact match for JSON Pointer "$p"});
   return $self->_test('is_deeply', $self->tx->res->json($p), $data, $desc);
 }
 
 sub json_like {
   my ($self, $p, $regex, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{similar match for JSON Pointer "$p"};
-  return $self->_test('like', $self->tx->res->json($p), $regex, $desc);
+  return $self->_test('like', $self->tx->res->json($p),
+    $regex, _desc($desc, qq{similar match for JSON Pointer "$p"}));
 }
 
 sub json_message_has {
   my ($self, $p, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{has value for JSON Pointer "$p"};
+  $desc = _desc($desc, qq{has value for JSON Pointer "$p"});
   return $self->_test('ok', $self->_json(contains => $p), $desc);
 }
 
 sub json_message_hasnt {
   my ($self, $p, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{has no value for JSON Pointer "$p"};
+  $desc = _desc($desc, qq{has no value for JSON Pointer "$p"});
   return $self->_test('ok', !$self->_json(contains => $p), $desc);
 }
 
 sub json_message_is {
   my $self = shift;
   my ($p, $data) = @_ > 1 ? (shift, shift) : ('', shift);
-  my $desc = encode 'UTF-8', shift || qq{exact match for JSON Pointer "$p"};
+  my $desc = _desc(shift, qq{exact match for JSON Pointer "$p"});
   return $self->_test('is_deeply', $self->_json(get => $p), $data, $desc);
 }
 
 sub json_message_like {
   my ($self, $p, $regex, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{similar match for JSON Pointer "$p"};
-  return $self->_test('like', $self->_json(get => $p), $regex, $desc);
+  return $self->_test('like', $self->_json(get => $p),
+    $regex, _desc($desc, qq{similar match for JSON Pointer "$p"}));
 }
 
 sub json_message_unlike {
   my ($self, $p, $regex, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{no similar match for JSON Pointer "$p"};
-  return $self->_test('unlike', $self->_json(get => $p), $regex, $desc);
+  return $self->_test('unlike', $self->_json(get => $p),
+    $regex, _desc($desc, qq{no similar match for JSON Pointer "$p"}));
 }
 
 sub json_unlike {
   my ($self, $p, $regex, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{no similar match for JSON Pointer "$p"};
-  return $self->_test('unlike', $self->tx->res->json($p), $regex, $desc);
+  return $self->_test('unlike', $self->tx->res->json($p),
+    $regex, _desc($desc, qq{no similar match for JSON Pointer "$p"}));
 }
 
 sub message_is {
   my ($self, $value, $desc) = @_;
-  return $self->_message('is', $value, $desc || 'exact match for message');
+  return $self->_message('is', $value, _desc($desc, 'exact match for 
message'));
 }
 
 sub message_isnt {
   my ($self, $value, $desc) = @_;
-  return $self->_message('isnt', $value, $desc || 'no match for message');
+  return $self->_message('isnt', $value, _desc($desc, 'no match for message'));
 }
 
 sub message_like {
   my ($self, $regex, $desc) = @_;
-  return $self->_message('like', $regex, $desc || 'message is similar');
+  return $self->_message('like', $regex, _desc($desc, 'message is similar'));
 }
 
 sub message_ok {
   my ($self, $desc) = @_;
-  return $self->_test('ok', !!$self->_wait, $desc || 'message received');
+  return $self->_test('ok', !!$self->_wait, _desc($desc, 'message received'));
 }
 
 sub message_unlike {
   my ($self, $regex, $desc) = @_;
-  return $self->_message('unlike', $regex, $desc || 'message is not similar');
+  return $self->_message('unlike', $regex,
+    _desc($desc, 'message is not similar'));
 }
 
 sub new {
@@ -266,7 +267,7 @@
 sub send_ok {
   my ($self, $msg, $desc) = @_;
 
-  $desc ||= 'send message';
+  $desc = _desc($desc, 'send message');
   return $self->_test('ok', 0, $desc) unless $self->tx->is_websocket;
 
   $self->tx->send($msg => sub { Mojo::IOLoop->stop });
@@ -276,38 +277,39 @@
 
 sub status_is {
   my ($self, $status, $desc) = @_;
-  $desc ||= "$status " . $self->tx->res->default_message($status);
+  $desc = _desc($desc, "$status " . $self->tx->res->default_message($status));
   return $self->_test('is', $self->tx->res->code, $status, $desc);
 }
 
 sub status_isnt {
   my ($self, $status, $desc) = @_;
-  $desc ||= "not $status " . $self->tx->res->default_message($status);
-  return $self->_test('isnt', $self->tx->res->code, $status, $desc);
+  return $self->_test('isnt', $self->tx->res->code,
+    $status,
+    _desc($desc, "not $status " . $self->tx->res->default_message($status)));
 }
 
 sub text_is {
   my ($self, $selector, $value, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{exact match for selector "$selector"};
-  return $self->_test('is', $self->_text($selector), $value, $desc);
+  return $self->_test('is', $self->_text($selector),
+    $value, _desc($desc, qq{exact match for selector "$selector"}));
 }
 
 sub text_isnt {
   my ($self, $selector, $value, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{no match for selector "$selector"};
-  return $self->_test('isnt', $self->_text($selector), $value, $desc);
+  return $self->_test('isnt', $self->_text($selector),
+    $value, _desc($desc, qq{no match for selector "$selector"}));
 }
 
 sub text_like {
   my ($self, $selector, $regex, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{similar match for selector "$selector"};
-  return $self->_test('like', $self->_text($selector), $regex, $desc);
+  return $self->_test('like', $self->_text($selector),
+    $regex, _desc($desc, qq{similar match for selector "$selector"}));
 }
 
 sub text_unlike {
   my ($self, $selector, $regex, $desc) = @_;
-  $desc ||= encode 'UTF-8', qq{no similar match for selector "$selector"};
-  return $self->_test('unlike', $self->_text($selector), $regex, $desc);
+  return $self->_test('unlike', $self->_text($selector),
+    $regex, _desc($desc, qq{no similar match for selector "$selector"}));
 }
 
 sub websocket_ok {
@@ -321,6 +323,8 @@
   return $self->_request_ok($self->ua->build_tx($method, $url, @_), $url);
 }
 
+sub _desc { encode 'UTF-8', shift || shift }
+
 sub _json {
   my ($self, $method, $p) = @_;
   return Mojo::JSON::Pointer->new(j(@{$self->message // []}[1]))->$method($p);
@@ -364,7 +368,7 @@
     );
     Mojo::IOLoop->start;
 
-    my $desc = encode 'UTF-8', "WebSocket handshake with $url";
+    my $desc = _desc("WebSocket handshake with $url");
     return $self->_test('ok', $self->tx->is_websocket, $desc);
   }
 
@@ -373,8 +377,7 @@
   my $err = $self->tx->error;
   Test::More::diag $err->{message}
     if !(my $ok = !$err->{message} || $err->{code}) && $err;
-  my $desc = encode 'UTF-8', "@{[uc $tx->req->method]} $url";
-  return $self->_test('ok', $ok, $desc);
+  return $self->_test('ok', $ok, _desc("@{[uc $tx->req->method]} $url"));
 }
 
 sub _test {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/script/hypnotoad 
new/Mojolicious-7.07/script/hypnotoad
--- old/Mojolicious-7.05/script/hypnotoad       2016-07-19 02:38:18.000000000 
+0200
+++ new/Mojolicious-7.07/script/hypnotoad       2016-09-18 05:52:14.000000000 
+0200
@@ -43,7 +43,7 @@
 =head1 DESCRIPTION
 
 Start L<Mojolicious> and L<Mojolicious::Lite> applications with the
-L<Mojo::Server::Hypnotoad> web server.
+L<Hypnotoad|Mojo::Server::Hypnotoad> web server.
 
 =head1 SEE ALSO
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/t/mojo/transactor.t 
new/Mojolicious-7.07/t/mojo/transactor.t
--- old/Mojolicious-7.05/t/mojo/transactor.t    2016-08-21 17:49:10.000000000 
+0200
+++ new/Mojolicious-7.07/t/mojo/transactor.t    2016-09-20 14:18:46.000000000 
+0200
@@ -720,7 +720,7 @@
 is $tx->res->headers->location, undef, 'no "Location" value';
 
 # 303 redirect (dynamic)
-$tx = $t->tx(POST => 'http://mojolicious.org/foo');
+$tx = $t->tx(PUT => 'http://mojolicious.org/foo');
 $tx->res->code(303);
 $tx->res->headers->location('http://example.com/bar');
 $tx->req->content->write_chunk('whatever' => sub { shift->finish });
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/t/mojo/user_agent_online.t 
new/Mojolicious-7.07/t/mojo/user_agent_online.t
--- old/Mojolicious-7.05/t/mojo/user_agent_online.t     2016-07-19 
02:38:18.000000000 +0200
+++ new/Mojolicious-7.07/t/mojo/user_agent_online.t     2016-09-18 
05:52:14.000000000 +0200
@@ -189,14 +189,6 @@
 is $tx->req->url,    'https://metacpan.org', 'right url';
 is $tx->res->code,   200,                    'right status';
 
-# HTTPS request that requires SNI
-SKIP: {
-  skip 'SNI support required!', 1 unless IO::Socket::SSL->can_client_sni;
-  $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
 $ua = Mojo::UserAgent->new;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojolicious-7.05/t/mojolicious/lite_app.t 
new/Mojolicious-7.07/t/mojolicious/lite_app.t
--- old/Mojolicious-7.05/t/mojolicious/lite_app.t       2016-07-19 
02:38:18.000000000 +0200
+++ new/Mojolicious-7.07/t/mojolicious/lite_app.t       2016-09-18 
05:52:14.000000000 +0200
@@ -133,7 +133,7 @@
 
 get '/null/:null' => sub {
   my $c = shift;
-  $c->render(text => $c->param('null'), layout => 'layout');
+  $c->render(text => $c->param('null'));
 };
 
 get '/action_template' => {controller => 'foo'} => sub {
@@ -284,12 +284,7 @@
 };
 
 get '/layout' => sub {
-  shift->render(
-    text    => 'Yea baby!',
-    layout  => 'layout',
-    handler => 'epl',
-    title   => 'Layout'
-  );
+  shift->render(layout => 'layout', handler => 'epl', title => 'Layout');
 };
 
 post '/template' => 'index';
@@ -622,7 +617,7 @@
 
 # Captured "0"
 $t->get_ok('/null/0')->status_is(200)
-  ->header_is(Server => 'Mojolicious (Perl)')->content_like(qr/layouted 0/);
+  ->header_is(Server => 'Mojolicious (Perl)')->content_is('0');
 
 # Render action
 $t->get_ok('/action_template')->status_is(200)
@@ -1103,6 +1098,9 @@
 @@ layouts/app23.html.ep
 app layout <%= content %><%= app->mode %>
 
+@@ layout.html.epl
+Yea baby!\
+
 @@ app.html.ep
 <% layout layout . 23; %><%= layout %>
 


Reply via email to