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();