Commit 1e23b91b authored by webchick's avatar webchick
Browse files

#472820 by rfay, Rob Loach, and catch: Fixed improper whitespace...

#472820 by rfay, Rob Loach, and catch: Fixed improper whitespace removal/invalid CSS from drupal_load_stylesheet_content() (with tests).
parent 93eb8b34
......@@ -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);
}
......
/* $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;
}
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
/* $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;
}
......@@ -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().
*/
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment