summaryrefslogtreecommitdiff
path: root/plugins/Minify/extlib/minify/min_unit_tests/test_Minify.php
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Minify/extlib/minify/min_unit_tests/test_Minify.php')
-rw-r--r--plugins/Minify/extlib/minify/min_unit_tests/test_Minify.php213
1 files changed, 213 insertions, 0 deletions
diff --git a/plugins/Minify/extlib/minify/min_unit_tests/test_Minify.php b/plugins/Minify/extlib/minify/min_unit_tests/test_Minify.php
new file mode 100644
index 000000000..7075570ba
--- /dev/null
+++ b/plugins/Minify/extlib/minify/min_unit_tests/test_Minify.php
@@ -0,0 +1,213 @@
+<?php
+
+// currently these only test serve() when passed the 'quiet' options
+
+require_once '_inc.php';
+require_once 'Minify.php';
+
+function test_Minify()
+{
+ global $thisDir;
+
+ $minifyTestPath = dirname(__FILE__) . '/_test_files/minify';
+ $thisFileActive = (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME']));
+ $tomorrow = $_SERVER['REQUEST_TIME'] + 86400;
+ $lastModified = $_SERVER['REQUEST_TIME'] - 86400;
+
+ // Test 304 response
+
+ // simulate conditional headers
+ $_SERVER['HTTP_IF_NONE_MATCH'] = "\"{$lastModified}pub\"";
+ $_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s \G\M\T', $lastModified);
+
+ $expected = array (
+ 'success' => true
+ ,'statusCode' => 304
+ ,'content' => '',
+ 'headers' => array(
+ 'Expires' => gmdate('D, d M Y H:i:s \G\M\T', $_SERVER['REQUEST_TIME'] + 1800),
+ 'Vary' => 'Accept-Encoding',
+ 'Last-Modified' => gmdate('D, d M Y H:i:s \G\M\T', $lastModified),
+ 'ETag' => "\"pub{$lastModified}\"",
+ 'Cache-Control' => 'max-age=1800, public',
+ '_responseCode' => 'HTTP/1.0 304 Not Modified',
+ )
+ );
+ $output = Minify::serve('Files', array(
+ 'files' => $thisDir . '/_test_files/css/styles.css' // controller casts to array
+ ,'quiet' => true
+ ,'lastModifiedTime' => $lastModified
+ ,'encodeOutput' => false
+ ));
+ $passed = assertTrue($expected === $output, 'Minify : 304 response');
+ if ($thisFileActive) {
+ echo "\nOutput: " .var_export($output, 1). "\n\n";
+ if (! $passed) {
+ echo "\n\n\n\n---Expected: " .var_export($expected, 1). "\n\n";
+ }
+ }
+
+ assertTrue(
+ ! class_exists('Minify_CSS', false)
+ && ! class_exists('Minify_Cache', false)
+ ,'Minify : cache, and minifier classes aren\'t loaded for 304s'
+ );
+
+ // Test minifying JS and serving with Expires header
+
+ $content = preg_replace('/\\r\\n?/', "\n", file_get_contents($minifyTestPath . '/minified.js'));
+ $lastModified = max(
+ filemtime($minifyTestPath . '/email.js')
+ ,filemtime($minifyTestPath . '/QueryString.js')
+ );
+ $expected = array(
+ 'success' => true
+ ,'statusCode' => 200
+ // JSMin always converts to \n line endings
+ ,'content' => $content
+ ,'headers' => array (
+ 'Expires' => gmdate('D, d M Y H:i:s \G\M\T', $tomorrow),
+ 'Vary' => 'Accept-Encoding',
+ 'Last-Modified' => gmdate('D, d M Y H:i:s \G\M\T', $lastModified),
+ 'ETag' => "\"pub{$lastModified}\"",
+ 'Cache-Control' => 'max-age=86400, public',
+ 'Content-Length' => strlen($content),
+ 'Content-Type' => 'application/x-javascript; charset=utf-8',
+ )
+ );
+ $output = Minify::serve('Files', array(
+ 'files' => array(
+ $minifyTestPath . '/email.js'
+ ,$minifyTestPath . '/QueryString.js'
+ )
+ ,'quiet' => true
+ ,'maxAge' => 86400
+ ,'encodeOutput' => false
+ ));
+
+ $passed = assertTrue($expected === $output, 'Minify : JS and Expires');
+ if ($thisFileActive) {
+ echo "\nOutput: " .var_export($output, 1). "\n\n";
+ if (! $passed) {
+ echo "\n\n\n\n---Expected: " .var_export($expected, 1). "\n\n";
+ }
+ }
+
+ // test for Issue 73
+ Minify::setCache(null);
+
+ $expected = ";function h(){}";
+ $output = Minify::serve('Files', array(
+ 'files' => array(
+ $minifyTestPath . '/issue73_1.js'
+ ,$minifyTestPath . '/issue73_2.js'
+ )
+ ,'quiet' => true
+ ,'encodeOutput' => false
+ ));
+ $output = $output['content'];
+
+ $passed = assertTrue($expected === $output, 'Minify : Issue 73');
+ if ($thisFileActive) {
+ if (! $passed) {
+ echo "\n---Output : " .var_export($output, 1). "\n";
+ echo "---Expected: " .var_export($expected, 1). "\n\n";
+ }
+ }
+
+ // test for Issue 89
+ $expected = file_get_contents($minifyTestPath . '/issue89_out.min.css');
+ $output = Minify::serve('Files', array(
+ 'files' => array(
+ $minifyTestPath . '/issue89_1.css'
+ ,$minifyTestPath . '/issue89_2.css'
+ )
+ ,'quiet' => true
+ ,'encodeOutput' => false
+ ,'bubbleCssImports' => true
+ ));
+ $output = $output['content'];
+ $passed = assertTrue($expected === $output, 'Minify : Issue 89 : bubbleCssImports');
+ if ($thisFileActive) {
+ if (! $passed) {
+ echo "\n---Output : " .var_export($output, 1). "\n";
+ echo "---Expected: " .var_export($expected, 1). "\n\n";
+ }
+ }
+
+ $output = Minify::serve('Files', array(
+ 'files' => array(
+ $minifyTestPath . '/issue89_1.css'
+ ,$minifyTestPath . '/issue89_2.css'
+ )
+ ,'quiet' => true
+ ,'encodeOutput' => false
+ ));
+ $output = $output['content'];
+ $passed = assertTrue(0 === strpos($output, Minify::$importWarning), 'Minify : Issue 89 : detect invalid imports');
+ if ($thisFileActive) {
+ if (! $passed) {
+ echo "\n---Output : " .var_export($output, 1). "\n";
+ echo "---Expected: " .var_export($expected, 1). "\n\n";
+ }
+ }
+
+ $output = Minify::serve('Files', array(
+ 'files' => array(
+ $minifyTestPath . '/issue89_1.css'
+ )
+ ,'quiet' => true
+ ,'encodeOutput' => false
+ ));
+ $output = $output['content'];
+ $passed = assertTrue(false === strpos($output, Minify::$importWarning), 'Minify : Issue 89 : don\'t warn about valid imports');
+ if ($thisFileActive) {
+ if (! $passed) {
+ echo "\n---Output : " .var_export($output, 1). "\n";
+ echo "---Expected: " .var_export($expected, 1). "\n\n";
+ }
+ }
+
+ // Test minifying CSS and responding with Etag/Last-Modified
+
+ Minify::setCache(null);
+
+ // don't allow conditional headers
+ unset($_SERVER['HTTP_IF_NONE_MATCH'], $_SERVER['HTTP_IF_MODIFIED_SINCE']);
+
+ $expectedContent = file_get_contents($minifyTestPath . '/minified.css');
+
+ $expected = array(
+ 'success' => true
+ ,'statusCode' => 200
+ ,'content' => $expectedContent
+ ,'headers' => array (
+ 'Vary' => 'Accept-Encoding',
+ 'Last-Modified' => gmdate('D, d M Y H:i:s \G\M\T', $lastModified),
+ 'ETag' => "\"pub{$lastModified}\"",
+ 'Cache-Control' => 'max-age=0, public',
+ 'Content-Length' => strlen($expectedContent),
+ 'Content-Type' => 'text/css; charset=utf-8',
+ )
+ );
+ $output = Minify::serve('Files', array(
+ 'files' => array(
+ $thisDir . '/_test_files/css/styles.css'
+ ,$thisDir . '/_test_files/css/comments.css'
+ )
+ ,'quiet' => true
+ ,'lastModifiedTime' => $lastModified
+ ,'encodeOutput' => false
+ ,'maxAge' => false
+ ));
+
+ $passed = assertTrue($expected === $output, 'Minify : CSS and Etag/Last-Modified');
+ if ($thisFileActive) {
+ echo "\nOutput: " .var_export($output, 1). "\n\n";
+ if (! $passed) {
+ echo "\n\n\n\n---Expected: " .var_export($expected, 1). "\n\n";
+ }
+ }
+}
+
+test_Minify();