Hello community,
here is the log from the commit of package perl-Mojolicious for
openSUSE:Factory checked in at 2020-12-01 14:23:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Mojolicious (Old)
and /work/SRC/openSUSE:Factory/.perl-Mojolicious.new.5913 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Mojolicious"
Tue Dec 1 14:23:43 2020 rev:148 rq:852070 version:8.66
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Mojolicious/perl-Mojolicious.changes
2020-11-12 22:49:56.250802304 +0100
+++
/work/SRC/openSUSE:Factory/.perl-Mojolicious.new.5913/perl-Mojolicious.changes
2020-12-01 14:24:02.829675139 +0100
@@ -1,0 +2,21 @@
+Tue Dec 1 03:12:40 UTC 2020 - Tina Müller <[email protected]>
+
+- updated to 8.66
+ see /usr/share/doc/packages/perl-Mojolicious/Changes
+
+ 8.66 2020-11-28
+ - Deprecated logging to "log/$mode.log" (if a log directory exists) in
Mojolicious. The default will simply be STDERR
+ in the future.
+ - Added support for preloading controllers and other classes during
startup of Mojolicious applications.
+ - Added EXPERIMENTAL preload_namespaces attribute to Mojolicious.
+ - Added EXPERIMENTAL warmup method to Mojolicious.
+ - Added EXPERIMENTAL load_classes function to Mojo::Loader.
+ - Removed experimental status from humanize_bytes method in
Mojo::ByteStream.
+ - Removed experimental status from humanize_bytes function in Mojo::Util.
+ - Improved find_modules function in Mojo::Loader with recursive option.
+ - Improved Mojo::DOM::CSS to throw exceptions for unknown CSS selectors.
+ - Fixed a bug in Mojolicious::Commands where help messages would not be
displayed correctly for some commands.
+ (kiwiroy)
+ - Fixed a bug in Mojolicious::Routes::Pattern where type_start was treated
as a regex. (Grinnz)
+
+-------------------------------------------------------------------
Old:
----
Mojolicious-8.65.tar.gz
New:
----
Mojolicious-8.66.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Mojolicious.spec ++++++
--- /var/tmp/diff_new_pack.JtpyaX/_old 2020-12-01 14:24:03.237675580 +0100
+++ /var/tmp/diff_new_pack.JtpyaX/_new 2020-12-01 14:24:03.241675585 +0100
@@ -17,7 +17,7 @@
Name: perl-Mojolicious
-Version: 8.65
+Version: 8.66
Release: 0
%define cpan_name Mojolicious
Summary: Real-time web framework
++++++ Mojolicious-8.65.tar.gz -> Mojolicious-8.66.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/Changes new/Mojolicious-8.66/Changes
--- old/Mojolicious-8.65/Changes 2020-11-10 20:33:34.000000000 +0100
+++ new/Mojolicious-8.66/Changes 2020-11-30 10:37:34.000000000 +0100
@@ -1,4 +1,19 @@
+8.66 2020-11-28
+ - Deprecated logging to "log/$mode.log" (if a log directory exists) in
Mojolicious. The default will simply be STDERR
+ in the future.
+ - Added support for preloading controllers and other classes during startup
of Mojolicious applications.
+ - Added EXPERIMENTAL preload_namespaces attribute to Mojolicious.
+ - Added EXPERIMENTAL warmup method to Mojolicious.
+ - Added EXPERIMENTAL load_classes function to Mojo::Loader.
+ - Removed experimental status from humanize_bytes method in Mojo::ByteStream.
+ - Removed experimental status from humanize_bytes function in Mojo::Util.
+ - Improved find_modules function in Mojo::Loader with recursive option.
+ - Improved Mojo::DOM::CSS to throw exceptions for unknown CSS selectors.
+ - Fixed a bug in Mojolicious::Commands where help messages would not be
displayed correctly for some commands.
+ (kiwiroy)
+ - Fixed a bug in Mojolicious::Routes::Pattern where type_start was treated
as a regex. (Grinnz)
+
8.65 2020-11-10
- Added generate dockerfile command. (tianon)
- Improved cookbook with container deployment recipe.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/MANIFEST
new/Mojolicious-8.66/MANIFEST
--- old/Mojolicious-8.65/MANIFEST 2020-11-11 20:55:18.000000000 +0100
+++ new/Mojolicious-8.66/MANIFEST 2020-11-30 11:40:54.000000000 +0100
@@ -208,6 +208,10 @@
t/mojo/lib/Mojo/LoaderTest/A.pm
t/mojo/lib/Mojo/LoaderTest/B.pm
t/mojo/lib/Mojo/LoaderTest/C.pm
+t/mojo/lib/Mojo/LoaderTest/D.txt
+t/mojo/lib/Mojo/LoaderTest/E/F.pm
+t/mojo/lib/Mojo/LoaderTest/E/G.txt
+t/mojo/lib/Mojo/LoaderTestException/A.pm
t/mojo/lib/Mojo/Server/Morbo/Backend/TestBackend.pm
t/mojo/lib/Mojo/TestConnectProxy.pm
t/mojo/lib/myapp.pl
@@ -286,9 +290,9 @@
t/mojolicious/lib/MojoliciousTest/Baz.pm
t/mojolicious/lib/MojoliciousTest/Command/_test2_command.pm
t/mojolicious/lib/MojoliciousTest/Command/test_command.pm
+t/mojolicious/lib/MojoliciousTest/Controller/Foo/Bar.pm
t/mojolicious/lib/MojoliciousTest/Exceptional.pm
t/mojolicious/lib/MojoliciousTest/Foo.pm
-t/mojolicious/lib/MojoliciousTest/Foo/Bar.pm
t/mojolicious/lib/MojoliciousTest/Plugin/Test/SomePlugin2.pm
t/mojolicious/lib/MojoliciousTest/Plugin/UPPERCASETestPlugin.pm
t/mojolicious/lib/MojoliciousTest/PODTest.pm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/META.json
new/Mojolicious-8.66/META.json
--- old/Mojolicious-8.65/META.json 2020-11-11 20:55:18.000000000 +0100
+++ new/Mojolicious-8.66/META.json 2020-11-30 11:40:54.000000000 +0100
@@ -4,7 +4,7 @@
"Sebastian Riedel <[email protected]>"
],
"dynamic_config" : 0,
- "generated_by" : "ExtUtils::MakeMaker version 7.52, CPAN::Meta::Converter
version 2.150010",
+ "generated_by" : "ExtUtils::MakeMaker version 7.56, CPAN::Meta::Converter
version 2.150010",
"license" : [
"artistic_2"
],
@@ -63,6 +63,6 @@
"web" : "https://webchat.freenode.net/#mojo"
}
},
- "version" : "8.65",
+ "version" : "8.66",
"x_serialization_backend" : "JSON::PP version 4.05"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/META.yml
new/Mojolicious-8.66/META.yml
--- old/Mojolicious-8.65/META.yml 2020-11-11 20:55:18.000000000 +0100
+++ new/Mojolicious-8.66/META.yml 2020-11-30 11:40:54.000000000 +0100
@@ -7,7 +7,7 @@
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 0
-generated_by: 'ExtUtils::MakeMaker version 7.52, CPAN::Meta::Converter version
2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.56, CPAN::Meta::Converter version
2.150010'
license: artistic_2
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -34,5 +34,5 @@
homepage: https://mojolicious.org
license: http://www.opensource.org/licenses/artistic-license-2.0
repository: https://github.com/mojolicious/mojo.git
-version: '8.65'
+version: '8.66'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/ByteStream.pm
new/Mojolicious-8.66/lib/Mojo/ByteStream.pm
--- old/Mojolicious-8.65/lib/Mojo/ByteStream.pm 2020-10-24 13:05:06.000000000
+0200
+++ new/Mojolicious-8.66/lib/Mojo/ByteStream.pm 2020-11-30 10:38:10.000000000
+0100
@@ -200,8 +200,7 @@
$stream = $stream->humanize_bytes;
-Turn number of bytes into a simplified human readable format for bytestream
with L<Mojo::Util/"humanize_bytes">. Note
-that this method is B<EXPERIMENTAL> and might change without warning!
+Turn number of bytes into a simplified human readable format for bytestream
with L<Mojo::Util/"humanize_bytes">.
=head2 md5_bytes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/DOM/CSS.pm
new/Mojolicious-8.66/lib/Mojo/DOM/CSS.pm
--- old/Mojolicious-8.65/lib/Mojo/DOM/CSS.pm 2020-10-28 21:12:36.000000000
+0100
+++ new/Mojolicious-8.66/lib/Mojo/DOM/CSS.pm 2020-11-30 10:38:17.000000000
+0100
@@ -1,6 +1,7 @@
package Mojo::DOM::CSS;
use Mojo::Base -base;
+use Carp qw(croak);
use Mojo::Util qw(dumper trim);
use constant DEBUG => $ENV{MOJO_DOM_CSS_DEBUG} || 0;
@@ -129,7 +130,7 @@
push @$last, ['tag', $name eq '*' ? undef : _name($name),
_unescape($ns)];
}
- else {last}
+ else { pos $css < length $css ? croak "Unknown CSS selector: $css" : last }
}
warn qq{-- CSS Selector ($css)\n@{[dumper $group]}} if DEBUG;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/Exception.pm
new/Mojolicious-8.66/lib/Mojo/Exception.pm
--- old/Mojolicious-8.65/lib/Mojo/Exception.pm 2020-10-24 13:05:02.000000000
+0200
+++ new/Mojolicious-8.66/lib/Mojo/Exception.pm 2020-11-30 10:38:05.000000000
+0100
@@ -65,7 +65,7 @@
}
# Search for context in sources
- $self->_context($files[-1][1], [map { [split "\n"] } @sources]) if @sources;
+ $self->_context($files[-1][1], [map { [split /\n/] } @sources]) if @sources;
return $self;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/Home.pm
new/Mojolicious-8.66/lib/Mojo/Home.pm
--- old/Mojolicious-8.65/lib/Mojo/Home.pm 2020-10-24 13:05:05.000000000
+0200
+++ new/Mojolicious-8.66/lib/Mojo/Home.pm 2020-11-30 10:38:09.000000000
+0100
@@ -13,7 +13,7 @@
# Location of the application class (Windows mixes backslash and slash)
elsif ($class && (my $path = $INC{my $file = class_to_path $class})) {
$home = Mojo::File->new($path)->to_array;
- splice @$home, (my @dummy = split('/', $file)) * -1;
+ splice @$home, (my @dummy = split(/\//, $file)) * -1;
@$home && $home->[-1] eq $_ && pop @$home for qw(lib blib);
}
@@ -21,7 +21,7 @@
return $self;
}
-sub rel_file { shift->child(split('/', shift)) }
+sub rel_file { shift->child(split(/\//, shift)) }
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/JSON/Pointer.pm
new/Mojolicious-8.66/lib/Mojo/JSON/Pointer.pm
--- old/Mojolicious-8.65/lib/Mojo/JSON/Pointer.pm 2020-10-24
13:05:11.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojo/JSON/Pointer.pm 2020-11-30
10:38:14.000000000 +0100
@@ -13,7 +13,7 @@
my $data = $self->data;
return length $pointer ? undef : $get ? $data : 1 unless $pointer =~ s!^/!!;
- for my $p (length $pointer ? (split '/', $pointer, -1) : ($pointer)) {
+ for my $p (length $pointer ? (split /\//, $pointer, -1) : ($pointer)) {
$p =~ s!~1!/!g;
$p =~ s/~0/~/g;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/JSON.pm
new/Mojolicious-8.66/lib/Mojo/JSON.pm
--- old/Mojolicious-8.65/lib/Mojo/JSON.pm 2020-10-24 13:05:19.000000000
+0200
+++ new/Mojolicious-8.66/lib/Mojo/JSON.pm 2020-11-30 10:38:21.000000000
+0100
@@ -268,7 +268,7 @@
my $context = 'Malformed JSON: ' . shift;
if (m/\G\z/gc) { $context .= ' before end of data' }
else {
- my @lines = split "\n", substr($_, 0, pos);
+ my @lines = split /\n/, substr($_, 0, pos);
$context .= ' at line ' . @lines . ', offset ' . length(pop @lines || '');
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/Loader.pm
new/Mojolicious-8.66/lib/Mojo/Loader.pm
--- old/Mojolicious-8.65/lib/Mojo/Loader.pm 2020-10-24 13:05:13.000000000
+0200
+++ new/Mojolicious-8.66/lib/Mojo/Loader.pm 2020-11-30 10:38:16.000000000
+0100
@@ -6,7 +6,7 @@
use Mojo::File qw(path);
use Mojo::Util qw(b64_decode class_to_path);
-our @EXPORT_OK = qw(data_section file_is_binary find_modules find_packages
load_class);
+our @EXPORT_OK = qw(data_section file_is_binary find_modules find_packages
load_class load_classes);
my (%BIN, %CACHE);
@@ -15,12 +15,17 @@
sub file_is_binary { keys %{_all($_[0])} ? !!$BIN{$_[0]}{$_[1]} : undef }
sub find_modules {
- my $ns = shift;
+ my ($ns, $options) = (shift, shift // {});
+
+ my @ns = split /::/, $ns;
+ my @inc = grep { -d $$_ } map { path($_, @ns) } @INC;
my %modules;
- for my $directory (@INC) {
- next unless -d (my $path = path($directory, split(/::|'/, $ns)));
- $modules{"${ns}::$_"}++ for $path->list->grep(qr/\.pm$/)->map('basename',
'.pm')->each;
+ for my $dir (@inc) {
+ for my $file ($options->{recursive} ? $dir->list_tree->each :
$dir->list->each) {
+ next unless $$file =~ s/\.pm$//;
+ $modules{join('::', $ns, @{$file->to_rel($$dir)})}++;
+ }
}
return sort keys %modules;
@@ -48,6 +53,18 @@
return Mojo::Exception->new($@)->inspect;
}
+sub load_classes {
+ my $ns = shift;
+
+ my @classes;
+ for my $module (find_modules($ns, {recursive => 1})) {
+ push @classes, $module unless my $e = load_class($module);
+ die $e if ref $e;
+ }
+
+ return @classes;
+}
+
sub _all {
my $class = shift;
@@ -153,8 +170,21 @@
=head2 find_modules
my @modules = find_modules 'MyApp::Namespace';
+ my @modules = find_modules 'MyApp::Namespace', {recursive => 1};
+
+Search for modules in a namespace.
-Search for modules in a namespace non-recursively.
+These options are currently available:
+
+=over 2
+
+=item recursive
+
+ recursive => 1
+
+Search namespace recursively.
+
+=back
=head2 load_class
@@ -169,6 +199,13 @@
die ref $e ? "Exception: $e" : 'Not found!';
}
+=head2 load_classes
+
+ my @classes = load_classes 'Foo::Bar';
+
+Load all classes in a namespace recursively. Note that this function is
B<EXPERIMENTAL> and might change without
+warning!
+
=head1 SEE ALSO
L<Mojolicious>, L<Mojolicious::Guides>, L<https://mojolicious.org>.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/Parameters.pm
new/Mojolicious-8.66/lib/Mojo/Parameters.pm
--- old/Mojolicious-8.65/lib/Mojo/Parameters.pm 2020-10-24 13:05:13.000000000
+0200
+++ new/Mojolicious-8.66/lib/Mojo/Parameters.pm 2020-11-30 10:38:16.000000000
+0100
@@ -78,7 +78,7 @@
return $pairs unless length $str;
my $charset = $self->charset;
- for my $pair (split '&', $str) {
+ for my $pair (split /&/, $str) {
next unless $pair =~ /^([^=]+)(?:=(.*))?$/;
my ($name, $value) = ($1, $2 // '');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/Path.pm
new/Mojolicious-8.66/lib/Mojo/Path.pm
--- old/Mojolicious-8.65/lib/Mojo/Path.pm 2020-10-24 13:05:18.000000000
+0200
+++ new/Mojolicious-8.66/lib/Mojo/Path.pm 2020-11-30 10:38:20.000000000
+0100
@@ -107,7 +107,7 @@
$path = decode($charset, $path) // $path if $charset;
$self->{leading_slash} = $path =~ s!^/!!;
$self->{trailing_slash} = $path =~ s!/$!!;
- $self->{parts} = [split '/', $path, -1];
+ $self->{parts} = [split /\//, $path, -1];
}
return $self->{$name} unless @_;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/Promise.pm
new/Mojolicious-8.66/lib/Mojo/Promise.pm
--- old/Mojolicious-8.65/lib/Mojo/Promise.pm 2020-11-09 12:44:30.000000000
+0100
+++ new/Mojolicious-8.66/lib/Mojo/Promise.pm 2020-11-30 10:38:06.000000000
+0100
@@ -10,6 +10,8 @@
has ioloop => sub { Mojo::IOLoop->singleton }, weak => 1;
+sub AWAIT_CHAIN_CANCEL { }
+
sub AWAIT_CLONE { _await('clone', @_) }
sub AWAIT_DONE { shift->resolve(@_) }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/Server/Daemon.pm
new/Mojolicious-8.66/lib/Mojo/Server/Daemon.pm
--- old/Mojolicious-8.65/lib/Mojo/Server/Daemon.pm 2020-10-24
13:05:10.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojo/Server/Daemon.pm 2020-11-30
10:38:13.000000000 +0100
@@ -16,7 +16,7 @@
has inactivity_timeout => sub { $ENV{MOJO_INACTIVITY_TIMEOUT} // 30 };
has ioloop => sub { Mojo::IOLoop->singleton };
has keep_alive_timeout => sub { $ENV{MOJO_KEEP_ALIVE_TIMEOUT} // 5 };
-has listen => sub { [split ',', $ENV{MOJO_LISTEN} ||
'http://*:3000'] };
+has listen => sub { [split /,/, $ENV{MOJO_LISTEN} ||
'http://*:3000'] };
has max_requests => 100;
sub DESTROY {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/Template.pm
new/Mojolicious-8.66/lib/Mojo/Template.pm
--- old/Mojolicious-8.65/lib/Mojo/Template.pm 2020-11-09 13:06:50.000000000
+0100
+++ new/Mojolicious-8.66/lib/Mojo/Template.pm 2020-11-30 10:38:15.000000000
+0100
@@ -59,7 +59,7 @@
# Split lines
my $op = 'text';
my ($trimming, $capture);
- for my $line (split "\n", $template) {
+ for my $line (split /\n/, $template) {
# Turn Perl line into mixed line
if ($op eq 'text' && $line =~ $line_re) {
@@ -188,7 +188,7 @@
# Text (quote and fix line ending)
if ($op eq 'text') {
- $value = join "\n", map { quotemeta $_ } split("\n", $value, -1);
+ $value = join "\n", map { quotemeta $_ } split(/\n/, $value, -1);
$value .= '\n' if $newline;
$blocks[-1] .= "\$_O .= \"" . $value . "\";" if length $value;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/Transaction/WebSocket.pm
new/Mojolicious-8.66/lib/Mojo/Transaction/WebSocket.pm
--- old/Mojolicious-8.65/lib/Mojo/Transaction/WebSocket.pm 2020-10-24
13:05:03.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojo/Transaction/WebSocket.pm 2020-11-30
10:38:06.000000000 +0100
@@ -151,7 +151,7 @@
sub with_protocols {
my $self = shift;
- my %protos = map { trim($_) => 1 } split ',',
$self->req->headers->sec_websocket_protocol // '';
+ my %protos = map { trim($_) => 1 } split /,/,
$self->req->headers->sec_websocket_protocol // '';
return undef unless defined(my $proto = first { $protos{$_} } @_);
$self->res->headers->sec_websocket_protocol($proto);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/UserAgent/Proxy.pm
new/Mojolicious-8.66/lib/Mojo/UserAgent/Proxy.pm
--- old/Mojolicious-8.65/lib/Mojo/UserAgent/Proxy.pm 2020-10-24
13:05:04.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojo/UserAgent/Proxy.pm 2020-11-30
10:38:07.000000000 +0100
@@ -9,7 +9,7 @@
my $self = shift;
$self->http($ENV{HTTP_PROXY} || $ENV{http_proxy});
$self->https($ENV{HTTPS_PROXY} || $ENV{https_proxy});
- return $self->not([split ',', $ENV{NO_PROXY} || $ENV{no_proxy} || '']);
+ return $self->not([split /,/, $ENV{NO_PROXY} || $ENV{no_proxy} || '']);
}
sub is_needed {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/UserAgent.pm
new/Mojolicious-8.66/lib/Mojo/UserAgent.pm
--- old/Mojolicious-8.65/lib/Mojo/UserAgent.pm 2020-10-27 18:31:19.000000000
+0100
+++ new/Mojolicious-8.66/lib/Mojo/UserAgent.pm 2020-11-30 10:38:09.000000000
+0100
@@ -109,7 +109,7 @@
@options{qw(socks_address socks_port)} = @options{qw(address port)};
($proto, @options{qw(address port)}) = $t->endpoint($tx);
my $userinfo = $tx->req->via_proxy(0)->proxy->userinfo;
- @options{qw(socks_user socks_pass)} = split ':', $userinfo if $userinfo;
+ @options{qw(socks_user socks_pass)} = split /:/, $userinfo if $userinfo;
}
# TLS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojo/Util.pm
new/Mojolicious-8.66/lib/Mojo/Util.pm
--- old/Mojolicious-8.65/lib/Mojo/Util.pm 2020-11-10 16:16:09.000000000
+0100
+++ new/Mojolicious-8.66/lib/Mojo/Util.pm 2020-11-30 10:38:10.000000000
+0100
@@ -44,7 +44,7 @@
open my $file, '<', $path or croak "Unable to open html entities file
($path): $!";
my $lines = do { local $/; <$file> };
- for my $line (split "\n", $lines) {
+ for my $line (split /\n/, $lines) {
next unless $line =~ /^(\S+)\s+U\+(\S+)(?:\s+U\+(\S+))?/;
$ENTITIES{$1} = defined $3 ? (chr(hex $2) . chr(hex $3)) : chr(hex $2);
}
@@ -91,8 +91,8 @@
# CamelCase words
return join '::', map {
- join('', map { ucfirst lc } split '_')
- } split '-', $str;
+ join('', map { ucfirst lc } split /_/)
+ } split /-/, $str;
}
sub class_to_file {
@@ -111,7 +111,7 @@
# snake_case words
return join '-', map {
join('_', map {lc} grep {length} split /([A-Z]{1}[^A-Z]*)/)
- } split '::', $str;
+ } split /::/, $str;
}
sub decode {
@@ -193,7 +193,7 @@
my ($n, $i, $bias, @output) = (PC_INITIAL_N, 0, PC_INITIAL_BIAS);
# Consume all code points before the last delimiter
- push @output, split('', $1) if $input =~ s/(.*)\x2d//s;
+ push @output, split(//, $1) if $input =~ s/(.*)\x2d//s;
while (length $input) {
my ($oldi, $w) = ($i, 1);
@@ -226,7 +226,7 @@
my ($n, $delta, $bias) = (PC_INITIAL_N, 0, PC_INITIAL_BIAS);
# Extract basic code points
- my @input = map {ord} split '', $output;
+ my @input = map {ord} split //, $output;
$output =~ s/[^\x00-\x7f]+//gs;
my $h = my $basic = length $output;
$output .= "\x2d" if $basic > 0;
@@ -334,7 +334,7 @@
sub unindent {
my $str = shift;
- my $min = min map { m/^([ \t]*)/; length $1 || () } split "\n", $str;
+ my $min = min map { m/^([ \t]*)/; length $1 || () } split /\n/, $str;
$str =~ s/^[ \t]{0,$min}//gm if $min;
return $str;
}
@@ -710,8 +710,7 @@
my $str = humanize_bytes 1234;
-Turn number of bytes into a simplified human readable format. Note that this
function is B<EXPERIMENTAL> and might
-change without warning!
+Turn number of bytes into a simplified human readable format.
# "1B"
humanize_bytes 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Mojolicious-8.65/lib/Mojolicious/Command/Author/generate/plugin.pm
new/Mojolicious-8.66/lib/Mojolicious/Command/Author/generate/plugin.pm
--- old/Mojolicious-8.65/lib/Mojolicious/Command/Author/generate/plugin.pm
2020-10-24 13:05:25.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojolicious/Command/Author/generate/plugin.pm
2020-11-30 10:38:27.000000000 +0100
@@ -14,7 +14,7 @@
# Class
my $name = $args[0] // 'MyPlugin';
my $class = $full ? $name : "Mojolicious::Plugin::$name";
- my $dir = join '-', split('::', $class);
+ my $dir = join '-', split(/::/, $class);
my $app = class_to_path $class;
$self->render_to_rel_file('class', "$dir/lib/$app", {class => $class, name
=> $name});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojolicious/Command.pm
new/Mojolicious-8.66/lib/Mojolicious/Command.pm
--- old/Mojolicious-8.65/lib/Mojolicious/Command.pm 2020-10-24
13:05:20.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojolicious/Command.pm 2020-11-30
10:38:22.000000000 +0100
@@ -34,7 +34,7 @@
sub help { print shift->usage }
-sub rel_file { path->child(split('/', pop)) }
+sub rel_file { path->child(split(/\//, pop)) }
sub render_data {
my ($self, $name) = (shift, shift);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojolicious/Commands.pm
new/Mojolicious-8.66/lib/Mojolicious/Commands.pm
--- old/Mojolicious-8.65/lib/Mojolicious/Commands.pm 2020-11-09
20:04:57.000000000 +0100
+++ new/Mojolicious-8.66/lib/Mojolicious/Commands.pm 2020-11-30
10:38:30.000000000 +0100
@@ -35,11 +35,11 @@
# Run command
if ($name && $name =~ /^\w[\w-]+$/ && ($name ne 'help' || $args[0])) {
- $name =~ s/-/_/g;
# Help
$name = shift @args if my $help = $name eq 'help';
local $ENV{MOJO_HELP} = $help = $ENV{MOJO_HELP} || $help;
+ $name =~ s/-/_/g;
# Remove options shared by all commands before loading the command
_args(\@args);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojolicious/Guides/Tutorial.pod
new/Mojolicious-8.66/lib/Mojolicious/Guides/Tutorial.pod
--- old/Mojolicious-8.65/lib/Mojolicious/Guides/Tutorial.pod 2020-08-19
22:42:23.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojolicious/Guides/Tutorial.pod 2020-11-28
18:47:21.000000000 +0100
@@ -912,14 +912,10 @@
The default operating mode will usually be C<development> and can be changed
with command line options or the
C<MOJO_MODE> and C<PLACK_ENV> environment variables. A mode other than
C<development> will raise the log level from
-C<debug> to C<info>.
+C<debug> to C<info>. All messages will be written to C<STDERR> by default.
$ ./myapp.pl daemon -m production
-All messages will be written to C<STDERR> or a C<log/$mode.log> file if a
C<log> directory exists.
-
- $ mkdir log
-
Mode changes also affect a few other aspects of the framework, such as the
built-in C<exception> and C<not_found>
pages. Once you switch modes from C<development> to C<production>, no
sensitive information will be revealed on those
pages anymore.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojolicious/Renderer.pm
new/Mojolicious-8.66/lib/Mojolicious/Renderer.pm
--- old/Mojolicious-8.65/lib/Mojolicious/Renderer.pm 2020-10-24
13:05:21.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojolicious/Renderer.pm 2020-11-30
10:38:23.000000000 +0100
@@ -141,7 +141,7 @@
# Normal default template
my $stash = $c->stash;
my ($controller, $action) = @$stash{qw(controller action)};
- return join '/', split('-', decamelize $controller), $action if $controller
&& $action;
+ return join '/', split(/-/, decamelize $controller), $action if $controller
&& $action;
# Try the route name if we don't have controller and action
return undef unless my $route = $c->match->endpoint;
@@ -178,7 +178,7 @@
sub template_path {
my ($self, $options) = @_;
return undef unless my $name = $self->template_name($options);
- my @parts = split '/', $name;
+ my @parts = split /\//, $name;
-r and return $_ for map { path($_, @parts)->to_string } @{$self->paths},
$TEMPLATES;
return undef;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojolicious/Routes/Pattern.pm
new/Mojolicious-8.66/lib/Mojolicious/Routes/Pattern.pm
--- old/Mojolicious-8.65/lib/Mojolicious/Routes/Pattern.pm 2020-10-24
13:05:28.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojolicious/Routes/Pattern.pm 2020-11-30
10:38:30.000000000 +0100
@@ -71,7 +71,7 @@
# Placeholder
else {
- my $name = (split $start, $value)[0] // '';
+ my $name = (split /\Q$start/, $value)[0] // '';
my $default = $self->defaults->{$name};
$part = $values->{$name} // $default // '';
if (!defined $default || ($default ne $part)) { $optional = 0 }
@@ -165,7 +165,7 @@
my $wildcard = $self->wildcard_start;
my (@tree, $spec, $more);
- for my $char (split '', $pattern) {
+ for my $char (split //, $pattern) {
# Quoted
if ($char eq $quote_start) { push @tree, ['placeholder', ''] if ++$spec
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojolicious/Static.pm
new/Mojolicious-8.66/lib/Mojolicious/Static.pm
--- old/Mojolicious-8.65/lib/Mojolicious/Static.pm 2020-10-24
13:05:23.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojolicious/Static.pm 2020-11-30
10:38:25.000000000 +0100
@@ -41,7 +41,7 @@
my ($self, $rel) = @_;
# Search all paths
- my @parts = split '/', $rel;
+ my @parts = split /\//, $rel;
for my $path (@{$self->paths}) {
next unless my $asset = _get_file(path($path, @parts)->to_string);
return $asset;
@@ -70,7 +70,7 @@
# If-None-Match
$etag //= $res_headers->etag // '';
- return undef if $match && !grep { $_ eq $etag || "W/$_" eq $etag } map {
trim($_) } split ',', $match;
+ return undef if $match && !grep { $_ eq $etag || "W/$_" eq $etag } map {
trim($_) } split /,/, $match;
# If-Modified-Since
return !!$match unless ($last //= $res_headers->last_modified) && $since;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojolicious/Types.pm
new/Mojolicious-8.66/lib/Mojolicious/Types.pm
--- old/Mojolicious-8.65/lib/Mojolicious/Types.pm 2020-10-24
13:05:23.000000000 +0200
+++ new/Mojolicious-8.66/lib/Mojolicious/Types.pm 2020-11-30
10:38:25.000000000 +0100
@@ -50,7 +50,7 @@
# Extract and prioritize MIME types
my %types;
- /^\s*([^,; ]+)(?:\s*\;\s*q\s*=\s*(\d+(?:\.\d+)?))?\s*$/i and $types{lc $1} =
$2 // 1 for split ',', $accept // '';
+ /^\s*([^,; ]+)(?:\s*\;\s*q\s*=\s*(\d+(?:\.\d+)?))?\s*$/i and $types{lc $1} =
$2 // 1 for split /,/, $accept // '';
my @detected = sort { $types{$b} <=> $types{$a} } sort keys %types;
# Detect extensions from MIME types
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/lib/Mojolicious.pm
new/Mojolicious-8.66/lib/Mojolicious.pm
--- old/Mojolicious-8.65/lib/Mojolicious.pm 2020-11-10 16:19:27.000000000
+0100
+++ new/Mojolicious-8.66/lib/Mojolicious.pm 2020-11-30 10:38:05.000000000
+0100
@@ -6,6 +6,7 @@
use Mojo::DynamicMethods -dispatch;
use Mojo::Exception;
use Mojo::Home;
+use Mojo::Loader;
use Mojo::Log;
use Mojo::Util;
use Mojo::UserAgent;
@@ -26,23 +27,28 @@
has log => sub {
my $self = shift;
- # Check if we have a log directory that is writable
+ my $mode = $self->mode;
my $log = Mojo::Log->new;
+
+ # DEPRECATED!
my $home = $self->home;
- my $mode = $self->mode;
- $log->path($home->child('log', "$mode.log")) if -d $home->child('log') && -w
_;
+ if (-d $home->child('log') && -w _) {
+ $log->path($home->child('log', "$mode.log"));
+ Mojo::Util::deprecated(qq{Logging to "log/$mode.log" is DEPRECATED});
+ }
# Reduced log output outside of development mode
return $log->level($ENV{MOJO_LOG_LEVEL}) if $ENV{MOJO_LOG_LEVEL};
return $mode eq 'development' ? $log : $log->level('info');
};
has 'max_request_size';
-has mode => sub { $ENV{MOJO_MODE} || $ENV{PLACK_ENV} || 'development' };
-has moniker => sub { Mojo::Util::decamelize ref shift };
-has plugins => sub { Mojolicious::Plugins->new };
-has renderer => sub { Mojolicious::Renderer->new };
-has routes => sub { Mojolicious::Routes->new };
-has secrets => sub {
+has mode => sub { $ENV{MOJO_MODE} || $ENV{PLACK_ENV} ||
'development' };
+has moniker => sub { Mojo::Util::decamelize ref shift };
+has plugins => sub { Mojolicious::Plugins->new };
+has preload_namespaces => sub { [] };
+has renderer => sub { Mojolicious::Renderer->new };
+has routes => sub { Mojolicious::Routes->new };
+has secrets => sub {
my $self = shift;
# Warn developers about insecure default
@@ -58,7 +64,7 @@
has validator => sub { Mojolicious::Validator->new };
our $CODENAME = 'Supervillain';
-our $VERSION = '8.65';
+our $VERSION = '8.66';
sub BUILD_DYNAMIC {
my ($class, $method, $dyn_methods) = @_;
@@ -156,7 +162,8 @@
push @{$self->static->paths}, $home->child('public')->to_string;
# Default to controller and application namespace
- my $r = $self->routes->namespaces(["@{[ref $self]}::Controller", ref $self]);
+ my $controller = "@{[ref $self]}::Controller";
+ my $r =
$self->preload_namespaces([$controller])->routes->namespaces([$controller, ref
$self]);
# Hide controller attributes/methods
$r->hide(qw(app continue cookie every_cookie every_param every_signed_cookie
finish helpers match on param render));
@@ -169,6 +176,7 @@
$self->hook(around_dispatch => \&_exception);
$self->startup;
+ $self->warmup;
return $self;
}
@@ -188,6 +196,8 @@
sub startup { }
+sub warmup { Mojo::Loader::load_classes $_ for @{shift->preload_namespaces} }
+
sub _action {
my ($next, $c, $action, $last) = @_;
my $val = $action->($c);
@@ -400,7 +410,7 @@
The logging layer of your application, defaults to a L<Mojo::Log> object. The
level will default to either the
C<MOJO_LOG_LEVEL> environment variable, C<debug> if the L</mode> is
C<development>, or C<info> otherwise. All messages
-will be written to C<STDERR>, or a C<log/$mode.log> file if a C<log> directory
exists.
+will be written to C<STDERR> by default.
# Log debug message
$app->log->debug('It works');
@@ -442,6 +452,14 @@
# Add another namespace to load plugins from
push @{$app->plugins->namespaces}, 'MyApp::Plugin';
+=head2 preload_namespaces
+
+ my $namespaces = $app->preload_namespaces;
+ $app = $app->preload_namespaces(['MyApp:Controller']);
+
+Namespaces to preload classes from during application startup. Note that this
attribute is B<EXPERIMENTAL> and might
+change without warning!
+
=head2 renderer
my $renderer = $app->renderer;
@@ -715,6 +733,13 @@
sub startup ($self) {...}
+=head2 warmup
+
+ $app->warmup;
+
+Preload classes from L</"preload_namespaces"> for future use. Note that this
method is B<EXPERIMENTAL> and might change
+without warning!
+
=head1 HELPERS
In addition to the L</"ATTRIBUTES"> and L</"METHODS"> above you can also call
helpers on L<Mojolicious> objects. This
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojo/dom.t
new/Mojolicious-8.66/t/mojo/dom.t
--- old/Mojolicious-8.65/t/mojo/dom.t 2020-10-28 21:15:18.000000000 +0100
+++ new/Mojolicious-8.66/t/mojo/dom.t 2020-11-30 10:37:34.000000000 +0100
@@ -2918,4 +2918,12 @@
is $dom->at(':scope:first-child'), undef, 'no result';
};
+subtest 'Unknown CSS selector' => sub {
+ my $dom =
Mojo::DOM->new('<html><head></head><body><div><div>x</div></div></body></html>');
+ eval { $dom->at('div[') };
+ like $@, qr/Unknown CSS selector: div\[/, 'right error';
+ eval { $dom->find('p[') };
+ like $@, qr/Unknown CSS selector: p\[/, 'right error';
+};
+
done_testing();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojo/file.t
new/Mojolicious-8.66/t/mojo/file.t
--- old/Mojolicious-8.65/t/mojo/file.t 2020-10-24 13:04:02.000000000 +0200
+++ new/Mojolicious-8.66/t/mojo/file.t 2020-11-30 10:38:47.000000000 +0100
@@ -239,33 +239,35 @@
is_deeply path('does_not_exist')->list->to_array, [], 'no files';
is_deeply curfile->list->to_array, [], 'no files';
my $lib = curfile->sibling('lib', 'Mojo');
- my @files = map { path($lib)->child(split '/') }
+ my @files = map { path($lib)->child(split /\//) }
('DeprecationTest.pm', 'LoaderException.pm', 'LoaderException2.pm',
'TestConnectProxy.pm');
is_deeply path($lib)->list->map('to_string')->to_array, \@files, 'right
files';
unshift @files, $lib->child('.hidden.txt')->to_string;
is_deeply path($lib)->list({hidden => 1})->map('to_string')->to_array,
\@files, 'right files';
- @files = map { path($lib)->child(split '/') } (
- 'BaseTest', 'DeprecationTest.pm', 'LoaderException.pm',
'LoaderException2.pm',
- 'LoaderTest', 'Server', 'TestConnectProxy.pm'
+ @files = map { path($lib)->child(split /\//) } (
+ 'BaseTest', 'DeprecationTest.pm', 'LoaderException.pm',
'LoaderException2.pm',
+ 'LoaderTest', 'LoaderTestException', 'Server',
'TestConnectProxy.pm'
);
is_deeply path($lib)->list({dir => 1})->map('to_string')->to_array, \@files,
'right files';
- my @hidden = map { path($lib)->child(split '/') } '.hidden.txt', '.test';
+ my @hidden = map { path($lib)->child(split /\//) } '.hidden.txt', '.test';
is_deeply path($lib)->list({dir => 1, hidden =>
1})->map('to_string')->to_array, [@hidden, @files], 'right files';
is_deeply path('does_not_exist')->list_tree->to_array, [], 'no files';
is_deeply curfile->list_tree->to_array, [], 'no files';
- @files = map { path($lib)->child(split '/') } (
- 'BaseTest/Base1.pm', 'BaseTest/Base2.pm',
- 'BaseTest/Base3.pm', 'DeprecationTest.pm',
- 'LoaderException.pm', 'LoaderException2.pm',
- 'LoaderTest/A.pm', 'LoaderTest/B.pm',
- 'LoaderTest/C.pm', 'Server/Morbo/Backend/TestBackend.pm',
+ @files = map { path($lib)->child(split /\//) } (
+ 'BaseTest/Base1.pm', 'BaseTest/Base2.pm',
+ 'BaseTest/Base3.pm', 'DeprecationTest.pm',
+ 'LoaderException.pm', 'LoaderException2.pm',
+ 'LoaderTest/A.pm', 'LoaderTest/B.pm',
+ 'LoaderTest/C.pm', 'LoaderTest/D.txt',
+ 'LoaderTest/E/F.pm', 'LoaderTest/E/G.txt',
+ 'LoaderTestException/A.pm', 'Server/Morbo/Backend/TestBackend.pm',
'TestConnectProxy.pm'
);
is_deeply path($lib)->list_tree->map('to_string')->to_array, \@files, 'right
files';
- @hidden = map { path($lib)->child(split '/') } '.hidden.txt',
'.test/hidden.txt';
+ @hidden = map { path($lib)->child(split /\//) } '.hidden.txt',
'.test/hidden.txt';
is_deeply path($lib)->list_tree({hidden => 1})->map('to_string')->to_array,
[@hidden, @files], 'right files';
- my @all = map { path($lib)->child(split '/') } (
+ my @all = map { path($lib)->child(split /\//) } (
'.hidden.txt', '.test',
'.test/hidden.txt', 'BaseTest',
'BaseTest/Base1.pm', 'BaseTest/Base2.pm',
@@ -273,31 +275,35 @@
'LoaderException.pm', 'LoaderException2.pm',
'LoaderTest', 'LoaderTest/A.pm',
'LoaderTest/B.pm', 'LoaderTest/C.pm',
+ 'LoaderTest/D.txt', 'LoaderTest/E',
+ 'LoaderTest/E/F.pm', 'LoaderTest/E/G.txt',
+ 'LoaderTestException', 'LoaderTestException/A.pm',
'Server', 'Server/Morbo',
'Server/Morbo/Backend', 'Server/Morbo/Backend/TestBackend.pm',
'TestConnectProxy.pm'
);
is_deeply path($lib)->list_tree({dir => 1, hidden =>
1})->map('to_string')->to_array, [@all], 'right files';
- my @one = map { path($lib)->child(split '/') }
+ my @one = map { path($lib)->child(split /\//) }
('DeprecationTest.pm', 'LoaderException.pm', 'LoaderException2.pm',
'TestConnectProxy.pm');
is_deeply path($lib)->list_tree({max_depth =>
1})->map('to_string')->to_array, [@one], 'right files';
- my @one_dir = map { path($lib)->child(split '/') } (
- 'BaseTest', 'DeprecationTest.pm', 'LoaderException.pm',
'LoaderException2.pm',
- 'LoaderTest', 'Server', 'TestConnectProxy.pm'
+ my @one_dir = map { path($lib)->child(split /\//) } (
+ 'BaseTest', 'DeprecationTest.pm', 'LoaderException.pm',
'LoaderException2.pm',
+ 'LoaderTest', 'LoaderTestException', 'Server',
'TestConnectProxy.pm'
);
is_deeply path($lib)->list_tree({dir => 1, max_depth =>
1})->map('to_string')->to_array, [@one_dir], 'right files';
- my @two = map { path($lib)->child(split '/') } (
- 'BaseTest/Base1.pm', 'BaseTest/Base2.pm', 'BaseTest/Base3.pm',
'DeprecationTest.pm',
- 'LoaderException.pm', 'LoaderException2.pm', 'LoaderTest/A.pm',
'LoaderTest/B.pm',
- 'LoaderTest/C.pm', 'TestConnectProxy.pm'
+ my @two = map { path($lib)->child(split /\//) } (
+ 'BaseTest/Base1.pm', 'BaseTest/Base2.pm', 'BaseTest/Base3.pm',
'DeprecationTest.pm',
+ 'LoaderException.pm', 'LoaderException2.pm', 'LoaderTest/A.pm',
'LoaderTest/B.pm',
+ 'LoaderTest/C.pm', 'LoaderTest/D.txt', 'LoaderTestException/A.pm',
'TestConnectProxy.pm'
);
is_deeply path($lib)->list_tree({max_depth =>
2})->map('to_string')->to_array, [@two], 'right files';
- my @three = map { path($lib)->child(split '/') } (
- '.hidden.txt', '.test', '.test/hidden.txt',
'BaseTest',
- 'BaseTest/Base1.pm', 'BaseTest/Base2.pm', 'BaseTest/Base3.pm',
'DeprecationTest.pm',
- 'LoaderException.pm', 'LoaderException2.pm', 'LoaderTest',
'LoaderTest/A.pm',
- 'LoaderTest/B.pm', 'LoaderTest/C.pm', 'Server',
'Server/Morbo',
- 'Server/Morbo/Backend', 'TestConnectProxy.pm'
+ my @three = map { path($lib)->child(split /\//) } (
+ '.hidden.txt', '.test', '.test/hidden.txt',
'BaseTest',
+ 'BaseTest/Base1.pm', 'BaseTest/Base2.pm', 'BaseTest/Base3.pm',
'DeprecationTest.pm',
+ 'LoaderException.pm', 'LoaderException2.pm', 'LoaderTest',
'LoaderTest/A.pm',
+ 'LoaderTest/B.pm', 'LoaderTest/C.pm', 'LoaderTest/D.txt',
'LoaderTest/E',
+ 'LoaderTest/E/F.pm', 'LoaderTest/E/G.txt', 'LoaderTestException',
'LoaderTestException/A.pm',
+ 'Server', 'Server/Morbo', 'Server/Morbo/Backend',
'TestConnectProxy.pm'
);
is_deeply path($lib)->list_tree({dir => 1, hidden => 1, max_depth =>
3})->map('to_string')->to_array, [@three],
'right files';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/A.pm
new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/A.pm
--- old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/A.pm 2020-05-21
23:27:22.000000000 +0200
+++ new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/A.pm 2020-11-28
19:31:09.000000000 +0100
@@ -1,5 +1,4 @@
package Mojo::LoaderTest::A;
-
use Mojo::Base -base;
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/B.pm
new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/B.pm
--- old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/B.pm 2020-05-21
23:27:22.000000000 +0200
+++ new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/B.pm 2020-11-28
19:31:09.000000000 +0100
@@ -1,5 +1,4 @@
package Mojo::LoaderTest::B;
-
use Mojo::Base -base;
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/C.pm
new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/C.pm
--- old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/C.pm 2020-05-21
23:27:22.000000000 +0200
+++ new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/C.pm 2020-11-28
19:31:09.000000000 +0100
@@ -1,5 +1,4 @@
package Mojo::LoaderTest::C;
-
use Mojo::Base -base;
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/D.txt
new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/D.txt
--- old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/D.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/D.txt 2020-11-28
19:31:09.000000000 +0100
@@ -0,0 +1 @@
+This is not a module.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/E/F.pm
new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/E/F.pm
--- old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/E/F.pm 1970-01-01
01:00:00.000000000 +0100
+++ new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/E/F.pm 2020-11-28
19:31:09.000000000 +0100
@@ -0,0 +1,4 @@
+package Mojo::LoaderTest::E::F;
+use Mojo::Base -base;
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/E/G.txt
new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/E/G.txt
--- old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTest/E/G.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTest/E/G.txt 2020-11-28
19:31:09.000000000 +0100
@@ -0,0 +1 @@
+Also not a module.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTestException/A.pm
new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTestException/A.pm
--- old/Mojolicious-8.65/t/mojo/lib/Mojo/LoaderTestException/A.pm
1970-01-01 01:00:00.000000000 +0100
+++ new/Mojolicious-8.66/t/mojo/lib/Mojo/LoaderTestException/A.pm
2020-11-28 19:31:09.000000000 +0100
@@ -0,0 +1,8 @@
+package Mojo::LoaderException::A;
+use Mojo::Base -base;
+
+sub new { }
+
+foo {
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojo/loader.t
new/Mojolicious-8.66/t/mojo/loader.t
--- old/Mojolicious-8.65/t/mojo/loader.t 2020-10-24 13:04:07.000000000
+0200
+++ new/Mojolicious-8.66/t/mojo/loader.t 2020-11-28 19:31:09.000000000
+0100
@@ -7,7 +7,7 @@
use Mojo::File qw(curfile);
use lib curfile->sibling('lib')->to_string;
-use Mojo::Loader qw(data_section file_is_binary find_packages find_modules
load_class);
+use Mojo::Loader qw(data_section file_is_binary find_packages find_modules
load_class load_classes);
package MyLoaderTest::Foo::Bar;
@@ -59,11 +59,14 @@
};
subtest 'Search modules' => sub {
- my @modules = find_modules 'Mojo::LoaderTest';
- is_deeply \@modules, [qw(Mojo::LoaderTest::A Mojo::LoaderTest::B
Mojo::LoaderTest::C)], 'found the right modules';
- is_deeply [find_modules "Mojo'LoaderTest"], [qw(Mojo'LoaderTest::A
Mojo'LoaderTest::B Mojo'LoaderTest::C)],
+ is_deeply [find_modules 'Mojo::LoaderTest'], [qw(Mojo::LoaderTest::A
Mojo::LoaderTest::B Mojo::LoaderTest::C)],
'found the right modules';
+
+ is_deeply [find_modules 'Mojo::LoaderTest', {recursive => 1}],
+ [qw(Mojo::LoaderTest::A Mojo::LoaderTest::B Mojo::LoaderTest::C
Mojo::LoaderTest::E::F)], 'found the right modules';
+
is_deeply [find_modules 'MyLoaderTest::DoesNotExist'], [], 'no modules
found';
+ is_deeply [find_modules 'MyLoaderTest::DoesNotExist', {recursive => 1}], [],
'no modules found';
};
subtest 'Search packages' => sub {
@@ -96,6 +99,17 @@
is load_class('Mojolicious::Lite'), undef, 'loaded successfully';
};
+subtest 'Load classes recursively' => sub {
+ is_deeply [load_classes 'Mojo::LoaderTest'],
+ ['Mojo::LoaderTest::A', 'Mojo::LoaderTest::B', 'Mojo::LoaderTest::C',
'Mojo::LoaderTest::E::F'], 'classes loaded';
+ ok !!Mojo::LoaderTest::E::F->can('new'), 'loaded successfully';
+};
+
+subtest 'Exception in namespace' => sub {
+ eval { load_classes 'Mojo::LoaderTestException' };
+ like $@, qr/Missing right curly.*A\.pm/, 'right error';
+};
+
subtest 'UNIX DATA templates' => sub {
my $unix = "@@ template1\nFirst Template\n@@ template2\r\nSecond Template\n";
open my $data, '<', \$unix;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojolicious/app.t
new/Mojolicious-8.66/t/mojolicious/app.t
--- old/Mojolicious-8.65/t/mojolicious/app.t 2020-10-24 13:04:23.000000000
+0200
+++ new/Mojolicious-8.66/t/mojolicious/app.t 2020-11-28 20:42:48.000000000
+0100
@@ -58,6 +58,11 @@
$t = Test::Mojo->new('MojoliciousTest');
+subtest 'Preload namespaces' => sub {
+ is_deeply $t->app->preload_namespaces, ['MojoliciousTest::Controller'],
'right namespaces';
+ ok !!MojoliciousTest::Controller::Foo::Bar->can('new'), 'preloaded
controller';
+};
+
# Application is already available
is $t->app->routes->find('something')->to_string, '/test4/:something', 'right
pattern';
is $t->app->routes->find('test3')->pattern->defaults->{namespace},
'MojoliciousTestController', 'right namespace';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojolicious/commands.t
new/Mojolicious-8.66/t/mojolicious/commands.t
--- old/Mojolicious-8.65/t/mojolicious/commands.t 2020-11-09
20:05:09.000000000 +0100
+++ new/Mojolicious-8.66/t/mojolicious/commands.t 2020-11-17
18:03:37.000000000 +0100
@@ -141,6 +141,13 @@
{
open my $handle, '>', \$buffer;
local *STDOUT = $handle;
+ $commands->run('generate', 'help', 'lite-app');
+}
+like $buffer, qr/Usage: APPLICATION generate lite-app \[OPTIONS\] \[NAME\]/,
'right output';
+$buffer = '';
+{
+ open my $handle, '>', \$buffer;
+ local *STDOUT = $handle;
$commands->run('generate', 'app', '-h');
}
like $buffer, qr/Usage: APPLICATION generate app \[OPTIONS\] \[NAME\]/, 'right
output';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Mojolicious-8.65/t/mojolicious/lib/MojoliciousTest/Controller/Foo/Bar.pm
new/Mojolicious-8.66/t/mojolicious/lib/MojoliciousTest/Controller/Foo/Bar.pm
---
old/Mojolicious-8.65/t/mojolicious/lib/MojoliciousTest/Controller/Foo/Bar.pm
1970-01-01 01:00:00.000000000 +0100
+++
new/Mojolicious-8.66/t/mojolicious/lib/MojoliciousTest/Controller/Foo/Bar.pm
2020-11-28 20:22:41.000000000 +0100
@@ -0,0 +1,8 @@
+package MojoliciousTest::Controller::Foo::Bar;
+use Mojolicious::Controller -base;
+
+sub index {1}
+
+sub test { shift->stash(msg => 'works') }
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Mojolicious-8.65/t/mojolicious/lib/MojoliciousTest/Foo/Bar.pm
new/Mojolicious-8.66/t/mojolicious/lib/MojoliciousTest/Foo/Bar.pm
--- old/Mojolicious-8.65/t/mojolicious/lib/MojoliciousTest/Foo/Bar.pm
2020-05-21 23:27:22.000000000 +0200
+++ new/Mojolicious-8.66/t/mojolicious/lib/MojoliciousTest/Foo/Bar.pm
1970-01-01 01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-package MojoliciousTest::Foo::Bar;
-use Mojolicious::Controller -base;
-
-sub index {1}
-
-sub test { shift->stash(msg => 'works') }
-
-1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/mojolicious/pattern.t
new/Mojolicious-8.66/t/mojolicious/pattern.t
--- old/Mojolicious-8.65/t/mojolicious/pattern.t 2020-10-24
13:04:24.000000000 +0200
+++ new/Mojolicious-8.66/t/mojolicious/pattern.t 2020-11-29
16:22:47.000000000 +0100
@@ -250,4 +250,23 @@
is $pattern->render($result, 1), '/foo/23/baz', 'right result';
ok !$pattern->match('/foo/bar/baz', 1), 'no result';
+subtest 'Alternate placeholder characters' => sub {
+ my $pattern =
Mojolicious::Routes::Pattern->new->placeholder_start('|')->parse('/|test');
+ my $result = $pattern->match('/foo');
+ is_deeply $result, {test => 'foo'}, 'right structure';
+ is $pattern->render($result, 1), '/foo', 'right result';
+ $pattern =
Mojolicious::Routes::Pattern->new->relaxed_start('|')->parse('/|test');
+ $result = $pattern->match('/foo');
+ is_deeply $result, {test => 'foo'}, 'right structure';
+ is $pattern->render($result, 1), '/foo', 'right result';
+ $pattern =
Mojolicious::Routes::Pattern->new->wildcard_start('|')->parse('/|test');
+ $result = $pattern->match('/foo');
+ is_deeply $result, {test => 'foo'}, 'right structure';
+ is $pattern->render($result, 1), '/foo', 'right result';
+ $pattern = Mojolicious::Routes::Pattern->new->types({num =>
qr/\d+/})->type_start('|')->parse('/<test|num>');
+ $result = $pattern->match('/42');
+ is_deeply $result, {test => '42'}, 'right structure';
+ is $pattern->render($result, 1), '/42', 'right result';
+};
+
done_testing();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-8.65/t/pod_coverage.t
new/Mojolicious-8.66/t/pod_coverage.t
--- old/Mojolicious-8.65/t/pod_coverage.t 2020-11-10 10:32:52.000000000
+0100
+++ new/Mojolicious-8.66/t/pod_coverage.t 2020-11-19 01:30:56.000000000
+0100
@@ -7,8 +7,8 @@
# async/await hooks
my @await = (
- qw(AWAIT_CLONE AWAIT_DONE AWAIT_FAIL AWAIT_GET AWAIT_IS_CANCELLED
AWAIT_IS_READY AWAIT_NEW_DONE AWAIT_NEW_FAIL),
- qw(AWAIT_ON_CANCEL AWAIT_ON_READY)
+ qw(AWAIT_CHAIN_CANCEL AWAIT_CLONE AWAIT_DONE AWAIT_FAIL AWAIT_GET
AWAIT_IS_CANCELLED AWAIT_IS_READY AWAIT_NEW_DONE),
+ qw(AWAIT_NEW_FAIL AWAIT_ON_CANCEL AWAIT_ON_READY)
);
all_pod_coverage_ok({also_private => ['BUILD_DYNAMIC', @await, 'success']});
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives:
https://lists.opensuse.org/archives/list/[email protected]