private function cacheSystem($keepBaseName)
{
$cacheDirectory = sys_get_temp_dir() . '/pug-test';
$this->emptyDirectory($cacheDirectory);
if (!is_dir($cacheDirectory)) {
mkdir($cacheDirectory, 0777, true);
}
$file = tempnam(sys_get_temp_dir(), 'jade-test-');
$jade = new Jade(array('singleQuote' => false, 'keepBaseName' => $keepBaseName, 'cache' => $cacheDirectory));
copy(__DIR__ . '/../templates/attrs.jade', $file);
$name = basename($file);
$stream = $jade->cache($file);
$phpFiles = array_values(array_map(function ($file) use($cacheDirectory) {
return $cacheDirectory . DIRECTORY_SEPARATOR . $file;
}, array_filter(scandir($cacheDirectory), function ($file) {
return substr($file, -4) === '.php';
})));
$start = 'jade.stream://data;';
$this->assertTrue(strpos($stream, $start) === 0, 'Fresh content should be a stream.');
$this->assertSame(1, count($phpFiles), 'The cached file should now exist.');
$cachedFile = realpath($phpFiles[0]);
$this->assertFalse(!$cachedFile, 'The cached file should now exist.');
$this->assertSame($stream, $jade->stream($jade->compile($file)), 'Should return the stream of attrs.jade.');
$this->assertStringEqualsFile($cachedFile, substr($stream, strlen($start)), 'The cached file should contains the same contents.');
touch($file, time() - 3600);
$path = $jade->cache($file);
$this->assertSame(realpath($path), $cachedFile, 'The cached file should be used instead if untouched.');
copy(__DIR__ . '/../templates/mixins.jade', $file);
touch($file, time() + 3600);
$stream = $jade->cache($file);
$this->assertSame($stream, $jade->stream($jade->compile(__DIR__ . '/../templates/mixins.jade')), 'The cached file should be the stream of mixins.jade.');
unlink($file);
}