Beispiel #1
0
 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;
 }