From: Bartosz DziewoƄski Date: Sat, 9 Nov 2013 23:52:14 +0000 (+0100) Subject: More tests for CSSMin::remap X-Git-Tag: 1.31.0-rc.0~17862 X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/membres/message.php?a=commitdiff_plain;h=cdcf0d5ed712cb27b24fa32032964dbb41f795a1;p=lhc%2Fweb%2Fwiklou.git More tests for CSSMin::remap Also added commented-out tests which should work, but don't. Making them work in subsequent patch If9082f55. Change-Id: I65f62493e6d10e7e90af8844f8a26e3982d75f51 --- diff --git a/tests/phpunit/data/cssmin/green.gif b/tests/phpunit/data/cssmin/green.gif new file mode 100644 index 0000000000..f9e7531658 Binary files /dev/null and b/tests/phpunit/data/cssmin/green.gif differ diff --git a/tests/phpunit/data/cssmin/large.png b/tests/phpunit/data/cssmin/large.png new file mode 100644 index 0000000000..64bf48aacf Binary files /dev/null and b/tests/phpunit/data/cssmin/large.png differ diff --git a/tests/phpunit/data/cssmin/red.gif b/tests/phpunit/data/cssmin/red.gif new file mode 100644 index 0000000000..13c43e906c Binary files /dev/null and b/tests/phpunit/data/cssmin/red.gif differ diff --git a/tests/phpunit/includes/libs/CSSMinTest.php b/tests/phpunit/includes/libs/CSSMinTest.php index 43df5ebd8a..57d43f90aa 100644 --- a/tests/phpunit/includes/libs/CSSMinTest.php +++ b/tests/phpunit/includes/libs/CSSMinTest.php @@ -69,6 +69,8 @@ class CSSMinTest extends MediaWikiTestCase { } /** + * This tests funky parameters to CSSMin::remap. testRemapRemapping tests the basic functionality. + * * @dataProvider provideRemapCases * @covers CSSMin::remap */ @@ -111,6 +113,114 @@ class CSSMinTest extends MediaWikiTestCase { ); } + /** + * This tests basic functionality of CSSMin::remap. testRemapRemapping tests funky parameters. + * + * @dataProvider provideRemapRemappingCases + * @covers CSSMin::remap + */ + public function testRemapRemapping( $message, $input, $expectedOutput ) { + $localPath = __DIR__ . '/../../data/cssmin/'; + $remotePath = 'http://localhost/w/'; + + $realOutput = CSSMin::remap( $input, $localPath, $remotePath ); + + $this->assertEquals( + $expectedOutput, + preg_replace( '/\d+-\d+-\d+T\d+:\d+:\d+Z/', 'timestamp', $realOutput ), + "CSSMin::remap: $message" + ); + } + + public static function provideRemapRemappingCases() { + // red.gif and green.gif are one-pixel 35-byte GIFs. + // large.png is a 35K PNG that should be non-embeddable. + // Full paths start with http://localhost/w/. + // Timestamps in output are replaced with 'timestamp'. + + // data: URIs for red.gif and green.gif + $red = 'data:image/gif;base64,R0lGODlhAQABAIAAAP8AADAAACwAAAAAAQABAAACAkQBADs='; + $green = 'data:image/gif;base64,R0lGODlhAQABAIAAAACAADAAACwAAAAAAQABAAACAkQBADs='; + + return array( + array( + 'Regular file', + 'foo { background: url(red.gif); }', + 'foo { background: url(http://localhost/w/red.gif?timestamp); }', + ), + array( + 'Remote URL', + 'foo { background: url(http://example.org/w/foo.png); }', + 'foo { background: url(http://example.org/w/foo.png); }', + ), + array( + 'Embedded file', + 'foo { /* @embed */ background: url(red.gif); }', + "foo { background: url($red); background: url(http://localhost/w/red.gif?timestamp)!ie; }", + ), + array( + 'Can not embed remote URLs', + 'foo { /* @embed */ background: url(http://example.org/w/foo.png); }', + 'foo { /* @embed */ background: url(http://example.org/w/foo.png); }', + ), + // array( // Not supported :( + // 'Embedded file (inline @embed)', + // 'foo { background: /* @embed */ url(red.gif); }', + // "foo { background: url($red); background: url(http://localhost/w/red.gif?timestamp)!ie; }", + // ), + array( + 'Can not embed large files', + 'foo { /* @embed */ background: url(large.png); }', + "foo { /* @embed */ background: url(http://localhost/w/large.png?timestamp); }", + ), + // array( // Not supported :( + // 'Two regular files in one rule', + // 'foo { background: url(red.gif), url(green.gif); }', + // 'foo { background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/green.gif?timestamp); }', + // ), + // array( // Not supported :( + // 'Two embedded files in one rule', + // 'foo { /* @embed */ background: url(red.gif), url(green.gif); }', + // "foo { background: url($red), url($green); background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/green.gif?timestamp)!ie; }", + // ), + // array( // Not supported :( + // 'Two embedded files in one rule (inline @embed)', + // 'foo { background: /* @embed */ url(red.gif), /* @embed */ url(green.gif); }', + // "foo { background: url($red), url($green); background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/green.gif?timestamp)!ie; }", + // ), + // array( // Not supported :( + // 'Two embedded files in one rule (inline @embed), one too large', + // 'foo { background: /* @embed */ url(red.gif), /* @embed */ url(large.png); }', + // "foo { background: url($red), url(http://localhost/w/large.png?timestamp); background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/large.png?timestamp)!ie; }", + // ), + array( + 'Practical example with some noise', + 'foo { /* @embed */ background: #f9f9f9 url(red.gif) 0 0 no-repeat; }', + "foo { background: #f9f9f9 url($red) 0 0 no-repeat; background: #f9f9f9 url(http://localhost/w/red.gif?timestamp) 0 0 no-repeat!ie; }", + ), + array( + 'Does not mess with other properties', + 'foo { color: red; background: url(red.gif); font-size: small; }', + 'foo { color: red; background: url(http://localhost/w/red.gif?timestamp); font-size: small; }', + ), + array( + 'Spacing and miscellanea not changed (1)', + 'foo { background: url(red.gif); }', + 'foo { background: url(http://localhost/w/red.gif?timestamp); }', + ), + array( + 'Spacing and miscellanea not changed (2)', + 'foo {background:url(red.gif)}', + 'foo {background:url(http://localhost/w/red.gif?timestamp)};', // <-- This trailing semicolon should not be here! + ), + // array( // Not supported :( + // 'Spaces within url() parentheses are ignored', + // 'foo { background: url( red.gif ); }', + // 'foo { background: url(http://localhost/w/red.gif?timestamp); }', + // ), + ); + } + /** * Seperated because they are currently broken (bug 35492) *