From: jenkins-bot Date: Mon, 9 Sep 2019 19:25:32 +0000 (+0000) Subject: Merge "Provide command to adjust phpunit.xml for code coverage" X-Git-Tag: 1.34.0-rc.0~305 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=64e7e7d760fc3e043f7e01a89cc3697869aaa93b;hp=738ed7d53f4481cf137520d84d8e5498b98cd33a Merge "Provide command to adjust phpunit.xml for code coverage" --- diff --git a/autoload.php b/autoload.php index 0255a237df..87b2bb981a 100644 --- a/autoload.php +++ b/autoload.php @@ -298,6 +298,7 @@ $wgAutoloadLocalClasses = [ 'ComposerJson' => __DIR__ . '/includes/libs/composer/ComposerJson.php', 'ComposerLock' => __DIR__ . '/includes/libs/composer/ComposerLock.php', 'ComposerPackageModifier' => __DIR__ . '/includes/composer/ComposerPackageModifier.php', + 'ComposerPhpunitXmlCoverageEdit' => __DIR__ . '/includes/composer/ComposerPhpunitXmlCoverageEdit.php', 'ComposerVendorHtaccessCreator' => __DIR__ . '/includes/composer/ComposerVendorHtaccessCreator.php', 'ComposerVersionNormalizer' => __DIR__ . '/includes/composer/ComposerVersionNormalizer.php', 'CompressOld' => __DIR__ . '/maintenance/storage/compressOld.php', diff --git a/composer.json b/composer.json index ac89d71569..c1f9037fb3 100644 --- a/composer.json +++ b/composer.json @@ -97,7 +97,8 @@ "autoload": { "psr-0": { "ComposerHookHandler": "includes/composer", - "ComposerVendorHtaccessCreator": "includes/composer" + "ComposerVendorHtaccessCreator": "includes/composer", + "ComposerPhpunitXmlCoverageEdit":"includes/composer" } }, "autoload-dev": { @@ -121,7 +122,8 @@ "phpunit": "phpunit", "phpunit:unit": "phpunit --colors=always --testsuite=core:unit,extensions:unit,skins:unit", "phpunit:integration": "phpunit --colors=always --testsuite=core:integration,extensions:integration,skins:integration", - "phpunit:coverage": "phpunit --testsuite=core:unit --exclude-group Dump,Broken" + "phpunit:coverage": "phpunit --testsuite=core:unit --exclude-group Dump,Broken", + "phpunit:coverage-edit": "ComposerPhpunitXmlCoverageEdit::onEvent" }, "config": { "optimize-autoloader": true, diff --git a/includes/composer/ComposerPhpunitXmlCoverageEdit.php b/includes/composer/ComposerPhpunitXmlCoverageEdit.php new file mode 100644 index 0000000000..7db4b11bb3 --- /dev/null +++ b/includes/composer/ComposerPhpunitXmlCoverageEdit.php @@ -0,0 +1,60 @@ +getArguments(); + if ( count( $args ) !== 1 ) { + throw new InvalidArgumentException( 'Pass extensions/$extensionName as an argument, ' . + 'e.g. "composer phpunit:coverage-edit -- extensions/BoilerPlate"' ); + } + $project = current( $args ); + $phpunitXml = \PHPUnit\Util\Xml::loadFile( $IP . '/phpunit.xml.dist' ); + $whitelist = iterator_to_array( $phpunitXml->getElementsByTagName( 'whitelist' ) ); + /** @var DOMNode $childNode */ + foreach ( $whitelist as $childNode ) { + $childNode->parentNode->removeChild( $childNode ); + } + $whitelistElement = $phpunitXml->createElement( 'whitelist' ); + $whitelistElement->setAttribute( 'addUncoveredFilesFromWhitelist', 'false' ); + // TODO: Use AutoloadClasses from extension.json to load the relevant directories + foreach ( [ 'includes', 'src', 'maintenance' ] as $dir ) { + $dirElement = $phpunitXml->createElement( 'directory', $project . '/' . $dir ); + $dirElement->setAttribute( 'suffix', '.php' ); + $whitelistElement->appendChild( $dirElement ); + + } + $phpunitXml->getElementsByTagName( 'filter' )->item( 0 ) + ->appendChild( $whitelistElement ); + $phpunitXml->formatOutput = true; + $phpunitXml->save( $IP . '/phpunit.xml' ); + } +}