public function testAddError() { ErrorHandler::start(); ErrorHandler::addError(1, 'test-msg1', 'test-file1', 100); ErrorHandler::addError(2, 'test-msg2', 'test-file2', 200); $err = ErrorHandler::stop(); $this->assertInstanceOf('ErrorException', $err); $this->assertEquals('test-file2', $err->getFile()); $this->assertEquals('test-msg2', $err->getMessage()); $this->assertEquals(200, $err->getLine()); $this->assertEquals(0, $err->getCode()); $this->assertEquals(2, $err->getSeverity()); $previous = $err->getPrevious(); $this->assertInstanceOf('ErrorException', $previous); $this->assertEquals('test-file1', $previous->getFile()); $this->assertEquals('test-msg1', $previous->getMessage()); $this->assertEquals(100, $previous->getLine()); $this->assertEquals(0, $previous->getCode()); $this->assertEquals(1, $previous->getSeverity()); }
/** * Remove items matching given prefix * * @param string $prefix * @throws Exception\RuntimeException * @return bool */ public function clearByPrefix($prefix) { $prefix = (string) $prefix; if ($prefix === '') { throw new Exception\InvalidArgumentException('No prefix given'); } $options = $this->getOptions(); $namespace = $options->getNamespace(); $nsPrefix = $namespace === '' ? '' : $namespace . $options->getNamespaceSeparator(); $flags = GlobIterator::SKIP_DOTS | GlobIterator::CURRENT_AS_PATHNAME; $path = $options->getCacheDir() . str_repeat(DIRECTORY_SEPARATOR . $nsPrefix . '*', $options->getDirLevel()) . DIRECTORY_SEPARATOR . $nsPrefix . $prefix . '*.*'; $glob = new GlobIterator($path, $flags); ErrorHandler::start(); foreach ($glob as $pathname) { // remove the file by ignoring errors if the file doesn't exist afterwards // to fix a possible race condition if onother process removed the faile already. ErrorHandler::start(); unlink($pathname); $err = ErrorHandler::stop(); if ($err && file_exists($pathname)) { ErrorHandler::addError($err->getSeverity(), $err->getMessage(), $err->getFile(), $err->getLine()); } } $err = ErrorHandler::stop(); if ($err) { $result = false; return $this->triggerException(__FUNCTION__, new ArrayObject(), $result, new Exception\RuntimeException("Failed to remove files of '{$path}'", 0, $err)); } return true; }