|
|
|
@ -52,4 +52,39 @@ class FileCacheTest extends CacheTestCase
|
|
|
|
|
static::$time++; |
|
|
|
|
$this->assertFalse($cache->get('expire_testa')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testCacheRenewalOnDifferentOwnership() |
|
|
|
|
{ |
|
|
|
|
$TRAVIS_SECOND_USER = getenv('TRAVIS_SECOND_USER'); |
|
|
|
|
if (empty($TRAVIS_SECOND_USER)) { |
|
|
|
|
$this->markTestSkipped('Travis second user not found'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$cache = $this->getCacheInstance(); |
|
|
|
|
|
|
|
|
|
$cacheValue = uniqid('value_'); |
|
|
|
|
$cachePublicKey = uniqid('key_'); |
|
|
|
|
$cacheInternalKey = $cache->buildKey($cachePublicKey); |
|
|
|
|
|
|
|
|
|
static::$time = \time(); |
|
|
|
|
$this->assertTrue($cache->set($cachePublicKey, $cacheValue, 2)); |
|
|
|
|
$this->assertSame($cacheValue, $cache->get($cachePublicKey)); |
|
|
|
|
|
|
|
|
|
$refClass = new \ReflectionClass($cache); |
|
|
|
|
$refMethodGetCacheFile = $refClass->getMethod('getCacheFile'); |
|
|
|
|
$refMethodGetCacheFile->setAccessible(true); |
|
|
|
|
$cacheFile = $refMethodGetCacheFile->invoke($cache, $cacheInternalKey); |
|
|
|
|
$refMethodGetCacheFile->setAccessible(false); |
|
|
|
|
|
|
|
|
|
$output = array(); |
|
|
|
|
$returnVar = null; |
|
|
|
|
exec(sprintf('sudo chown %s %s', |
|
|
|
|
escapeshellarg($TRAVIS_SECOND_USER), |
|
|
|
|
escapeshellarg($cacheFile) |
|
|
|
|
), $output, $returnVar); |
|
|
|
|
|
|
|
|
|
$this->assertSame(0, $returnVar, 'Cannot change ownership of cache file to test cache renewal'); |
|
|
|
|
|
|
|
|
|
$this->assertTrue($cache->set($cachePublicKey, uniqid('value_2_'), 2), 'Cannot rebuild cache on different file ownership'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|