#1072 DDC-3191 - adding test for failing glob()
operations on the FileLockRegion
This commit is contained in:
parent
58cd520e32
commit
aca719be41
@ -27,17 +27,12 @@ class FileLockRegionTest extends AbstractRegionTest
|
|||||||
*/
|
*/
|
||||||
protected $directory;
|
protected $directory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
public function tearDown()
|
public function tearDown()
|
||||||
{
|
{
|
||||||
if ( ! is_dir($this->directory)) {
|
$this->cleanTestDirectory($this->directory);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->directory), RecursiveIteratorIterator::CHILD_FIRST) as $file) {
|
|
||||||
$file->isFile()
|
|
||||||
? @unlink($file->getRealPath())
|
|
||||||
: @rmdir($file->getRealPath());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -247,4 +242,51 @@ class FileLockRegionTest extends AbstractRegionTest
|
|||||||
$this->assertNotNull($this->region->get($key));
|
$this->assertNotNull($this->region->get($key));
|
||||||
$this->assertFileNotExists($file);
|
$this->assertFileNotExists($file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group 1072
|
||||||
|
* @group DDC-3191
|
||||||
|
*
|
||||||
|
* Note that this test will only fail on some OSs. Attempts to write this test using `open_basedir` failed
|
||||||
|
* due to the inability to restore `open_basedir` on cleanup
|
||||||
|
*/
|
||||||
|
public function testHandlesScanErrorsGracefullyOnEvictAll()
|
||||||
|
{
|
||||||
|
$baseDir = sys_get_temp_dir() . '/doctrine_lock_'. uniqid();
|
||||||
|
$subDir = $baseDir . '/foo/bar';
|
||||||
|
$region = new FileLockRegion(new DefaultRegion('concurren_region_test', $this->cache), $subDir, 60);
|
||||||
|
|
||||||
|
$this->cleanTestDirectory($baseDir);
|
||||||
|
|
||||||
|
rmdir($baseDir);
|
||||||
|
|
||||||
|
$region->evictAll();
|
||||||
|
|
||||||
|
$this->assertFalse(is_dir($baseDir));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string|null $path directory to clean
|
||||||
|
*/
|
||||||
|
private function cleanTestDirectory($path)
|
||||||
|
{
|
||||||
|
$path = $path ?: $this->directory;
|
||||||
|
|
||||||
|
if ( ! is_dir($path)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$directoryIterator = new RecursiveIteratorIterator(
|
||||||
|
new RecursiveDirectoryIterator($path),
|
||||||
|
RecursiveIteratorIterator::CHILD_FIRST
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($directoryIterator as $file) {
|
||||||
|
if ($file->isFile()) {
|
||||||
|
@unlink($file->getRealPath());
|
||||||
|
} else {
|
||||||
|
@rmdir($file->getRealPath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user