minifier = $this->getMockBuilder('\MatthiasMullie\Minify\CSS')
->setMethods(array('save'))
->getMock();
}
/**
* Cleans up the environment after running a test.
*/
protected function tearDown()
{
$this->minifier = null;
parent::tearDown();
}
/**
* Test CSS minifier rules, provided by dataProvider.
*
* @test
* @dataProvider dataProvider
*/
public function minify($input, $expected)
{
$this->minifier->add($input);
$result = $this->minifier->minify();
$this->assertEquals($expected, $result);
}
/**
* Test conversion of relative paths, provided by dataProviderPaths.
*
* @test
* @dataProvider dataProviderPaths
*/
public function convertRelativePath($source, $target, $expected)
{
$source = (array) $source;
foreach ($source as $path => $css) {
$this->minifier->add($css);
// $source also accepts an array where the key is a bogus path
if (is_string($path)) {
$object = new ReflectionObject($this->minifier);
$property = $object->getProperty('data');
$property->setAccessible(true);
$data = $property->getValue($this->minifier);
// keep content, but make it appear from the given path
$data[$path] = array_pop($data);
$property->setValue($this->minifier, $data);
$property->setAccessible(false);
}
}
$result = $this->minifier->minify($target);
$this->assertEquals($expected, $result);
}
/**
* Test loop while importing file.
*
* @test
*
* @expectedException MatthiasMullie\Minify\Exceptions\FileImportException
*/
public function fileImportLoop()
{
$testFile = __DIR__.'/sample/loop/first.css';
$this->minifier->add($testFile);
$this->minifier->minify();
}
/**
* Test minifier import configuration methods.
*
* @test
*/
public function setConfig()
{
$this->minifier->setMaxImportSize(10);
$this->minifier->setImportExtensions(array('gif' => 'data:image/gif'));
$object = new ReflectionObject($this->minifier);
$property = $object->getProperty('maxImportSize');
$property->setAccessible(true);
$this->assertEquals($property->getValue($this->minifier), 10);
$property = $object->getProperty('importExtensions');
$property->setAccessible(true);
$this->assertEquals($property->getValue($this->minifier), array('gif' => 'data:image/gif'));
}
/**
* @return array [input, expected result]
*/
public function dataProvider()
{
$tests = array();
// passing in an array of css inputs
$tests[] = array(
[
__DIR__.'/sample/combine_imports/index.css',
__DIR__.'/sample/bom/bom.css',
'p { width: 55px , margin: 0 0 0 0}',
],
'body{color:red}body{color:red}p{width:55px,margin:0 0 0 0}',
);
// try importing, with both @import syntax types & media queries
$tests[] = array(
__DIR__.'/sample/combine_imports/index.css',
'body{color:red}',
);
$tests[] = array(
__DIR__.'/sample/combine_imports/index2.css',
'body{color:red}',
);
$tests[] = array(
__DIR__.'/sample/combine_imports/index3.css',
'body{color:red}body{color:red}',
);
$tests[] = array(
__DIR__.'/sample/combine_imports/index4.css',
'@media only screen{body{color:red}}@media only screen{body{color:red}}',
);
$tests[] = array(
__DIR__.'/sample/combine_imports/index5.css',
'body{color:red}body{color:red}',
);
$tests[] = array(
__DIR__.'/sample/combine_imports/index6a.css',
'body{color:red}',
);
// shorthand hex color codes
$tests[] = array(
'color:#FF00FF;',
'color:#F0F;',
);
// import files
$tests[] = array(
__DIR__.'/sample/import_files/index.css',
'body{background:url(data:image/png;base64,'.base64_encode(file_get_contents(__DIR__.'/sample/import_files/file.png')).')}',
);
// strip comments
$tests[] = array(
'/* This is a CSS comment */',
'',
);
// strip whitespace
$tests[] = array(
'body { color: red; }',
'body{color:red}',
);
// whitespace inside strings shouldn't be replaced
$tests[] = array(
'content:"preserve whitespace"',
'content:"preserve whitespace"',
);
$tests[] = array(
'html
body {
color: red;
}',
'html body{color:red}',
);
$tests[] = array(
<<<'JS'
p * i , html
/* remove spaces */
/* " comments have no escapes \*/
body/* keep */ /* space */p,
p [ remove ~= " spaces " ] :nth-child( 3 + 2n ) > b span i , div::after
{
/* comment */
content : " escapes \" allowed \\" ;
content: " /* string */ " !important ;
width: calc( 100% - 3em + 5px ) ;
margin-top : 0;
margin-bottom : 0;
margin-left : 10px;
margin-right : 10px;
}
JS
,
'p * i,html body p,p [remove~=" spaces "] :nth-child(3+2n)>b span i,div::after{content:" escapes \\" allowed \\\\";content:" /* string */ "!important;width:calc(100% - 3em + 5px);margin-top:0;margin-bottom:0;margin-left:10px;margin-right:10px}',
);
/*
* https://github.com/forkcms/forkcms/issues/387
*
* CSS backslash.
* * Backslash escaped by backslash in CSS
* * Double CSS backslashed escaped twice for in PHP string
*/
$tests[] = array(
'.iconic.map-pin:before { content: "\\\\"; }',
'.iconic.map-pin:before{content:"\\\\"}',
);
// strip BOM
$tests[] = array(
__DIR__.'/sample/bom/bom.css',
'body{color:red}',
);
// https://github.com/matthiasmullie/minify/issues/22
$tests[] = array(
'p { background-position: -0px -64px; }',
'p{background-position:0 -64px}',
);
// https://github.com/matthiasmullie/minify/issues/23
$tests[] = array(
'ul.pagination {
display: block;
min-height: 1.5rem;
margin-left: -0.3125rem;
}',
'ul.pagination{display:block;min-height:1.5rem;margin-left:-.3125rem}',
);
// edge cases for stripping zeroes
$tests[] = array(
'p { margin: -0.0rem; }',
'p{margin:0rem}',
);
$tests[] = array(
'p { margin: -0.01rem; }',
'p{margin:-.01rem}',
);
$tests[] = array(
'p { margin: .0; }',
'p{margin:0}',
);
$tests[] = array(
'p { margin: .0%; }',
'p{margin:0%}',
);
$tests[] = array(
'p { margin: 1.0; }',
'p{margin:1}',
);
$tests[] = array(
'p { margin: 1.0px; }',
'p{margin:1px}',
);
$tests[] = array(
'p { margin: 1.1; }',
'p{margin:1.1}',
);
$tests[] = array(
'p { margin: 1.1em; }',
'p{margin:1.1em}',
);
$tests[] = array(
'p { margin: 00px; }',
'p{margin:0}',
);
$tests[] = array(
'p { margin: 0.1px; }',
'p{margin:.1px}',
);
$tests[] = array(
'p { margin: 01.1px; }',
'p{margin:1.1px}',
);
$tests[] = array(
'p { margin: 0.060px; }',
'p{margin:.06px}',
);
$tests[] = array(
'p.class00 { background-color: #000000; color: #000; }',
'p.class00{background-color:#000;color:#000}',
);
// https://github.com/matthiasmullie/minify/issues/24
$tests[] = array(
'.col-1-1 { width: 100.00%; }',
'.col-1-1{width:100%}',
);
// https://github.com/matthiasmullie/minify/issues/25
$tests[] = array(
'p { background-color: #000000; color: #000; }',
'p{background-color:#000;color:#000}',
);
// https://github.com/matthiasmullie/minify/issues/26
$tests[] = array(
'.hr > :first-child { width: 0.0001%; }',
'.hr>:first-child{width:.0001%}',
);
// https://github.com/matthiasmullie/minify/issues/28
$tests[] = array(
'@font-face { src: url(//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.eot?v=4.2.0); }',
'@font-face{src:url(//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.eot?v=4.2.0)}',
);
// https://github.com/matthiasmullie/minify/issues/31
$tests[] = array(
'dfn,em,img{color:red}',
'dfn,em,img{color:red}',
);
// https://github.com/matthiasmullie/minify/issues/49
$tests[] = array(
__DIR__.'/sample/import_files/issue49.css',
'.social-btn a[href*="facebook"]{background-image:url(data:image/png;base64,'.base64_encode(file_get_contents(__DIR__.'/sample/import_files/facebook.png')).')}'.
'.social-btn a[href*="vimeo"]{background-image:url(data:image/png;base64,'.base64_encode(file_get_contents(__DIR__.'/sample/import_files/vimeo.png')).')}'.
'.social-btn a[href*="instagram"]{background-image:url(data:image/png;base64,'.base64_encode(file_get_contents(__DIR__.'/sample/import_files/instagram.png')).')}',
);
// https://github.com/matthiasmullie/minify/issues/68
$tests[] = array(
__DIR__.'/sample/external_imports/issue68.css',
'@import url(http://localhost/file.css);body{background:green}',
);
// https://github.com/matthiasmullie/minify/issues/67
$tests[] = array(
'body { }
p { color: #fff; }',
'p{color:#fff}',
);
$tests[] = array(
'body {}
p { color: #fff; }
h1 { }
strong { color: red; }',
'p{color:#fff}strong{color:red}',
);
// https://github.com/matthiasmullie/minify/issues/74
$tests[] = array(
"@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (min-device-pixel-ratio: 1.5) {
#fancybox-loading,.fancybox-close,.fancybox-prev span,.fancybox-next span {
background-image: url('/path/to/image.png');
background-size: 44px 152px;
}
#fancybox-loading div {
background-image: url('/path/to/image.gif');
background-size: 24px 24px;
}
}",
'@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5){#fancybox-loading,.fancybox-close,.fancybox-prev span,.fancybox-next span{background-image:url(/path/to/image.png);background-size:44px 152px}#fancybox-loading div{background-image:url(/path/to/image.gif);background-size:24px 24px}}',
);
// https://github.com/matthiasmullie/minify/issues/92
$tests[] = array(
'@media (min-width:320px) {
/* smartphones, iPhone, portrait 480x320 phones */
p {
background-color: red;
}
}
@media (min-width:1025px) {
/* big landscape tablets, laptops, and desktops */
/* LEFT EMPTY OF ANY SELECTORS */
}
@media (min-width:1281px) {
/* hi-res laptops and desktops */
p {
background-color: blue;
}
}',
'@media (min-width:320px){p{background-color:red}}@media (min-width:1281px){p{background-color:blue}}',
);
// https://github.com/matthiasmullie/minify/issues/103
$tests[] = array(
'background:url(http://example.com/test.png);',
'background:url(http://example.com/test.png);',
);
// https://github.com/matthiasmullie/minify/issues/104
$tests[] = array(
'@media screen and (min-aspect-ratio: 16/9) { p { color: red } }',
'@media screen and (min-aspect-ratio:16/9){p{color:red}}',
);
// https://github.com/matthiasmullie/minify/issues/107
$tests[] = array(
'@import "https://font.googleapis.com/css?family=RobotoDraft:regular&lang=en";',
'@import "https://font.googleapis.com/css?family=RobotoDraft:regular&lang=en";',
);
$tests[] = array(
'@import "https://font.googleapis.com/css?family=RobotoDraft:regular&lang=en";',
'@import "https://font.googleapis.com/css?family=RobotoDraft:regular&lang=en";',
);
// https://github.com/matthiasmullie/minify/issues/109
$tests[] = array(
'p{font-weight:bold;}',
'p{font-weight:700}',
);
$tests[] = array(
'p {
font-weight : normal
}',
'p{font-weight:400}',
);
$tests[] = array(
'p{background-color:#ff0000}',
'p{background-color:red}',
);
$tests[] = array(
'p{color:#F0E68C}',
'p{color:khaki}',
);
// https://github.com/matthiasmullie/minify/issues/137
$tests[] = array(
'p{width: calc(35% - 0px);}',
'p{width:calc(35%)}',
);
$tests[] = array(
'p{width: calc(0px + 35%);}',
'p{width:calc(35%)}',
);
$tests[] = array(
'p{width: calc(0px - 35%);}',
'p{width:calc(-35%)}',
);
$tests[] = array(
'p{width: calc(0px + 35% - 0px);}',
'p{width:calc(35%)}',
);
$tests[] = array(
'p{width: calc(5% + 0px + 35% - 0px + 5%);}',
'p{width:calc(5% + 35% + 5%)}',
);
$tests[] = array(
'p{width:calc(35% + (10% + 0px))}',
'p{width:calc(35% + (10%))}',
);
$tests[] = array(
'p{width:calc(35% + (10% + 0px + 10%))}',
'p{width:calc(35% + (10% + 10%))}',
);
// https://github.com/matthiasmullie/minify/issues/139
$tests[] = array(
__DIR__.'/sample/line_endings/lf/parent.css',
'p{color:green}body{color:red}',
);
$tests[] = array(
__DIR__.'/sample/line_endings/cr/parent.css',
'p{color:green}body{color:red}',
);
$tests[] = array(
__DIR__.'/sample/line_endings/crlf/parent.css',
'p{color:green}body{color:red}',
);
// https://github.com/matthiasmullie/minify/issues/145
$tests[] = array(
'/* some imports */
@import \'./css1.css\';
@import url(\'https://www.google.com/main.css\');
.empty-rule{
}
body{
background: white;
}',
'@import "./css1.css";@import url(https://www.google.com/main.css);body{background:white}',
);
// https://github.com/matthiasmullie/minify/commit/3253a81d07cd01afcb651e309900d8ad58a052da#commitcomment-19223603
$tests[] = array(
'p{border: 1px solid #f00000;}',
'p{border:1px solid #f00000}',
);
// https://github.com/matthiasmullie/minify/issues/149
$tests[] = array(
".headerWrapper{
background:url(/_media/images/general/bg_top_right.png) no-repeat;
background:url('') no-repeat;
background-position:100% 0;
width:100%;
min-height: 0;
}",
".headerWrapper{background:url(/_media/images/general/bg_top_right.png) no-repeat;background:url('') no-repeat;background-position:100% 0;width:100%;min-height:0}",
);
$tests[] = array(
".headerWrapper{
/*background:url(/_media/images/general/bg_top_right.png) no-repeat;*/
background:url('') no-repeat;
background-position:100% 0;
width:100%;
min-height: 0;
}",
".headerWrapper{background:url('') no-repeat;background-position:100% 0;width:100%;min-height:0}",
);
// https://github.com/matthiasmullie/minify/issues/150
$tests[] = array(
'.text { box-shadow: 0 0 1em -0.5em #000; }',
'.text{box-shadow:0 0 1em -.5em #000}',
);
// https://github.com/matthiasmullie/minify/issues/159
$tests[] = array(
'.columns {
-webkit-flex: 1 1 0px;
-ms-flex: 1 1 0px;
flex: 1 1 0px;
min-width: 0;
}',
'.columns{-webkit-flex:1 1 0%;-ms-flex:1 1 0%;flex:1 1 0%;min-width:0}',
);
$tests[] = array(
'html{height:100%;font-family:sans-serif}.grid{max-width:60em;display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 auto;-ms-flex-wrap:wrap;flex-wrap:wrap}.column{margin:.5em;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px;border:1px solid #333;height:1em;padding:1em;text-align:center;color:#333}',
'html{height:100%;font-family:sans-serif}.grid{max-width:60em;display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 auto;-ms-flex-wrap:wrap;flex-wrap:wrap}.column{margin:.5em;-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%;border:1px solid #333;height:1em;padding:1em;text-align:center;color:#333}',
);
$tests[] = array(
'p{flex:1 1 0;-ms-flex-basis:0%;}',
'p{flex:1 1 0%;-ms-flex-basis:0%}',
);
// https://github.com/matthiasmullie/minify/issues/162
$tests[] = array(
"p{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\")}",
"p{background-image:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E)}",
);
$tests[] = array(
"p{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\")}",
"p{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\")}",
);
$tests[] = array(
'p{background-image:url(\'data:image/svg+xml;utf8,\')}',
'p{background-image:url(\'data:image/svg+xml;utf8,\')}',
);
$tests[] = array(
'p{background-image:url(\'data:image/svg+xml;utf8,\')}',
'p{background-image:url(\'data:image/svg+xml;utf8,\')}',
);
// https://github.com/matthiasmullie/minify/issues/165
$tests[] = array(
"p{src:url('../../font/archivo_narrow_regular.eot?#iefix') format('embedded-opentype')}",
"p{src:url('../../font/archivo_narrow_regular.eot?#iefix') format('embedded-opentype')}",
);
$tests[] = array(
"p{src:url('../../font/archivo_narrow_regular.svg#archivo narrow') format('svg')}",
"p{src:url('../../font/archivo_narrow_regular.svg#archivo narrow') format('svg')}",
);
// https://github.com/matthiasmullie/minify/issues/183
$tests[] = array(
".mce-container,
.mce-container *,
.mce-widget,
.mce-widget *,
.mce-reset {
color: red;
}",
".mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{color:red}",
);
// https://github.com/matthiasmullie/minify/issues/184
$tests[] = array(
".soliloquy-container, .soliloquy-container * {color:red}",
".soliloquy-container,.soliloquy-container *{color:red}",
);
$tests[] = array(
"p{background: transparent url(images/preloader.gif) no-repeat scroll 50% 50%;}",
"p{background:transparent url(images/preloader.gif) no-repeat scroll 50% 50%}",
);
return $tests;
}
/**
* @return array [input, expected result]
*/
public function dataProviderPaths()
{
$tests = array();
$source = __DIR__.'/sample/convert_relative_path/source';
$target = __DIR__.'/sample/convert_relative_path/target';
// external link
$tests[] = array(
$source.'/external.css',
$target.'/external.css',
file_get_contents($source.'/external.css'),
);
// absolute path
$tests[] = array(
$source.'/absolute.css',
$target.'/absolute.css',
file_get_contents($source.'/absolute.css'),
);
// relative paths
$tests[] = array(
$source.'/relative.css',
$target.'/relative.css',
'@import url(stylesheet.css);',
);
$tests[] = array(
$source.'/../source/relative.css',
$target.'/target/relative.css',
'@import url(../stylesheet.css);',
);
// https://github.com/matthiasmullie/minify/issues/29
$tests[] = array(
$source.'/issue29.css',
$target.'/issue29.css',
'@import url(http://myurl.de);',
);
// https://github.com/matthiasmullie/minify/issues/38
$tests[] = array(
$source.'/relative.css',
null, // no output file
file_get_contents($source.'/relative.css'),
);
// https://github.com/matthiasmullie/minify/issues/39
$tests[] = array(
$source.'/issue39.css',
null, // no output file
// relative paths should remain untouched
"@font-face{font-family:'blackcat';src:url(../webfont/blackcat.eot);src:url('../webfont/blackcat.eot?#iefix') format('embedded-opentype'),url('../webfont/blackcat.svg#blackcat') format('svg'),url(../webfont/blackcat.woff) format('woff'),url(../webfont/blackcat.ttf) format('truetype');font-weight:400;font-style:normal}",
);
$tests[] = array(
$source.'/issue39.css',
$target.'/issue39.css',
// relative paths should remain untouched
"@font-face{font-family:'blackcat';src:url(../webfont/blackcat.eot);src:url('../webfont/blackcat.eot?#iefix') format('embedded-opentype'),url('../webfont/blackcat.svg#blackcat') format('svg'),url(../webfont/blackcat.woff) format('woff'),url(../webfont/blackcat.ttf) format('truetype');font-weight:400;font-style:normal}",
);
$tests[] = array(
$source.'/issue39.css',
$target.'/target/issue39.css',
// relative paths should have changed
"@font-face{font-family:'blackcat';src:url(../../webfont/blackcat.eot);src:url('../../webfont/blackcat.eot?#iefix') format('embedded-opentype'),url('../../webfont/blackcat.svg#blackcat') format('svg'),url(../../webfont/blackcat.woff) format('woff'),url(../../webfont/blackcat.ttf) format('truetype');font-weight:400;font-style:normal}",
);
// https://github.com/forkcms/forkcms/issues/1121
$tests[] = array(
$source.'/nested/nested.css',
$target.'/nested.css',
'@import url(stylesheet.css);',
);
// https://github.com/forkcms/forkcms/issues/1186
$tests[] = array(
array(
// key is a bogus path
'/Users/mathias/Documents/— Projecten/PROJECT_NAAM/Web/src/Backend/Core/Layout/Css/screen.css' => '@import url("imports/typography.css");',
),
'/Users/mathias/Documents/— Projecten/PROJECT_NAAM/Web/src/Backend/Cache/MinifiedCss/some-hash.css',
'@import url(../../Core/Layout/Css/imports/typography.css);',
);
// https://github.com/matthiasmullie/minify/issues/77#issuecomment-172844822
$tests[] = array(
$source.'/get-params.css',
$target.'/get-params.css',
'@import url(../source/some-file.css?some=param);',
);
$sourceRelative = 'tests/css/sample/convert_relative_path/source';
$targetRelative = 'tests/css/sample/convert_relative_path/target';
// from and/or to are relative links
$tests[] = array(
$sourceRelative.'/relative.css',
$target.'/relative.css',
'@import url(stylesheet.css);',
);
// note: relative target only works if the file already exists: it has
// to be able to realpath()
$tests[] = array(
$source.'/relative.css',
$targetRelative.'/relative.css',
'@import url(stylesheet.css);',
);
$tests[] = array(
$sourceRelative.'/relative.css',
$targetRelative.'/relative.css',
'@import url(stylesheet.css);',
);
$source = __DIR__.'/sample/symlink';
$target = __DIR__.'/sample/symlink/target';
$sourceRelative = 'tests/css/sample/symlink';
$targetRelative = 'tests/css/sample/symlink/target';
// import symlinked files: relative, absolute & mix
$tests[] = array(
$source.'/import_symlinked_file.css',
$target.'/import_symlinked_file.css',
'',
);
$tests[] = array(
$sourceRelative.'/import_symlinked_file.css',
$targetRelative.'/import_symlinked_file.css',
'',
);
$tests[] = array(
$source.'/import_symlinked_file.css',
$targetRelative.'/import_symlinked_file.css',
'',
);
$tests[] = array(
$sourceRelative.'/import_symlinked_file.css',
$target.'/import_symlinked_file.css',
'',
);
// move symlinked files: relative, absolute & mix
$tests[] = array(
$source.'/move_symlinked_file.css',
$target.'/move_symlinked_file.css',
'body{background-url:url(../assets/symlink.bmp)}',
);
$tests[] = array(
$sourceRelative.'/move_symlinked_file.css',
$targetRelative.'/move_symlinked_file.css',
'body{background-url:url(../assets/symlink.bmp)}',
);
$tests[] = array(
$source.'/move_symlinked_file.css',
$targetRelative.'/move_symlinked_file.css',
'body{background-url:url(../assets/symlink.bmp)}',
);
$tests[] = array(
$source.'/move_symlinked_file.css',
$targetRelative.'/move_symlinked_file.css',
'body{background-url:url(../assets/symlink.bmp)}',
);
// import symlinked folders: relative, absolute & mix
$tests[] = array(
$source.'/import_symlinked_folder.css',
$target.'/import_symlinked_folder.css',
'',
);
$tests[] = array(
$sourceRelative.'/import_symlinked_folder.css',
$targetRelative.'/import_symlinked_folder.css',
'',
);
$tests[] = array(
$source.'/import_symlinked_folder.css',
$targetRelative.'/import_symlinked_folder.css',
'',
);
$tests[] = array(
$sourceRelative.'/import_symlinked_folder.css',
$target.'/import_symlinked_folder.css',
'',
);
// move symlinked folders: relative, absolute & mix
$tests[] = array(
$source.'/move_symlinked_folder.css',
$target.'/move_symlinked_folder.css',
'body{background-url:url(../assets_symlink/asset.bmp)}',
);
$tests[] = array(
$sourceRelative.'/move_symlinked_folder.css',
$targetRelative.'/move_symlinked_folder.css',
'body{background-url:url(../assets_symlink/asset.bmp)}',
);
$tests[] = array(
$source.'/move_symlinked_folder.css',
$targetRelative.'/move_symlinked_folder.css',
'body{background-url:url(../assets_symlink/asset.bmp)}',
);
$tests[] = array(
$sourceRelative.'/move_symlinked_folder.css',
$target.'/move_symlinked_folder.css',
'body{background-url:url(../assets_symlink/asset.bmp)}',
);
// https://github.com/matthiasmullie/minify/issues/100
$tests[] = array(
array(
// key is a bogus path
'/var/www/app/www/turysta/something/css/original.css' => '.ui-icon { width: 16px; height: 16px; background-image: url(/_lay/jqueryui/ui-icons_72b42d_256x240.png); }',
),
'/var/www/app/www/turysta/shared/_cache/_css/minified.css',
'.ui-icon{width:16px;height:16px;background-image:url(/_lay/jqueryui/ui-icons_72b42d_256x240.png)}',
);
return $tests;
}
}