Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?php declare(strict_types=1);/** 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.*/namespace PHPUnit\TextUI\CliArguments;use function array_map;use function array_merge;use function class_exists;use function explode;use function is_numeric;use function str_replace;use PHPUnit\Runner\TestSuiteSorter;use PHPUnit\TextUI\DefaultResultPrinter;use PHPUnit\TextUI\XmlConfiguration\Extension;use PHPUnit\Util\Log\TeamCity;use PHPUnit\Util\TestDox\CliTestDoxPrinter;use SebastianBergmann\CliParser\Exception as CliParserException;use SebastianBergmann\CliParser\Parser as CliParser;/*** @internal This class is not covered by the backward compatibility promise for PHPUnit*/final class Builder{private const LONG_OPTIONS = ['atleast-version=','prepend=','bootstrap=','cache-result','do-not-cache-result','cache-result-file=','check-version','colors==','columns=','configuration=','coverage-cache=','warm-coverage-cache','coverage-filter=','coverage-clover=','coverage-cobertura=','coverage-crap4j=','coverage-html=','coverage-php=','coverage-text==','coverage-xml=','path-coverage','debug','disallow-test-output','disallow-resource-usage','disallow-todo-tests','default-time-limit=','enforce-time-limit','exclude-group=','extensions=','filter=','generate-configuration','globals-backup','group=','covers=','uses=','help','resolve-dependencies','ignore-dependencies','include-path=','list-groups','list-suites','list-tests','list-tests-xml=','loader=','log-junit=','log-teamcity=','migrate-configuration','no-configuration','no-coverage','no-logging','no-interaction','no-extensions','order-by=','printer=','process-isolation','repeat=','dont-report-useless-tests','random-order','random-order-seed=','reverse-order','reverse-list','static-backup','stderr','stop-on-defect','stop-on-error','stop-on-failure','stop-on-warning','stop-on-incomplete','stop-on-risky','stop-on-skipped','fail-on-empty-test-suite','fail-on-incomplete','fail-on-risky','fail-on-skipped','fail-on-warning','strict-coverage','disable-coverage-ignore','strict-global-state','teamcity','testdox','testdox-group=','testdox-exclude-group=','testdox-html=','testdox-text=','testdox-xml=','test-suffix=','testsuite=','verbose','version','whitelist=','dump-xdebug-filter=',];private const SHORT_OPTIONS = 'd:c:hv';public function fromParameters(array $parameters, array $additionalLongOptions): Configuration{try {$options = (new CliParser)->parse($parameters,self::SHORT_OPTIONS,array_merge(self::LONG_OPTIONS, $additionalLongOptions));} catch (CliParserException $e) {throw new Exception($e->getMessage(),$e->getCode(),$e);}$argument = null;$atLeastVersion = null;$backupGlobals = null;$backupStaticAttributes = null;$beStrictAboutChangesToGlobalState = null;$beStrictAboutResourceUsageDuringSmallTests = null;$bootstrap = null;$cacheResult = null;$cacheResultFile = null;$checkVersion = null;$colors = null;$columns = null;$configuration = null;$coverageCacheDirectory = null;$warmCoverageCache = null;$coverageFilter = null;$coverageClover = null;$coverageCobertura = null;$coverageCrap4J = null;$coverageHtml = null;$coveragePhp = null;$coverageText = null;$coverageTextShowUncoveredFiles = null;$coverageTextShowOnlySummary = null;$coverageXml = null;$pathCoverage = null;$debug = null;$defaultTimeLimit = null;$disableCodeCoverageIgnore = null;$disallowTestOutput = null;$disallowTodoAnnotatedTests = null;$enforceTimeLimit = null;$excludeGroups = null;$executionOrder = null;$executionOrderDefects = null;$extensions = [];$unavailableExtensions = [];$failOnEmptyTestSuite = null;$failOnIncomplete = null;$failOnRisky = null;$failOnSkipped = null;$failOnWarning = null;$filter = null;$generateConfiguration = null;$migrateConfiguration = null;$groups = null;$testsCovering = null;$testsUsing = null;$help = null;$includePath = null;$iniSettings = [];$junitLogfile = null;$listGroups = null;$listSuites = null;$listTests = null;$listTestsXml = null;$loader = null;$noCoverage = null;$noExtensions = null;$noInteraction = null;$noLogging = null;$printer = null;$processIsolation = null;$randomOrderSeed = null;$repeat = null;$reportUselessTests = null;$resolveDependencies = null;$reverseList = null;$stderr = null;$strictCoverage = null;$stopOnDefect = null;$stopOnError = null;$stopOnFailure = null;$stopOnIncomplete = null;$stopOnRisky = null;$stopOnSkipped = null;$stopOnWarning = null;$teamcityLogfile = null;$testdoxExcludeGroups = null;$testdoxGroups = null;$testdoxHtmlFile = null;$testdoxTextFile = null;$testdoxXmlFile = null;$testSuffixes = null;$testSuite = null;$unrecognizedOptions = [];$unrecognizedOrderBy = null;$useDefaultConfiguration = null;$verbose = null;$version = null;$xdebugFilterFile = null;if (isset($options[1][0])) {$argument = $options[1][0];}foreach ($options[0] as $option) {switch ($option[0]) {case '--colors':$colors = $option[1] ?: DefaultResultPrinter::COLOR_AUTO;break;case '--bootstrap':$bootstrap = $option[1];break;case '--cache-result':$cacheResult = true;break;case '--do-not-cache-result':$cacheResult = false;break;case '--cache-result-file':$cacheResultFile = $option[1];break;case '--columns':if (is_numeric($option[1])) {$columns = (int) $option[1];} elseif ($option[1] === 'max') {$columns = 'max';}break;case 'c':case '--configuration':$configuration = $option[1];break;case '--coverage-cache':$coverageCacheDirectory = $option[1];break;case '--warm-coverage-cache':$warmCoverageCache = true;break;case '--coverage-clover':$coverageClover = $option[1];break;case '--coverage-cobertura':$coverageCobertura = $option[1];break;case '--coverage-crap4j':$coverageCrap4J = $option[1];break;case '--coverage-html':$coverageHtml = $option[1];break;case '--coverage-php':$coveragePhp = $option[1];break;case '--coverage-text':if ($option[1] === null) {$option[1] = 'php://stdout';}$coverageText = $option[1];$coverageTextShowUncoveredFiles = false;$coverageTextShowOnlySummary = false;break;case '--coverage-xml':$coverageXml = $option[1];break;case '--path-coverage':$pathCoverage = true;break;case 'd':$tmp = explode('=', $option[1]);if (isset($tmp[0])) {if (isset($tmp[1])) {$iniSettings[$tmp[0]] = $tmp[1];} else {$iniSettings[$tmp[0]] = '1';}}break;case '--debug':$debug = true;break;case 'h':case '--help':$help = true;break;case '--filter':$filter = $option[1];break;case '--testsuite':$testSuite = $option[1];break;case '--generate-configuration':$generateConfiguration = true;break;case '--migrate-configuration':$migrateConfiguration = true;break;case '--group':$groups = explode(',', $option[1]);break;case '--exclude-group':$excludeGroups = explode(',', $option[1]);break;case '--covers':$testsCovering = array_map('strtolower', explode(',', $option[1]));break;case '--uses':$testsUsing = array_map('strtolower', explode(',', $option[1]));break;case '--test-suffix':$testSuffixes = explode(',', $option[1]);break;case '--include-path':$includePath = $option[1];break;case '--list-groups':$listGroups = true;break;case '--list-suites':$listSuites = true;break;case '--list-tests':$listTests = true;break;case '--list-tests-xml':$listTestsXml = $option[1];break;case '--printer':$printer = $option[1];break;case '--loader':$loader = $option[1];break;case '--log-junit':$junitLogfile = $option[1];break;case '--log-teamcity':$teamcityLogfile = $option[1];break;case '--order-by':foreach (explode(',', $option[1]) as $order) {switch ($order) {case 'default':$executionOrder = TestSuiteSorter::ORDER_DEFAULT;$executionOrderDefects = TestSuiteSorter::ORDER_DEFAULT;$resolveDependencies = true;break;case 'defects':$executionOrderDefects = TestSuiteSorter::ORDER_DEFECTS_FIRST;break;case 'depends':$resolveDependencies = true;break;case 'duration':$executionOrder = TestSuiteSorter::ORDER_DURATION;break;case 'no-depends':$resolveDependencies = false;break;case 'random':$executionOrder = TestSuiteSorter::ORDER_RANDOMIZED;break;case 'reverse':$executionOrder = TestSuiteSorter::ORDER_REVERSED;break;case 'size':$executionOrder = TestSuiteSorter::ORDER_SIZE;break;default:$unrecognizedOrderBy = $order;}}break;case '--process-isolation':$processIsolation = true;break;case '--repeat':$repeat = (int) $option[1];break;case '--stderr':$stderr = true;break;case '--stop-on-defect':$stopOnDefect = true;break;case '--stop-on-error':$stopOnError = true;break;case '--stop-on-failure':$stopOnFailure = true;break;case '--stop-on-warning':$stopOnWarning = true;break;case '--stop-on-incomplete':$stopOnIncomplete = true;break;case '--stop-on-risky':$stopOnRisky = true;break;case '--stop-on-skipped':$stopOnSkipped = true;break;case '--fail-on-empty-test-suite':$failOnEmptyTestSuite = true;break;case '--fail-on-incomplete':$failOnIncomplete = true;break;case '--fail-on-risky':$failOnRisky = true;break;case '--fail-on-skipped':$failOnSkipped = true;break;case '--fail-on-warning':$failOnWarning = true;break;case '--teamcity':$printer = TeamCity::class;break;case '--testdox':$printer = CliTestDoxPrinter::class;break;case '--testdox-group':$testdoxGroups = explode(',', $option[1]);break;case '--testdox-exclude-group':$testdoxExcludeGroups = explode(',', $option[1]);break;case '--testdox-html':$testdoxHtmlFile = $option[1];break;case '--testdox-text':$testdoxTextFile = $option[1];break;case '--testdox-xml':$testdoxXmlFile = $option[1];break;case '--no-configuration':$useDefaultConfiguration = false;break;case '--extensions':foreach (explode(',', $option[1]) as $extensionClass) {if (!class_exists($extensionClass)) {$unavailableExtensions[] = $extensionClass;continue;}$extensions[] = new Extension($extensionClass, '', []);}break;case '--no-extensions':$noExtensions = true;break;case '--no-coverage':$noCoverage = true;break;case '--no-logging':$noLogging = true;break;case '--no-interaction':$noInteraction = true;break;case '--globals-backup':$backupGlobals = true;break;case '--static-backup':$backupStaticAttributes = true;break;case 'v':case '--verbose':$verbose = true;break;case '--atleast-version':$atLeastVersion = $option[1];break;case '--version':$version = true;break;case '--dont-report-useless-tests':$reportUselessTests = false;break;case '--strict-coverage':$strictCoverage = true;break;case '--disable-coverage-ignore':$disableCodeCoverageIgnore = true;break;case '--strict-global-state':$beStrictAboutChangesToGlobalState = true;break;case '--disallow-test-output':$disallowTestOutput = true;break;case '--disallow-resource-usage':$beStrictAboutResourceUsageDuringSmallTests = true;break;case '--default-time-limit':$defaultTimeLimit = (int) $option[1];break;case '--enforce-time-limit':$enforceTimeLimit = true;break;case '--disallow-todo-tests':$disallowTodoAnnotatedTests = true;break;case '--reverse-list':$reverseList = true;break;case '--check-version':$checkVersion = true;break;case '--coverage-filter':case '--whitelist':if ($coverageFilter === null) {$coverageFilter = [];}$coverageFilter[] = $option[1];break;case '--random-order':$executionOrder = TestSuiteSorter::ORDER_RANDOMIZED;break;case '--random-order-seed':$randomOrderSeed = (int) $option[1];break;case '--resolve-dependencies':$resolveDependencies = true;break;case '--ignore-dependencies':$resolveDependencies = false;break;case '--reverse-order':$executionOrder = TestSuiteSorter::ORDER_REVERSED;break;case '--dump-xdebug-filter':$xdebugFilterFile = $option[1];break;default:$unrecognizedOptions[str_replace('--', '', $option[0])] = $option[1];}}if (empty($extensions)) {$extensions = null;}if (empty($unavailableExtensions)) {$unavailableExtensions = null;}if (empty($iniSettings)) {$iniSettings = null;}if (empty($coverageFilter)) {$coverageFilter = null;}return new Configuration($argument,$atLeastVersion,$backupGlobals,$backupStaticAttributes,$beStrictAboutChangesToGlobalState,$beStrictAboutResourceUsageDuringSmallTests,$bootstrap,$cacheResult,$cacheResultFile,$checkVersion,$colors,$columns,$configuration,$coverageClover,$coverageCobertura,$coverageCrap4J,$coverageHtml,$coveragePhp,$coverageText,$coverageTextShowUncoveredFiles,$coverageTextShowOnlySummary,$coverageXml,$pathCoverage,$coverageCacheDirectory,$warmCoverageCache,$debug,$defaultTimeLimit,$disableCodeCoverageIgnore,$disallowTestOutput,$disallowTodoAnnotatedTests,$enforceTimeLimit,$excludeGroups,$executionOrder,$executionOrderDefects,$extensions,$unavailableExtensions,$failOnEmptyTestSuite,$failOnIncomplete,$failOnRisky,$failOnSkipped,$failOnWarning,$filter,$generateConfiguration,$migrateConfiguration,$groups,$testsCovering,$testsUsing,$help,$includePath,$iniSettings,$junitLogfile,$listGroups,$listSuites,$listTests,$listTestsXml,$loader,$noCoverage,$noExtensions,$noInteraction,$noLogging,$printer,$processIsolation,$randomOrderSeed,$repeat,$reportUselessTests,$resolveDependencies,$reverseList,$stderr,$strictCoverage,$stopOnDefect,$stopOnError,$stopOnFailure,$stopOnIncomplete,$stopOnRisky,$stopOnSkipped,$stopOnWarning,$teamcityLogfile,$testdoxExcludeGroups,$testdoxGroups,$testdoxHtmlFile,$testdoxTextFile,$testdoxXmlFile,$testSuffixes,$testSuite,$unrecognizedOptions,$unrecognizedOrderBy,$useDefaultConfiguration,$verbose,$version,$coverageFilter,$xdebugFilterFile);}}