summaryrefslogtreecommitdiff
path: root/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php')
-rw-r--r--vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php81
1 files changed, 81 insertions, 0 deletions
diff --git a/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php b/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php
new file mode 100644
index 000000000..8b10d4152
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php
@@ -0,0 +1,81 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const DIRECTORY_SEPARATOR;
+use function addslashes;
+use function array_map;
+use function implode;
+use function is_string;
+use function realpath;
+use function sprintf;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage as FilterConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ *
+ * @deprecated
+ */
+final class XdebugFilterScriptGenerator
+{
+ public function generate(FilterConfiguration $filter): string
+ {
+ $files = array_map(
+ static function ($item)
+ {
+ return sprintf(
+ " '%s'",
+ $item
+ );
+ },
+ $this->getItems($filter)
+ );
+
+ $files = implode(",\n", $files);
+
+ return <<<EOF
+<?php declare(strict_types=1);
+if (!\\function_exists('xdebug_set_filter')) {
+ return;
+}
+
+\\xdebug_set_filter(
+ \\XDEBUG_FILTER_CODE_COVERAGE,
+ \\XDEBUG_PATH_WHITELIST,
+ [
+{$files}
+ ]
+);
+
+EOF;
+ }
+
+ private function getItems(FilterConfiguration $filter): array
+ {
+ $files = [];
+
+ foreach ($filter->directories() as $directory) {
+ $path = realpath($directory->path());
+
+ if (is_string($path)) {
+ $files[] = sprintf(
+ addslashes('%s' . DIRECTORY_SEPARATOR),
+ $path
+ );
+ }
+ }
+
+ foreach ($filter->files() as $file) {
+ $files[] = $file->path();
+ }
+
+ return $files;
+ }
+}