Version 1
[yaffs-website] / vendor / phpunit / php-code-coverage / src / CodeCoverage / Filter.php
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Filter.php
new file mode 100644 (file)
index 0000000..bb4a251
--- /dev/null
@@ -0,0 +1,293 @@
+<?php
+/*
+ * This file is part of the PHP_CodeCoverage package.
+ *
+ * (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.
+ */
+
+/**
+ * Filter for blacklisting and whitelisting of code coverage information.
+ *
+ * @since Class available since Release 1.0.0
+ */
+class PHP_CodeCoverage_Filter
+{
+    /**
+     * Source files that are blacklisted.
+     *
+     * @var array
+     */
+    private $blacklistedFiles = array();
+
+    /**
+     * Source files that are whitelisted.
+     *
+     * @var array
+     */
+    private $whitelistedFiles = array();
+
+    /**
+     * Adds a directory to the blacklist (recursively).
+     *
+     * @param string $directory
+     * @param string $suffix
+     * @param string $prefix
+     */
+    public function addDirectoryToBlacklist($directory, $suffix = '.php', $prefix = '')
+    {
+        $facade = new File_Iterator_Facade;
+        $files  = $facade->getFilesAsArray($directory, $suffix, $prefix);
+
+        foreach ($files as $file) {
+            $this->addFileToBlacklist($file);
+        }
+    }
+
+    /**
+     * Adds a file to the blacklist.
+     *
+     * @param string $filename
+     */
+    public function addFileToBlacklist($filename)
+    {
+        $this->blacklistedFiles[realpath($filename)] = true;
+    }
+
+    /**
+     * Adds files to the blacklist.
+     *
+     * @param array $files
+     */
+    public function addFilesToBlacklist(array $files)
+    {
+        foreach ($files as $file) {
+            $this->addFileToBlacklist($file);
+        }
+    }
+
+    /**
+     * Removes a directory from the blacklist (recursively).
+     *
+     * @param string $directory
+     * @param string $suffix
+     * @param string $prefix
+     */
+    public function removeDirectoryFromBlacklist($directory, $suffix = '.php', $prefix = '')
+    {
+        $facade = new File_Iterator_Facade;
+        $files  = $facade->getFilesAsArray($directory, $suffix, $prefix);
+
+        foreach ($files as $file) {
+            $this->removeFileFromBlacklist($file);
+        }
+    }
+
+    /**
+     * Removes a file from the blacklist.
+     *
+     * @param string $filename
+     */
+    public function removeFileFromBlacklist($filename)
+    {
+        $filename = realpath($filename);
+
+        if (isset($this->blacklistedFiles[$filename])) {
+            unset($this->blacklistedFiles[$filename]);
+        }
+    }
+
+    /**
+     * Adds a directory to the whitelist (recursively).
+     *
+     * @param string $directory
+     * @param string $suffix
+     * @param string $prefix
+     */
+    public function addDirectoryToWhitelist($directory, $suffix = '.php', $prefix = '')
+    {
+        $facade = new File_Iterator_Facade;
+        $files  = $facade->getFilesAsArray($directory, $suffix, $prefix);
+
+        foreach ($files as $file) {
+            $this->addFileToWhitelist($file);
+        }
+    }
+
+    /**
+     * Adds a file to the whitelist.
+     *
+     * @param string $filename
+     */
+    public function addFileToWhitelist($filename)
+    {
+        $this->whitelistedFiles[realpath($filename)] = true;
+    }
+
+    /**
+     * Adds files to the whitelist.
+     *
+     * @param array $files
+     */
+    public function addFilesToWhitelist(array $files)
+    {
+        foreach ($files as $file) {
+            $this->addFileToWhitelist($file);
+        }
+    }
+
+    /**
+     * Removes a directory from the whitelist (recursively).
+     *
+     * @param string $directory
+     * @param string $suffix
+     * @param string $prefix
+     */
+    public function removeDirectoryFromWhitelist($directory, $suffix = '.php', $prefix = '')
+    {
+        $facade = new File_Iterator_Facade;
+        $files  = $facade->getFilesAsArray($directory, $suffix, $prefix);
+
+        foreach ($files as $file) {
+            $this->removeFileFromWhitelist($file);
+        }
+    }
+
+    /**
+     * Removes a file from the whitelist.
+     *
+     * @param string $filename
+     */
+    public function removeFileFromWhitelist($filename)
+    {
+        $filename = realpath($filename);
+
+        if (isset($this->whitelistedFiles[$filename])) {
+            unset($this->whitelistedFiles[$filename]);
+        }
+    }
+
+    /**
+     * Checks whether a filename is a real filename.
+     *
+     * @param  string $filename
+     * @return bool
+     */
+    public function isFile($filename)
+    {
+        if ($filename == '-' ||
+            strpos($filename, 'vfs://') === 0 ||
+            strpos($filename, 'xdebug://debug-eval') !== false ||
+            strpos($filename, 'eval()\'d code') !== false ||
+            strpos($filename, 'runtime-created function') !== false ||
+            strpos($filename, 'runkit created function') !== false ||
+            strpos($filename, 'assert code') !== false ||
+            strpos($filename, 'regexp code') !== false) {
+            return false;
+        }
+
+        return file_exists($filename);
+    }
+
+    /**
+     * Checks whether or not a file is filtered.
+     *
+     * When the whitelist is empty (default), blacklisting is used.
+     * When the whitelist is not empty, whitelisting is used.
+     *
+     * @param  string                     $filename
+     * @return bool
+     * @throws PHP_CodeCoverage_Exception
+     */
+    public function isFiltered($filename)
+    {
+        if (!$this->isFile($filename)) {
+            return true;
+        }
+
+        $filename = realpath($filename);
+
+        if (!empty($this->whitelistedFiles)) {
+            return !isset($this->whitelistedFiles[$filename]);
+        }
+
+        return isset($this->blacklistedFiles[$filename]);
+    }
+
+    /**
+     * Returns the list of blacklisted files.
+     *
+     * @return array
+     */
+    public function getBlacklist()
+    {
+        return array_keys($this->blacklistedFiles);
+    }
+
+    /**
+     * Returns the list of whitelisted files.
+     *
+     * @return array
+     */
+    public function getWhitelist()
+    {
+        return array_keys($this->whitelistedFiles);
+    }
+
+    /**
+     * Returns whether this filter has a whitelist.
+     *
+     * @return bool
+     * @since  Method available since Release 1.1.0
+     */
+    public function hasWhitelist()
+    {
+        return !empty($this->whitelistedFiles);
+    }
+
+    /**
+     * Returns the blacklisted files.
+     *
+     * @return array
+     * @since Method available since Release 2.0.0
+     */
+    public function getBlacklistedFiles()
+    {
+        return $this->blacklistedFiles;
+    }
+
+    /**
+     * Sets the blacklisted files.
+     *
+     * @param array $blacklistedFiles
+     * @since Method available since Release 2.0.0
+     */
+    public function setBlacklistedFiles($blacklistedFiles)
+    {
+        $this->blacklistedFiles = $blacklistedFiles;
+    }
+
+    /**
+     * Returns the whitelisted files.
+     *
+     * @return array
+     * @since Method available since Release 2.0.0
+     */
+    public function getWhitelistedFiles()
+    {
+        return $this->whitelistedFiles;
+    }
+
+    /**
+     * Sets the whitelisted files.
+     *
+     * @param array $whitelistedFiles
+     * @since Method available since Release 2.0.0
+     */
+    public function setWhitelistedFiles($whitelistedFiles)
+    {
+        $this->whitelistedFiles = $whitelistedFiles;
+    }
+}