Blame | Last modification | View Log | Download
<?php/** This file is part of PHPUnit.** (c) Sebastian Bergmann <sebastian@phpunit.de>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*//*** Base class for all PHPUnit Framework exceptions.** Ensures that exceptions thrown during a test run do not leave stray* references behind.** Every Exception contains a stack trace. Each stack frame contains the 'args'* of the called function. The function arguments can contain references to* instantiated objects. The references prevent the objects from being* destructed (until test results are eventually printed), so memory cannot be* freed up.** With enabled process isolation, test results are serialized in the child* process and unserialized in the parent process. The stack trace of Exceptions* may contain objects that cannot be serialized or unserialized (e.g., PDO* connections). Unserializing user-space objects from the child process into* the parent would break the intended encapsulation of process isolation.** @see http://fabien.potencier.org/article/9/php-serialization-stack-traces-and-exceptions*/class PHPUnit_Framework_Exception extends RuntimeException implements PHPUnit_Exception{/*** @var array*/protected $serializableTrace;public function __construct($message = '', $code = 0, Exception $previous = null){parent::__construct($message, $code, $previous);$this->serializableTrace = $this->getTrace();foreach ($this->serializableTrace as $i => $call) {unset($this->serializableTrace[$i]['args']);}}/*** Returns the serializable trace (without 'args').** @return array*/public function getSerializableTrace(){return $this->serializableTrace;}/*** @return string*/public function __toString(){$string = PHPUnit_Framework_TestFailure::exceptionToString($this);if ($trace = PHPUnit_Util_Filter::getFilteredStacktrace($this)) {$string .= "\n" . $trace;}return $string;}public function __sleep(){return array_keys(get_object_vars($this));}}