diff options
5 files changed, 133 insertions, 2 deletions
diff --git a/includes/common.inc b/includes/common.inc index ba1218d46..450777f3d 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -3062,8 +3062,7 @@ function drupal_load_stylesheet_content($contents, $optimize = FALSE) { // Perform some safe CSS optimizations. $contents = preg_replace('< \s*([@{}:;,]|\)\s|\s\()\s* | # Remove whitespace around separators, but keep space around parentheses. - /\*([^*\\\\]|\*(?!/))+\*/ | # Remove comments that are not CSS hacks. - [\n\r] # Remove line breaks. + /\*([^*\\\\]|\*(?!/))+\*/ # Remove comments that are not CSS hacks. >x', '\1', $contents); } diff --git a/modules/simpletest/files/css_test_files/css_input_without_import.css b/modules/simpletest/files/css_test_files/css_input_without_import.css new file mode 100644 index 000000000..70ad5a66e --- /dev/null +++ b/modules/simpletest/files/css_test_files/css_input_without_import.css @@ -0,0 +1,38 @@ +/* $Id$ */ + +/** + * @file Basic css that does not use import + */ + + +body { + margin: 0; + padding: 0; + background: #edf5fa; + font: 76%/170% Verdana, sans-serif; + color: #494949; +} + +.this .is .a .test { + font: 1em/100% Verdana, sans-serif; + color: #494949; +} + +/** + * CSS spec says that all whitespace is valid whitespace, so this selector should be just as + * good as the one above. + */ + +.this +.is +.a +.test { +font: 1em/100% Verdana, sans-serif; +color: #494949; +} + +textarea, select { + font: 1em/160% Verdana, sans-serif; + color: #494949; +} + diff --git a/modules/simpletest/files/css_test_files/css_input_without_import.css.optimized.css b/modules/simpletest/files/css_test_files/css_input_without_import.css.optimized.css new file mode 100644 index 000000000..bf139f490 --- /dev/null +++ b/modules/simpletest/files/css_test_files/css_input_without_import.css.optimized.css @@ -0,0 +1,11 @@ + + + + + +body{margin:0;padding:0;background:#edf5fa;font:76%/170% Verdana,sans-serif;color:#494949;}.this .is .a .test{font:1em/100% Verdana,sans-serif;color:#494949;} + +.this +.is +.a +.test{font:1em/100% Verdana,sans-serif;color:#494949;}textarea,select{font:1em/160% Verdana,sans-serif;color:#494949;}
\ No newline at end of file diff --git a/modules/simpletest/files/css_test_files/css_input_without_import.css.unoptimized.css b/modules/simpletest/files/css_test_files/css_input_without_import.css.unoptimized.css new file mode 100644 index 000000000..70ad5a66e --- /dev/null +++ b/modules/simpletest/files/css_test_files/css_input_without_import.css.unoptimized.css @@ -0,0 +1,38 @@ +/* $Id$ */ + +/** + * @file Basic css that does not use import + */ + + +body { + margin: 0; + padding: 0; + background: #edf5fa; + font: 76%/170% Verdana, sans-serif; + color: #494949; +} + +.this .is .a .test { + font: 1em/100% Verdana, sans-serif; + color: #494949; +} + +/** + * CSS spec says that all whitespace is valid whitespace, so this selector should be just as + * good as the one above. + */ + +.this +.is +.a +.test { +font: 1em/100% Verdana, sans-serif; +color: #494949; +} + +textarea, select { + font: 1em/160% Verdana, sans-serif; + color: #494949; +} + diff --git a/modules/simpletest/tests/common.test b/modules/simpletest/tests/common.test index e7b5af694..291750982 100644 --- a/modules/simpletest/tests/common.test +++ b/modules/simpletest/tests/common.test @@ -625,6 +625,51 @@ class DrupalCSSIdentifierTestCase extends DrupalUnitTestCase { } } + +/** + * CSS Unit Tests. + */ +class CascadingStylesheetsUnitTestCase extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => 'CSS Unit Tests', + 'description' => 'Unit tests on CSS functions like aggregation.', + 'group' => 'System', + ); + } + + /** + * Tests basic CSS loading with and without optimization + * (drupal_load_stylesheet()). + * This can be enhanced by adding additional css files with variant test cases. + * Currently, this is specifically testing to make sure that whitespace + * is treated with adequate respect (not arbitrarily removing linefeeds). + */ + function testLoadCssBasic() { + /** + * Array of files to test. Original = .css, + * unoptimized expected output = .css.unoptimized.css, + * optimized expected = .css.optimized.css + * They live in the simpletest/files/css_test_files directory + */ + $testfiles = array('css_input_without_import.css', ); + $path = drupal_get_path('module', 'simpletest') . '/files/css_test_files'; + foreach ($testfiles as $file) { + $expected = file_get_contents("$path/$file.unoptimized.css"); + $unoptimized_output = drupal_load_stylesheet("$path/$file", FALSE); + $this->assertEqual($unoptimized_output, $expected, + t('Loaded CSS Stylesheet has expected contents (unoptimized) (@file)', + array('@file' => $file))); + $expected = file_get_contents("$path/$file.optimized.css"); + $optimized_output = drupal_load_stylesheet("$path/$file", TRUE); + $this->assertEqual($optimized_output, $expected, + t('Loaded CSS Stylesheet has expected contents (optimized) (@file)', + array('@file' => $file))); + } + } +} + + /** * Test drupal_http_request(). */ |