Hello community,
here is the log from the commit of package perl-Mojolicious-Plugin-AssetPack
for openSUSE:Factory checked in at 2017-10-18 16:16:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Mojolicious-Plugin-AssetPack (Old)
and /work/SRC/openSUSE:Factory/.perl-Mojolicious-Plugin-AssetPack.new
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Mojolicious-Plugin-AssetPack"
Wed Oct 18 16:16:40 2017 rev:35 rq:534738 version:1.47
Changes:
--------
---
/work/SRC/openSUSE:Factory/perl-Mojolicious-Plugin-AssetPack/perl-Mojolicious-Plugin-AssetPack.changes
2017-10-03 23:17:40.671101518 +0200
+++
/work/SRC/openSUSE:Factory/.perl-Mojolicious-Plugin-AssetPack.new/perl-Mojolicious-Plugin-AssetPack.changes
2017-10-18 16:16:41.612151700 +0200
@@ -1,0 +2,9 @@
+Tue Oct 17 05:36:00 UTC 2017 - [email protected]
+
+- updated to 1.47
+ see /usr/share/doc/packages/perl-Mojolicious-Plugin-AssetPack/Changes
+
+ 1.47 2017-10-14T18:58:55+0200
+ - Dropping "original" from assetpack.db
+
+-------------------------------------------------------------------
Old:
----
Mojolicious-Plugin-AssetPack-1.46.tar.gz
New:
----
Mojolicious-Plugin-AssetPack-1.47.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Mojolicious-Plugin-AssetPack.spec ++++++
--- /var/tmp/diff_new_pack.q2tgfM/_old 2017-10-18 16:16:42.372116142 +0200
+++ /var/tmp/diff_new_pack.q2tgfM/_new 2017-10-18 16:16:42.372116142 +0200
@@ -17,7 +17,7 @@
Name: perl-Mojolicious-Plugin-AssetPack
-Version: 1.46
+Version: 1.47
Release: 0
%define cpan_name Mojolicious-Plugin-AssetPack
Summary: Compress and convert css, less, sass, javascript and
coffeescript files
++++++ Mojolicious-Plugin-AssetPack-1.46.tar.gz ->
Mojolicious-Plugin-AssetPack-1.47.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.46/Changes
new/Mojolicious-Plugin-AssetPack-1.47/Changes
--- old/Mojolicious-Plugin-AssetPack-1.46/Changes 2017-09-27
21:35:33.000000000 +0200
+++ new/Mojolicious-Plugin-AssetPack-1.47/Changes 2017-10-14
18:58:55.000000000 +0200
@@ -1,5 +1,8 @@
Revision history for perl distribution Mojolicious-Plugin-AssetPack
+1.47 2017-10-14T18:58:55+0200
+ - Dropping "original" from assetpack.db
+
1.46 2017-09-27T21:35:33+0200
- Add "asset_class" attribute to AssetPack::Store
- Add rollupjs pipe - https://rollupjs.org/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.46/META.json
new/Mojolicious-Plugin-AssetPack-1.47/META.json
--- old/Mojolicious-Plugin-AssetPack-1.46/META.json 2017-09-27
21:35:34.000000000 +0200
+++ new/Mojolicious-Plugin-AssetPack-1.47/META.json 2017-10-14
18:58:57.000000000 +0200
@@ -48,6 +48,6 @@
"url" :
"https://github.com/jhthorsen/mojolicious-plugin-assetpack.git"
}
},
- "version" : "1.46",
+ "version" : "1.47",
"x_serialization_backend" : "JSON::PP version 2.27400_02"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.46/META.yml
new/Mojolicious-Plugin-AssetPack-1.47/META.yml
--- old/Mojolicious-Plugin-AssetPack-1.46/META.yml 2017-09-27
21:35:34.000000000 +0200
+++ new/Mojolicious-Plugin-AssetPack-1.47/META.yml 2017-10-14
18:58:56.000000000 +0200
@@ -25,5 +25,5 @@
bugtracker: https://github.com/jhthorsen/mojolicious-plugin-assetpack/issues
homepage: https://github.com/jhthorsen/mojolicious-plugin-assetpack
repository: https://github.com/jhthorsen/mojolicious-plugin-assetpack.git
-version: '1.46'
+version: '1.47'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.46/README
new/Mojolicious-Plugin-AssetPack-1.47/README
--- old/Mojolicious-Plugin-AssetPack-1.46/README 2017-09-27
21:35:33.000000000 +0200
+++ new/Mojolicious-Plugin-AssetPack-1.47/README 2017-10-14
18:58:55.000000000 +0200
@@ -3,7 +3,7 @@
javascript and coffeescript files
VERSION
- 1.46
+ 1.47
SYNOPSIS
Application
@@ -49,6 +49,15 @@
is delegated to "pipe objects". Please see "Pipes" in
Mojolicious::Plugin::AssetPack::Guides::Tutorial for a complete list.
+BREAKING CHANGES
+ assetpack.db (v1.47)
+ "assetpack.db" no longer track files downloaded from the internet. It
+ will mostly "just work", but in some cases version 1.47 might download
+ assets that have already been downloaded with AssetPack version 1.46 and
+ earlier.
+
+ The goal is to remove "assetpack.db" completely.
+
GUIDES
* Mojolicious::Plugin::AssetPack::Guides::Tutorial
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Mojolicious-Plugin-AssetPack-1.46/lib/Mojolicious/Plugin/AssetPack/Asset.pm
new/Mojolicious-Plugin-AssetPack-1.47/lib/Mojolicious/Plugin/AssetPack/Asset.pm
---
old/Mojolicious-Plugin-AssetPack-1.46/lib/Mojolicious/Plugin/AssetPack/Asset.pm
2017-09-23 12:42:43.000000000 +0200
+++
new/Mojolicious-Plugin-AssetPack-1.47/lib/Mojolicious/Plugin/AssetPack/Asset.pm
2017-10-14 18:41:40.000000000 +0200
@@ -79,8 +79,12 @@
}
sub path {
- $_[0]->_asset->isa('Mojo::Asset::File') ?
Mojo::File->new($_[0]->_asset->path) : undef;
+ my $self = shift;
+ return $self->_asset(Mojo::Asset::File->new(path => $_[0])) if $_[0];
+ return Mojo::File->new($self->_asset->path) if
$self->_asset->isa('Mojo::Asset::File');
+ return undef;
}
+
sub size { $_[0]->_asset->size }
sub url_for { $_[1]->url_for(assetpack => $_[0]->TO_JSON); }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Mojolicious-Plugin-AssetPack-1.46/lib/Mojolicious/Plugin/AssetPack/Guides/Tutorial.pod
new/Mojolicious-Plugin-AssetPack-1.47/lib/Mojolicious/Plugin/AssetPack/Guides/Tutorial.pod
---
old/Mojolicious-Plugin-AssetPack-1.46/lib/Mojolicious/Plugin/AssetPack/Guides/Tutorial.pod
2017-09-05 18:22:34.000000000 +0200
+++
new/Mojolicious-Plugin-AssetPack-1.47/lib/Mojolicious/Plugin/AssetPack/Guides/Tutorial.pod
2017-10-14 18:41:40.000000000 +0200
@@ -26,7 +26,7 @@
$app->plugin(AssetPack => {pipes => [qw(Sass Css Combine)]});
Loading the plugin with the list above will enable AssetPack to process Sass
-and Css files, minify them and combine them into a aingle asset in production.
+and Css files, minify them and combine them into a single asset in production.
=head2 Optional dependencies
@@ -189,7 +189,7 @@
Moving the definition to an external file can be useful for keeping the
application code tidy. The definition file should be located in the
L<assets|Mojolicious::Plugin::AssetPack::Store/paths> directory, or optionally
-defined it in the "DATA" section. section. The default file is called
+defined it in the "DATA" section. The default file is called
"assetpack.def" and will be looked up if
L<Mojolicious::Plugin::AssetPack/process> is called without arguments. Example
file:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Mojolicious-Plugin-AssetPack-1.46/lib/Mojolicious/Plugin/AssetPack/Pipe.pm
new/Mojolicious-Plugin-AssetPack-1.47/lib/Mojolicious/Plugin/AssetPack/Pipe.pm
---
old/Mojolicious-Plugin-AssetPack-1.46/lib/Mojolicious/Plugin/AssetPack/Pipe.pm
2017-09-27 21:34:18.000000000 +0200
+++
new/Mojolicious-Plugin-AssetPack-1.47/lib/Mojolicious/Plugin/AssetPack/Pipe.pm
2017-10-14 17:15:37.000000000 +0200
@@ -9,7 +9,7 @@
use Mojolicious::Plugin::AssetPack::Asset;
use Mojolicious::Plugin::AssetPack::Util qw(diag has_ro DEBUG);
-my $REQUIRE_JS = path(__FILE__)->dirname->child(qw(Pipe require.js));
+my $REQUIRE_JS = path(__FILE__)->dirname->child(qw(Pipe require.js))->realpath;
$ENV{PATH} ||= '';
@@ -39,10 +39,10 @@
$apps = [$apps] unless ref $apps eq 'ARRAY';
for my $name (@$apps) {
+ return $self->{apps}{$name} if $self->{apps}{$name}; # Already found
my $key = uc "MOJO_ASSETPACK_${name}_APP";
diag 'Looking for "%s" in $%s', $name, $key if DEBUG > 1;
return $ENV{$key} if $ENV{$key}; #
MOJO_ASSETPACK_FOO_APP wins
- return $self->{apps}{$name} if $self->{apps}{$name}; # Already found
diag 'Looking for "%s" in $PATH.', $name if DEBUG > 1;
$path = first {-e} map { path($_, $name) } File::Spec->path;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Mojolicious-Plugin-AssetPack-1.46/lib/Mojolicious/Plugin/AssetPack/Store.pm
new/Mojolicious-Plugin-AssetPack-1.47/lib/Mojolicious/Plugin/AssetPack/Store.pm
---
old/Mojolicious-Plugin-AssetPack-1.46/lib/Mojolicious/Plugin/AssetPack/Store.pm
2017-09-23 12:42:43.000000000 +0200
+++
new/Mojolicious-Plugin-AssetPack-1.47/lib/Mojolicious/Plugin/AssetPack/Store.pm
2017-10-14 18:41:40.000000000 +0200
@@ -1,11 +1,14 @@
package Mojolicious::Plugin::AssetPack::Store;
use Mojo::Base 'Mojolicious::Static';
+
use Mojo::File 'path';
use Mojo::URL;
use Mojolicious::Types;
use Mojolicious::Plugin::AssetPack::Asset;
use Mojolicious::Plugin::AssetPack::Util qw(diag checksum has_ro DEBUG);
+use constant CACHE_DIR => 'cache';
+
# MOJO_ASSETPACK_DB_FILE is used in tests
use constant DB_FILE => $ENV{MOJO_ASSETPACK_DB_FILE} || 'assetpack.db';
our %DB_KEYS = map { $_ => 1 } qw(checksum format minified rel);
@@ -64,8 +67,7 @@
else {
local $self->{paths} = [$path];
next unless $asset = $self->file($url);
- my $attrs = $self->_db_get({key => 'original', url => $url}) || {url
=> $url};
- return $self->asset_class->new(%$attrs, content => $asset);
+ return $self->asset_class->new(url => $url, content => $asset);
}
}
}
@@ -142,20 +144,30 @@
sub _already_downloaded {
my ($self, $url) = @_;
- my $attrs = $self->_db_get({key => 'original', url => $url}) or return undef;
- my $asset;
+ my $asset = $self->asset_class->new(url => "$url");
+ my @dirname = $self->_url2path($url, '');
+ my $basename = pop @dirname;
+
+ for my $path (map { path $_, @dirname } @{$self->paths}) {
+
+ # URL with extension
+ my $file = $path->child($basename);
+ return $asset->format($1)->path($file) if -e $file and $file =~
m!\.(\w+)$!;
+
+ # URL without extension - https://fonts.googleapis.com/css?family=Roboto
+ for my $file ($path->list->each) {
+ next unless $file->basename =~ /^$basename(\w+)$/;
+ return $asset->format($1)->path($file);
+ }
+ }
- return undef unless $attrs->{rel} and $asset = $self->asset($attrs->{rel});
- $asset->{url} = $url;
- $asset->{format} ||= $attrs->{format} if $attrs->{format};
- diag 'Already downloaded: %s', $asset->url if DEBUG;
- return $asset;
+ return undef;
}
sub _cache_path {
my ($self, $attrs) = @_;
return (
- 'cache', sprintf '%s-%s.%s%s',
+ CACHE_DIR, sprintf '%s-%s.%s%s',
$attrs->{name},
checksum($attrs->{url}),
$attrs->{minified} ? 'min.' : '',
@@ -172,59 +184,67 @@
}
sub _db_set {
+ return if $ENV{MOJO_ASSETPACK_LAZY};
my ($self, %attrs) = @_;
my ($key, $url) = @attrs{qw(key url)};
- return if $ENV{MOJO_ASSETPACK_LAZY} and $key ne 'original';
$self->_db->{$url}{$key} = {%attrs};
}
sub _download {
my ($self, $url) = @_;
- my $req_url = $url;
- my ($asset, $attrs, $path);
+ my %attrs = (url => $url->clone);
+ my ($asset, $path);
- if ($req_url->host eq 'local') {
+ if ($attrs{url}->host eq 'local') {
my $base = $self->ua->server->url;
- $req_url = $url->clone->scheme($base->scheme)->host_port($base->host_port);
+ $url = $url->clone->scheme($base->scheme)->host_port($base->host_port);
}
- return $asset if $asset = $self->_already_downloaded($url);
+ return $asset
+ if $attrs{url}->host ne 'local' and $asset =
$self->_already_downloaded($url);
- my $rel = _rel($url);
- my $tx = $self->ua->get($req_url);
- my $h = $tx->res->headers;
+ my $tx = $self->ua->get($url);
+ my $h = $tx->res->headers;
- if ($tx->res->is_error or $tx->error) {
- $self->ua->server->app->log->warn(
- "[AssetPack] Unable to download $req_url: @{[$tx->error->{message}]}");
+ if (my $err = $tx->error) {
+ $self->_log->warn("[AssetPack] Unable to download $url: $err->{message}");
return undef;
}
- if ($url->host ne 'local') {
- $path = path($self->paths->[0], split '/', $rel);
- $self->ua->server->app->log->info(qq(Caching "$req_url" to "$path".));
- $path->dirname->make_path unless -d $path->dirname;
- $path->spurt($tx->res->body);
+ my $ct = $h->content_type || '';
+ if ($ct ne 'text/plain') {
+ $ct =~ s!;.*$!!;
+ $attrs{format} = $self->_types->detect($ct)->[0];
}
- if (my $ct = $h->content_type) {
- $ct =~ s!;.*$!!;
- $attrs->{format} = $self->_types->detect($ct)->[0] unless $ct eq
'text/plain';
+ $attrs{format} ||= $tx->req->url->path->[-1] =~ /\.(\w+)$/ ? $1 : 'bin';
+
+ if ($attrs{url}->host ne 'local') {
+ $path = path($self->paths->[0], $self->_url2path($attrs{url},
$attrs{format}));
+ $self->_log->info(qq(Caching "$url" to "$path".));
+ $path->dirname->make_path unless -d $path->dirname;
+ $path->spurt($tx->res->body);
}
- $attrs->{format} ||= $tx->req->url->path->[-1] =~ /\.(\w+)$/ ? $1 : undef;
- @$attrs{qw(key rel url)} = ('original', $rel, $url);
- $self->_db_set(%$attrs);
- return $self->asset_class->new(%$attrs, path => $path) if $path;
- return $self->asset_class->new(%$attrs)->content($tx->res->body);
+ $attrs{url} = "$attrs{url}";
+ return $self->asset_class->new(%attrs, path => $path) if $path;
+ return $self->asset_class->new(%attrs)->content($tx->res->body);
}
-sub _rel {
- local $_ = shift->clone->scheme(undef)->to_string;
- s![^\w\.\/-]!_!g;
- s!^\/+!!;
- s!\/+$!!;
- "cache/$_";
+sub _log { shift->ua->server->app->log }
+
+sub _url2path {
+ my ($self, $url, $format) = @_;
+ my $query = $url->query->to_string;
+ my @path;
+
+ push @path, $url->host;
+ push @path, @{$url->path};
+
+ $query =~ s!\W!_!g;
+ $path[-1] .= "_$query.$format" if $query;
+
+ return CACHE_DIR, @path;
}
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Mojolicious-Plugin-AssetPack-1.46/lib/Mojolicious/Plugin/AssetPack.pm
new/Mojolicious-Plugin-AssetPack-1.47/lib/Mojolicious/Plugin/AssetPack.pm
--- old/Mojolicious-Plugin-AssetPack-1.46/lib/Mojolicious/Plugin/AssetPack.pm
2017-09-27 21:35:33.000000000 +0200
+++ new/Mojolicious-Plugin-AssetPack-1.47/lib/Mojolicious/Plugin/AssetPack.pm
2017-10-14 18:58:55.000000000 +0200
@@ -6,7 +6,7 @@
use Mojolicious::Plugin::AssetPack::Store;
use Mojolicious::Plugin::AssetPack::Util qw(diag has_ro load_module DEBUG);
-our $VERSION = '1.46';
+our $VERSION = '1.47';
my %TAG_TEMPLATE;
$TAG_TEMPLATE{css} = [qw(link rel stylesheet href)];
@@ -254,7 +254,7 @@
=head1 VERSION
-1.46
+1.47
=head1 SYNOPSIS
@@ -304,6 +304,16 @@
delegated to "pipe objects". Please see
L<Mojolicious::Plugin::AssetPack::Guides::Tutorial/Pipes> for a complete list.
+=head1 BREAKING CHANGES
+
+=head2 assetpack.db (v1.47)
+
+C<assetpack.db> no longer track files downloaded from the internet. It will
+mostly "just work", but in some cases version 1.47 might download assets that
+have already been downloaded with AssetPack version 1.46 and earlier.
+
+The goal is to remove C<assetpack.db> completely.
+
=head1 GUIDES
=over 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.46/t/fetch-all.t
new/Mojolicious-Plugin-AssetPack-1.47/t/fetch-all.t
--- old/Mojolicious-Plugin-AssetPack-1.46/t/fetch-all.t 2017-09-05
18:08:28.000000000 +0200
+++ new/Mojolicious-Plugin-AssetPack-1.47/t/fetch-all.t 2017-10-14
17:14:31.000000000 +0200
@@ -8,9 +8,9 @@
$t->get_ok('/')->status_is(200);
$t->get_ok($t->tx->res->dom->at('link')->{href})->status_is(200)
- ->content_like(qr{\Q../../\Easset/\w+/chosen-sprite\.png'?\)})
- ->content_like(qr{\Q../../\Easset/\w+/chosen-sprite\@2x\.png'?\)})
- ->content_unlike(qr{\Qurl('chosen-sprite.png')\E});
+ ->content_like(qr{\Q../../\Easset/\w+/chosen-sprite\.png["']\)})
+ ->content_like(qr{\Q../../\Easset/\w+/chosen-sprite\@2x\.png["']\)})
+ ->content_unlike(qr{\Qurl(['"]chosen-sprite.png['"])\E});
done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Mojolicious-Plugin-AssetPack-1.46/t/google-font.t
new/Mojolicious-Plugin-AssetPack-1.47/t/google-font.t
--- old/Mojolicious-Plugin-AssetPack-1.46/t/google-font.t 2017-09-23
12:42:43.000000000 +0200
+++ new/Mojolicious-Plugin-AssetPack-1.47/t/google-font.t 2017-10-14
18:41:40.000000000 +0200
@@ -3,21 +3,22 @@
plan skip_all => 'TEST_ONLINE=1' unless $ENV{TEST_ONLINE} or -e
'.test-everything';
-my $t = t::Helper->t(pipes => [qw(Css Fetch)]);
-$t->app->asset->process(
+my $t1 = t::Helper->t(pipes => [qw(Css Fetch)]);
+$t1->app->asset->process(
'app.css' => 'https://fonts.googleapis.com/css?family=Roboto:400,700');
-$t->get_ok('/')->status_is(200);
+$t1->get_ok('/')->status_is(200);
# comment from
https://github.com/hugeinc/flexboxgrid-sass/blob/master/demo/sass/_code.scss
-$t->get_ok($t->tx->res->dom->at('link')->{href})->status_is(200)
+$t1->get_ok($t1->tx->res->dom->at('link')->{href})->status_is(200)
->header_is('Content-Type',
'text/css')->content_like(qr{font-family:\W*Roboto})
->content_like(qr{\Qurl(../../asset/\E\w+/.*\.ttf\)});
my $cache_file = File::Spec->catfile(
- qw(t assets cache fonts.googleapis.com css_family_Roboto_400_700));
+ qw(t assets cache fonts.googleapis.com css_family_Roboto_400_700.css));
ok -e $cache_file, 'cache file does not contain weird characters';
-# make sure we are able to load from cache
+Mojo::Util::monkey_patch('Mojo::UserAgent',
+ 'get' => sub { shift; die "Should get font from cache! @_" });
my $t2 = t::Helper->t(pipes => [qw(Css Fetch)]);
$t2->app->asset->process(
'app.css' => 'http://fonts.googleapis.com/css?family=Roboto:400,700');
@@ -26,24 +27,9 @@
->header_is('Content-Type',
'text/css')->content_like(qr{font-family:\W*Roboto});
my $t3 = t::Helper->t(pipes => [qw(Css Fetch)]);
-my $db = $t3->app->asset->store->_db;
-is_deeply(
- $db->{'https://fonts.googleapis.com/css?family=Roboto:400,700'},
- {
- original =>
- {format => 'css', rel =>
'cache/fonts.googleapis.com/css_family_Roboto_400_700'}
- },
- 'assetpack.db looks right'
-);
-
-for my $url (keys %$db) {
- like $url, qr{^https?:}, "db $url";
- for my $key (keys %{$db->{$url}}) {
- is $key, 'original', 'db has no processed assets';
- is_deeply [sort keys %{$db->{$url}{$key}}], [qw(format rel)], 'correct db
attributes';
- }
-}
+is_deeply($t2->app->asset->store->_db, {}, 'nothing stored in db file (t2)');
+is_deeply($t3->app->asset->store->_db, {}, 'nothing stored in db file (t3)');
done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Mojolicious-Plugin-AssetPack-1.46/t/sass-unable-to-download.t
new/Mojolicious-Plugin-AssetPack-1.47/t/sass-unable-to-download.t
--- old/Mojolicious-Plugin-AssetPack-1.46/t/sass-unable-to-download.t
2017-06-19 21:02:44.000000000 +0200
+++ new/Mojolicious-Plugin-AssetPack-1.47/t/sass-unable-to-download.t
2017-10-14 18:41:40.000000000 +0200
@@ -3,33 +3,31 @@
plan skip_all => 'TEST_ONLINE=1' unless $ENV{TEST_ONLINE} or -e
'.test-everything';
plan skip_all => 'cpanm CSS::Sass' unless eval 'use CSS::Sass 3.3.0;1';
-my @message;
+my ($t, @message);
my $url =
'https://raw.githubusercontent.com/select2/select2/master/src/scss/core.scss';
-my $t = t::Helper->t(pipes => [qw(Sass Css)]);
-$t->app->log->on(message => sub { shift; push @message, join ' ', @_ });
-$t->app->asset->process('app.css' => $url);
-$t->get_ok('/')->status_is(200);
-$t->get_ok($t->tx->res->dom->at('link[href]')->{href} ||
'/nope')->status_is(200)
- ->content_like(qr{select2});
+run();
ok + (grep {/Caching/} @message), 'cached assets' or diag join ',', @message;
ok + (grep {/Unable to download.*_layout\.scss/} @message), 'unable to
download'
or map { diag $_ } @message;
-@message = ();
-$t = t::Helper->t(pipes => [qw(Sass Css)]);
-$t->app->log->on(message => sub { shift; push @message, @_ });
-$t->app->asset->process('app.css' => $url);
-$t->get_ok('/')->status_is(200);
-$t->get_ok($t->tx->res->dom->at('link[href]')->{href} ||
'/nope')->status_is(200)
- ->content_like(qr{select2});
-
+run();
ok !(grep {/Caching/} @message), 'assets are already cached' or diag join ',',
@message;
ok !(grep {/Unable to download.*_layout\.scss/} @message), 'assets are already
downloaded'
or diag join ',', @message;
done_testing;
+sub run {
+ @message = ();
+ $t = t::Helper->t(pipes => ['Sass']);
+ $t->app->log->on(message => sub { shift; push @message, join ' ', @_ });
+ $t->app->asset->process('app.css' => $url);
+ $t->get_ok('/')->status_is(200);
+ $t->get_ok($t->tx->res->dom->at('link[href]')->{href} ||
'/nope')->status_is(200)
+ ->content_like(qr{select2});
+}
+
__DATA__
@@ index.html.ep
%= asset 'app.css'