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' ); } }