Version 1
[yaffs-website] / vendor / phpunit / phpunit / src / Framework / Exception.php
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception.php b/vendor/phpunit/phpunit/src/Framework/Exception.php
new file mode 100644 (file)
index 0000000..715c55e
--- /dev/null
@@ -0,0 +1,77 @@
+<?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));
+    }
+}