summaryrefslogtreecommitdiff
path: root/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php')
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php73
1 files changed, 73 insertions, 0 deletions
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php
new file mode 100644
index 000000000..abef49f10
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php
@@ -0,0 +1,73 @@
+<?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\TextUI\XmlConfiguration;
+
+use function array_key_exists;
+use function sprintf;
+use function version_compare;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MigrationBuilder
+{
+ private const AVAILABLE_MIGRATIONS = [
+ '8.5' => [
+ RemoveLogTypes::class,
+ ],
+
+ '9.2' => [
+ RemoveCacheTokensAttribute::class,
+ IntroduceCoverageElement::class,
+ MoveAttributesFromRootToCoverage::class,
+ MoveAttributesFromFilterWhitelistToCoverage::class,
+ MoveWhitelistDirectoriesToCoverage::class,
+ MoveWhitelistExcludesToCoverage::class,
+ RemoveEmptyFilter::class,
+ CoverageCloverToReport::class,
+ CoverageCrap4jToReport::class,
+ CoverageHtmlToReport::class,
+ CoveragePhpToReport::class,
+ CoverageTextToReport::class,
+ CoverageXmlToReport::class,
+ ConvertLogTypes::class,
+ UpdateSchemaLocationTo93::class,
+ ],
+ ];
+
+ /**
+ * @throws MigrationBuilderException
+ */
+ public function build(string $fromVersion): array
+ {
+ if (!array_key_exists($fromVersion, self::AVAILABLE_MIGRATIONS)) {
+ throw new MigrationBuilderException(
+ sprintf(
+ 'Migration from schema version %s is not supported',
+ $fromVersion
+ )
+ );
+ }
+
+ $stack = [];
+
+ foreach (self::AVAILABLE_MIGRATIONS as $version => $migrations) {
+ if (version_compare($version, $fromVersion, '<')) {
+ continue;
+ }
+
+ foreach ($migrations as $migration) {
+ $stack[] = new $migration;
+ }
+ }
+
+ return $stack;
+ }
+}