You are here

Exception.php in Zircon Profile 8

File

vendor/phpunit/phpunit/src/Framework/Exception.php
View source
<?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
 *
 * @since Class available since Release 3.4.0
 */
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));
  }

}

Classes

Namesort descending Description
PHPUnit_Framework_Exception Base class for all PHPUnit Framework exceptions.