Exemplo n.º 1
0
 /**
  * (non-PHPdoc)
  * @see lib/action/sfAction::postExecute()
  */
 public function postExecute()
 {
     try {
         return sfXCSSTools::saveForWeb($this->requestedCSSFile, $this->xcss);
     } catch (RuntimeException $e) {
         if (in_array($e->getMessage(), array(sfXCSSTools::EXCEPTION_COULD_NOT_CREATE_SAVE_FOR_WEB_DIR, sfXCSSTools::EXCEPTION_SAVE_FOR_WEB_DISABLED))) {
             return false;
         } else {
             throw $e;
         }
     }
 }
$limeTest->ok(!empty($cacheDir), 'Cache dir configured.');
$limeTest->ok(sfXCSSTools::createCacheDirectory(), 'Cache dir created.');
$limeTest->ok(is_writable($cacheDir), 'Cache dir writable.');
$limeTest->ok(rmdir($cacheDir), 'Cache dir removed.');
// case: disabled web caching
sfConfig::set('app_xcssplugin_saveforweb', false);
try {
    sfXCSSTools::saveForWeb($filename, 'some css');
    $limeTest->fail('Exception not thrown.');
} catch (RuntimeException $e) {
    $limeTest->is($e->getMessage(), sfXCSSTools::EXCEPTION_SAVE_FOR_WEB_DISABLED, 'Exception caught.');
}
// case: enabled web caching, but wrong permissions
sfConfig::set('app_xcssplugin_saveforweb', 'tmp');
$folder = sfConfig::get('sf_web_dir') . DIRECTORY_SEPARATOR . 'tmp';
$limeTest->ok(mkdir($folder, 00), 'Save For Web dir not writable.');
try {
    sfXCSSTools::saveForWeb($filename, 'some css');
    $limeTest->fail('Exception not thrown.');
} catch (RuntimeException $e) {
    $limeTest->is($e->getMessage(), sfXCSSTools::EXCEPTION_COULD_NOT_CREATE_SAVE_FOR_WEB_DIR, 'Exception caught.');
}
$limeTest->ok(!is_writable($folder . DIRECTORY_SEPARATOR . $filename), 'File is not writable.');
// case: enabled web caching, correct permissions
$limeTest->ok(chmod($folder, 0700), 'Save For Web dir writable.');
sfXCSSTools::saveForWeb($filename, 'some css');
$limeTest->ok(file_exists($folder . DIRECTORY_SEPARATOR . $filename), 'File has been written');
$limeTest->ok(is_writable($folder . DIRECTORY_SEPARATOR . $filename), 'File is writable ');
// cleanup
$limeTest->ok(unlink($folder . DIRECTORY_SEPARATOR . $filename), 'File has been removed.');
$limeTest->ok(rmdir($folder), 'Save For Web dir removed.');