Version 1
[yaffs-website] / vendor / phpunit / phpunit / src / Util / Filter.php
diff --git a/vendor/phpunit/phpunit/src/Util/Filter.php b/vendor/phpunit/phpunit/src/Util/Filter.php
new file mode 100644 (file)
index 0000000..8e81b59
--- /dev/null
@@ -0,0 +1,107 @@
+<?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.
+ */
+
+/**
+ * Utility class for code filtering.
+ *
+ * @since Class available since Release 2.0.0
+ */
+class PHPUnit_Util_Filter
+{
+    /**
+     * Filters stack frames from PHPUnit classes.
+     *
+     * @param Exception $e
+     * @param bool      $asString
+     *
+     * @return string
+     */
+    public static function getFilteredStacktrace(Exception $e, $asString = true)
+    {
+        $prefix = false;
+        $script = realpath($GLOBALS['_SERVER']['SCRIPT_NAME']);
+
+        if (defined('__PHPUNIT_PHAR_ROOT__')) {
+            $prefix = __PHPUNIT_PHAR_ROOT__;
+        }
+
+        if ($asString === true) {
+            $filteredStacktrace = '';
+        } else {
+            $filteredStacktrace = array();
+        }
+
+        if ($e instanceof PHPUnit_Framework_SyntheticError) {
+            $eTrace = $e->getSyntheticTrace();
+            $eFile  = $e->getSyntheticFile();
+            $eLine  = $e->getSyntheticLine();
+        } elseif ($e instanceof PHPUnit_Framework_Exception) {
+            $eTrace = $e->getSerializableTrace();
+            $eFile  = $e->getFile();
+            $eLine  = $e->getLine();
+        } else {
+            if ($e->getPrevious()) {
+                $e = $e->getPrevious();
+            }
+            $eTrace = $e->getTrace();
+            $eFile  = $e->getFile();
+            $eLine  = $e->getLine();
+        }
+
+        if (!self::frameExists($eTrace, $eFile, $eLine)) {
+            array_unshift(
+                $eTrace,
+                array('file' => $eFile, 'line' => $eLine)
+            );
+        }
+
+        $blacklist = new PHPUnit_Util_Blacklist;
+
+        foreach ($eTrace as $frame) {
+            if (isset($frame['file']) && is_file($frame['file']) &&
+                !$blacklist->isBlacklisted($frame['file']) &&
+                ($prefix === false || strpos($frame['file'], $prefix) !== 0) &&
+                $frame['file'] !== $script) {
+                if ($asString === true) {
+                    $filteredStacktrace .= sprintf(
+                        "%s:%s\n",
+                        $frame['file'],
+                        isset($frame['line']) ? $frame['line'] : '?'
+                    );
+                } else {
+                    $filteredStacktrace[] = $frame;
+                }
+            }
+        }
+
+        return $filteredStacktrace;
+    }
+
+    /**
+     * @param array  $trace
+     * @param string $file
+     * @param int    $line
+     *
+     * @return bool
+     *
+     * @since  Method available since Release 3.3.2
+     */
+    private static function frameExists(array $trace, $file, $line)
+    {
+        foreach ($trace as $frame) {
+            if (isset($frame['file']) && $frame['file'] == $file &&
+                isset($frame['line']) && $frame['line'] == $line) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+}