#!perl -w
use strict;
use Test::Memory::Cycle;
use Test::More qw/no_plan/;
use t::Test;
my $scratch = t::Test->scratch;
ok(-e $scratch->base->file("static/css/apple.css"));
ok(-e $scratch->base->file("static/css/banana.css"));
ok(-e $scratch->base->file("static/js/apple.js"));
sub assets {
my $assets = t::Test->assets(@_);
ok($assets->include("css/apple.css"));
ok($assets->include("js/apple.js"));
ok($assets->include_content(<<_END_, "css"));
div {
background: red;
}
_END_
return $assets;
}
{
my $assets = assets;
compare($assets->export, qw(
http://example.com/static/css/apple.css
), [ css => <<_END_ ],
div {
background: red;
}
_END_
"http://example.com/static/js/apple.js"
);
compare($assets->export('css'), qw(
http://example.com/static/css/apple.css
), [ css => <<_END_ ],
div {
background: red;
}
_END_
);
compare($assets->export('js'), qw(
http://example.com/static/js/apple.js
));
ok($assets->include("css/banana.css"));
compare($assets->export, qw(
http://example.com/static/css/apple.css
), [ css => <<_END_ ],
div {
background: red;
}
_END_
qw(
http://example.com/static/css/banana.css
http://example.com/static/js/apple.js
));
memory_cycle_ok($assets);
}
{
my $assets = assets(output_path => [
[ "*" => '%d.%e' ],
], filter => [
[ qw/css concat/, { skip_inline => 0, content_digest => 1 } ],
]);
my $digest = "4622fcfb3d29438ce9298d288fdcc57e";
ok($assets->include("css/banana.css"));
compare($assets->export,
"http://example.com/static/$digest.css",
"http://example.com/static/js/apple.js",
);
ok($scratch->exists("static/$digest.css"));
ok(-s $scratch->file("static/$digest.css"));
is($scratch->read("static/$digest.css"), <<_END_);
/* Test file: static/css/apple.css */
div {
background: red;
}
/* Test file: static/css/banana.css */
_END_
$scratch->delete("static/$digest.css");
}
SKIP: {
skip 'install ./yuicompressor.jar to enable this test' unless -e "./yuicompressor.jar";
my $assets = assets(output_path => [
[ "*" => '%d.%e' ],
], filter => [
[ qw(css yuicompressor:./yuicompressor.jar), { skip_inline => 0, content_digest => 1 } ],
]);
my $digest = "4622fcfb3d29438ce9298d288fdcc57e";
ok($assets->include("css/banana.css"));
compare($assets->export,
"http://example.com/static/$digest.css",
"http://example.com/static/js/apple.js",
);
ok($scratch->exists("static/$digest.css"));
ok(-s $scratch->file("static/$digest.css"));
is($scratch->read("static/$digest.css"), 'div{background:red;}');
}
{
my $assets = assets(output_path => [
[ "*" => '%d.%e' ],
], filter => [
[ qw/css concat/, { content_digest => 1 } ],
]);
my $digest = "408d257d77bf611e910a689912e0befa";
my $asset = $assets->include(\<<_END_, undef, "css");
span {
border: 1px solid black;
}
_END_
$asset->inline(0);
$assets->include_content(<<_END_, "css", { inline => 0 });
span {
padding: 1em;
}
_END_
$assets->include_content(<<_END_, { type => "css", inline => 1 });
span {
margin: 1em;
}
_END_
compare($assets->export,
"http://example.com/static/$digest.css",
[ css => <<_END_ ],
div {
background: red;
}
_END_
[ css => <<_END_ ],
span {
margin: 1em;
}
_END_
"http://example.com/static/js/apple.js",
);
compare($assets->export,
"http://example.com/static/$digest.css",
[ css => <<_END_ ],
div {
background: red;
}
_END_
[ css => <<_END_ ],
span {
margin: 1em;
}
_END_
"http://example.com/static/js/apple.js",
);
ok($scratch->exists("static/$digest.css"));
ok(-s $scratch->file("static/$digest.css"));
local $/ = undef;
is($scratch->read("static/$digest.css"), <<_END_);
/* Test file: static/css/apple.css */
span {
border: 1px solid black;
}
span {
padding: 1em;
}
_END_
$scratch->delete("static/$digest.css");
}