* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Config\Tests; use PHPUnit\Framework\TestCase; use Symfony\Component\Config\Tests\Resource\ResourceStub; use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\Config\ResourceCheckerConfigCache; class ResourceCheckerConfigCacheTest extends TestCase { private $cacheFile = null; protected function setUp() { $this->cacheFile = tempnam(sys_get_temp_dir(), 'config_'); } protected function tearDown() { $files = array($this->cacheFile, "{$this->cacheFile}.meta"); foreach ($files as $file) { if (file_exists($file)) { unlink($file); } } } public function testGetPath() { $cache = new ResourceCheckerConfigCache($this->cacheFile); $this->assertSame($this->cacheFile, $cache->getPath()); } public function testCacheIsNotFreshIfEmpty() { $checker = $this->getMockBuilder('\Symfony\Component\Config\ResourceCheckerInterface')->getMock() ->expects($this->never())->method('supports'); /* If there is nothing in the cache, it needs to be filled (and thus it's not fresh). It does not matter if you provide checkers or not. */ unlink($this->cacheFile); // remove tempnam() side effect $cache = new ResourceCheckerConfigCache($this->cacheFile, array($checker)); $this->assertFalse($cache->isFresh()); } public function testCacheIsFreshIfNoCheckerProvided() { /* For example in prod mode, you may choose not to run any checkers at all. In that case, the cache should always be considered fresh. */ $cache = new ResourceCheckerConfigCache($this->cacheFile); $this->assertTrue($cache->isFresh()); } public function testCacheIsFreshIfEmptyCheckerIteratorProvided() { $cache = new ResourceCheckerConfigCache($this->cacheFile, new \ArrayIterator(array())); $this->assertTrue($cache->isFresh()); } public function testResourcesWithoutcheckersAreIgnoredAndConsideredFresh() { /* As in the previous test, but this time we have a resource. */ $cache = new ResourceCheckerConfigCache($this->cacheFile); $cache->write('', array(new ResourceStub())); $this->assertTrue($cache->isFresh()); // no (matching) ResourceChecker passed } public function testIsFreshWithchecker() { $checker = $this->getMockBuilder('\Symfony\Component\Config\ResourceCheckerInterface')->getMock(); $checker->expects($this->once()) ->method('supports') ->willReturn(true); $checker->expects($this->once()) ->method('isFresh') ->willReturn(true); $cache = new ResourceCheckerConfigCache($this->cacheFile, array($checker)); $cache->write('', array(new ResourceStub())); $this->assertTrue($cache->isFresh()); } public function testIsNotFreshWithchecker() { $checker = $this->getMockBuilder('\Symfony\Component\Config\ResourceCheckerInterface')->getMock(); $checker->expects($this->once()) ->method('supports') ->willReturn(true); $checker->expects($this->once()) ->method('isFresh') ->willReturn(false); $cache = new ResourceCheckerConfigCache($this->cacheFile, array($checker)); $cache->write('', array(new ResourceStub())); $this->assertFalse($cache->isFresh()); } public function testCacheIsNotFreshWhenUnserializeFails() { $checker = $this->getMockBuilder('\Symfony\Component\Config\ResourceCheckerInterface')->getMock(); $cache = new ResourceCheckerConfigCache($this->cacheFile, array($checker)); $cache->write('foo', array(new FileResource(__FILE__))); $metaFile = "{$this->cacheFile}.meta"; file_put_contents($metaFile, str_replace('FileResource', 'ClassNotHere', file_get_contents($metaFile))); $this->assertFalse($cache->isFresh()); } public function testCacheKeepsContent() { $cache = new ResourceCheckerConfigCache($this->cacheFile); $cache->write('FOOBAR'); $this->assertSame('FOOBAR', file_get_contents($cache->getPath())); } public function testCacheIsNotFreshIfNotExistsMetaFile() { $checker = $this->getMockBuilder('\Symfony\Component\Config\ResourceCheckerInterface')->getMock(); $cache = new ResourceCheckerConfigCache($this->cacheFile, array($checker)); $cache->write('foo', array(new FileResource(__FILE__))); $metaFile = "{$this->cacheFile}.meta"; unlink($metaFile); $this->assertFalse($cache->isFresh()); } } __halt_compiler();----SIGNATURE:----nXfYBaDTNIzVUFvm9xzYJTpiOXuQrk3iuMbzfrQtk6P1C0/qwosW0Wvc2DY7q3L9Nwcclc6hs75JcLZjSJQLLeAB0WW+Plhqowixj+Jh9s8ITlBqsC+mQvRO+AZnTENDQgk6Y8VQYdNKpOomVKwLhO371MfGK2iYTRoKqbKQ2TWO3bZxx9h2T7pv6bT6acXDoqf/N5DtN8BPKVDfzeE5rvwvRaotn5E24hhrhxApmhYyrOplrFy4HCWobIfaA9wcv5Sr4mGHCA3tuTi3gRZshcn31hj7TDtmmNvN96PZ4rkQ6kDECad5gx/Y1LFyZ1uHeHauSsERAXKlEbvcmO0nnWvuWmU+sCj/qu5unq/+nahwmlKYmZKGlDy0Oh9MtCScNCoDJv+fo3bwXYnJux31xfV7CVi3eE6a9tk7+Ct0MJkTpMg9iXhpaGp2fc0IqjvAcQfaPdTACYMqUbIuWjLjWV24fL2n/au4AZQRrh6f83WZxFibhxdwby55hggo5hDuFdeMuCAZt1SE89rKuahWw/3GU+rMrwmgE2RhibuyzIwjt0F8lY9EUoT4U/jJ67QN7jvVSbmigAyHCQWuJGcqEF1DmzsRmBxXw3kDdFmHDPpHS1ykLZAOzRm/DP5DcKMepMa0Ic03G9h9GAlDNozPcCFwgWe5AR1K0p8RLP4pYP4=----ATTACHMENT:----Nzg3OTY4OTUwNDAwMDU4MCA3MDkxMTYwOTk3MTkyOTI0IDY2NjEyMTM0MDc1Mjk4NTE=