diff --git a/composer.json b/composer.json index fabd317..8cc5377 100644 --- a/composer.json +++ b/composer.json @@ -54,6 +54,7 @@ "extra": { "branch-alias": { "dev-master": "3.2.x-dev", + "dev-develop": "4.x-dev", "dev-v3.1": "3.1.x-dev" } } diff --git a/src/Compiler/DriverPass.php b/src/Compiler/DriverPass.php deleted file mode 100644 index 07c620e..0000000 --- a/src/Compiler/DriverPass.php +++ /dev/null @@ -1,45 +0,0 @@ - - */ -class DriverPass implements CompilerPassInterface -{ - /** - * {@inheritdoc} - */ - public function process(ContainerBuilder $container) - { - if (! $container->hasDefinition('behat.code_coverage.driver.proxy')) { - return; - } - - $proxy = $container->getDefinition('behat.code_coverage.driver.proxy'); - $enabled = $container->getParameter('behat.code_coverage.config.drivers'); - - foreach ($container->findTaggedServiceIds('behat.code_coverage.driver') as $id => $tagAttributes) { - foreach ($tagAttributes as $attributes) { - if (isset($attributes['alias']) - && in_array($attributes['alias'], $enabled) - ) { - $proxy->addMethodCall('addDriver', array(new Reference($id))); - } - } - } - } -} diff --git a/src/Compiler/FactoryPass.php b/src/Compiler/FactoryPass.php deleted file mode 100644 index d0de3e9..0000000 --- a/src/Compiler/FactoryPass.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ -class FactoryPass implements CompilerPassInterface -{ - /** - * {@inheritdoc} - */ - public function process(ContainerBuilder $container) - { - if (! $container->hasDefinition('vipsoft.code_coverage.driver.factory')) { - return; - } - - $factory = $container->getDefinition('vipsoft.code_coverage.driver.factory'); - $drivers = array(); - $ids = $container->findTaggedServiceIds('vipsoft.code_coverage.driver'); - - foreach ($ids as $id => $attributes) { - $drivers[] = $container->getDefinition($id)->getClass(); - } - - $factory->setArguments(array($drivers)); - } -} diff --git a/src/Compiler/FilterPass.php b/src/Compiler/FilterPass.php deleted file mode 100644 index 5b3a558..0000000 --- a/src/Compiler/FilterPass.php +++ /dev/null @@ -1,92 +0,0 @@ - - */ -class FilterPass implements CompilerPassInterface -{ - /** - * {@inheritdoc} - */ - public function process(ContainerBuilder $container) - { - $this->processCodeCoverage($container); - $this->processCodeCoverageFilter($container); - } - - /** - * @param ContainerBuilder $container - */ - private function processCodeCoverage(ContainerBuilder $container) - { - if (! $container->hasDefinition('behat.code_coverage.php_code_coverage')) { - return; - } - - $coverage = $container->getDefinition('behat.code_coverage.php_code_coverage'); - $config = $container->getParameter('behat.code_coverage.config.filter'); - - $coverage->addMethodCall( - 'setAddUncoveredFilesFromWhitelist', - array($config['whitelist']['addUncoveredFilesFromWhitelist']) - ); - $coverage->addMethodCall( - 'setProcessUncoveredFilesFromWhiteList', - array($config['whitelist']['processUncoveredFilesFromWhitelist']) - ); - $coverage->addMethodCall( - 'setForceCoversAnnotation', - array($config['forceCoversAnnotation']) - ); - } - - /** - * @param ContainerBuilder $container - */ - private function processCodeCoverageFilter(ContainerBuilder $container) - { - if (! $container->hasDefinition('behat.code_coverage.php_code_coverage_filter')) { - return; - } - - $filter = $container->getDefinition('behat.code_coverage.php_code_coverage_filter'); - $config = $container->getParameter('behat.code_coverage.config.filter'); - - $dirs = array( - 'addDirectoryToWhiteList' => array('whitelist', 'include', 'directories'), - 'removeDirectoryFromWhiteList' => array('whitelist', 'exclude', 'directories'), - ); - - foreach ($dirs as $method => $hiera) { - foreach ($config[$hiera[0]][$hiera[1]][$hiera[2]] as $path => $dir) { - $filter->addMethodCall($method, array($path, $dir['suffix'], $dir['prefix'])); - } - } - - $files = array( - 'addFileToWhiteList' => array('whitelist', 'include', 'files'), - 'removeFileFromWhiteList' => array('whitelist', 'exclude', 'files'), - ); - - foreach ($files as $method => $hiera) { - foreach ($config[$hiera[0]][$hiera[1]][$hiera[2]] as $file) { - $filter->addMethodCall($method, array($file)); - } - } - } -} diff --git a/src/Extension.php b/src/Extension.php index f9ab383..554ca21 100644 --- a/src/Extension.php +++ b/src/Extension.php @@ -15,6 +15,7 @@ use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; +use Symfony\Component\DependencyInjection\Reference; use LeanPHP\Behat\CodeCoverage\Compiler; /** @@ -211,24 +212,115 @@ public function process(ContainerBuilder $container) $container->getParameterBag()->set('behat.code_coverage.skip', true); } - $passes = $this->getCompilerPasses(); + $this->setupDriver($container); + $this->setupFactory($container); + $this->setupCodeCoverage($container); + $this->setupCodeCoverageFilter($container); - foreach ($passes as $pass) { - $pass->process($container); + } + + /** + * @param ContainerBuilder $container + */ + private function setupDriver(ContainerBuilder $container) + { + if (! $container->hasDefinition('behat.code_coverage.driver.proxy')) { + return; + } + + $proxy = $container->getDefinition('behat.code_coverage.driver.proxy'); + $enabled = $container->getParameter('behat.code_coverage.config.drivers'); + + foreach ($container->findTaggedServiceIds('behat.code_coverage.driver') as $id => $tagAttributes) { + foreach ($tagAttributes as $attributes) { + if (isset($attributes['alias']) + && in_array($attributes['alias'], $enabled) + ) { + $proxy->addMethodCall('addDriver', array(new Reference($id))); + } + } } } /** - * return an array of compiler passes - * - * @return array + * @param ContainerBuilder $container + */ + public function setupFactory(ContainerBuilder $container) + { + if (! $container->hasDefinition('vipsoft.code_coverage.driver.factory')) { + return; + } + + $factory = $container->getDefinition('vipsoft.code_coverage.driver.factory'); + $drivers = array(); + $ids = $container->findTaggedServiceIds('vipsoft.code_coverage.driver'); + + foreach ($ids as $id => $attributes) { + $drivers[] = $container->getDefinition($id)->getClass(); + } + + $factory->setArguments(array($drivers)); + } + + /** + * @param ContainerBuilder $container + */ + private function setupCodeCoverage(ContainerBuilder $container) + { + if (! $container->hasDefinition('behat.code_coverage.php_code_coverage')) { + return; + } + + $coverage = $container->getDefinition('behat.code_coverage.php_code_coverage'); + $config = $container->getParameter('behat.code_coverage.config.filter'); + + $coverage->addMethodCall( + 'setAddUncoveredFilesFromWhitelist', + array($config['whitelist']['addUncoveredFilesFromWhitelist']) + ); + $coverage->addMethodCall( + 'setProcessUncoveredFilesFromWhiteList', + array($config['whitelist']['processUncoveredFilesFromWhitelist']) + ); + $coverage->addMethodCall( + 'setForceCoversAnnotation', + array($config['forceCoversAnnotation']) + ); + } + + /** + * @param ContainerBuilder $container */ - private function getCompilerPasses() + private function setupCodeCoverageFilter(ContainerBuilder $container) { - return array( - new Compiler\DriverPass(), - new Compiler\FactoryPass(), - new Compiler\FilterPass(), + if (! $container->hasDefinition('behat.code_coverage.php_code_coverage_filter')) { + return; + } + + $filter = $container->getDefinition('behat.code_coverage.php_code_coverage_filter'); + $config = $container->getParameter('behat.code_coverage.config.filter'); + + $dirs = array( + 'addDirectoryToWhiteList' => array('whitelist', 'include', 'directories'), + 'removeDirectoryFromWhiteList' => array('whitelist', 'exclude', 'directories'), + ); + + foreach ($dirs as $method => $hiera) { + foreach ($config[$hiera[0]][$hiera[1]][$hiera[2]] as $path => $dir) { + $filter->addMethodCall($method, array($path, $dir['suffix'], $dir['prefix'])); + } + } + + $files = array( + 'addFileToWhiteList' => array('whitelist', 'include', 'files'), + 'removeFileFromWhiteList' => array('whitelist', 'exclude', 'files'), ); + + foreach ($files as $method => $hiera) { + foreach ($config[$hiera[0]][$hiera[1]][$hiera[2]] as $file) { + $filter->addMethodCall($method, array($file)); + } + } } + } diff --git a/tests/Compiler/DriverPassTest.php b/tests/Compiler/DriverPassTest.php deleted file mode 100644 index 7e80377..0000000 --- a/tests/Compiler/DriverPassTest.php +++ /dev/null @@ -1,69 +0,0 @@ -createMock('Symfony\Component\DependencyInjection\ContainerBuilder'); - $container->expects($this->once()) - ->method('hasDefinition') - ->will($this->returnValue(false)); - - $pass = new DriverPass(); - $pass->process($container); - } - - public function testProcess() - { - $proxy = $this->createMock('Symfony\Component\DependencyInjection\Definition'); - $proxy->expects($this->exactly(2)) - ->method('addMethodCall'); - - $container = $this->createMock('Symfony\Component\DependencyInjection\ContainerBuilder'); - $container->expects($this->once()) - ->method('hasDefinition') - ->with('behat.code_coverage.driver.proxy') - ->will($this->returnValue(true)); - - $container->expects($this->once()) - ->method('getDefinition') - ->with('behat.code_coverage.driver.proxy') - ->will($this->returnValue($proxy)); - - $container->expects($this->once()) - ->method('getParameter') - ->with('behat.code_coverage.config.drivers') - ->will($this->returnValue(array('local', 'remote'))); - - $container->expects($this->once()) - ->method('findTaggedServiceIds') - ->with('behat.code_coverage.driver') - ->will($this->returnValue(array( - 'behat.code_coverage.driver.local' => array(array( - 'alias' => 'local' - )), - 'behat.code_coverage.driver.remote' => array(array( - 'alias' => 'remote' - )), - ))); - - $pass = new DriverPass(); - $pass->process($container); - } -} diff --git a/tests/Compiler/FactoryPassTest.php b/tests/Compiler/FactoryPassTest.php deleted file mode 100644 index 1df3ec8..0000000 --- a/tests/Compiler/FactoryPassTest.php +++ /dev/null @@ -1,82 +0,0 @@ -createMock('Symfony\Component\DependencyInjection\ContainerBuilder'); - $container->expects($this->once()) - ->method('hasDefinition') - ->will($this->returnValue(false)); - - $pass = new FactoryPass(); - $pass->process($container); - } - - public function testProcess() - { - $factory = $this->createMock('Symfony\Component\DependencyInjection\Definition'); - $factory->expects($this->once()) - ->method('setArguments'); - - $xcache = $this->createMock('Symfony\Component\DependencyInjection\Definition'); - $xcache->expects($this->once()) - ->method('getClass') - ->will($this->returnValue('LeanPHP\Behat\CodeCoverage\Common\Driver\XCache')); - - $xdebug = $this->createMock('Symfony\Component\DependencyInjection\Definition'); - $xdebug->expects($this->once()) - ->method('getClass') - ->will($this->returnValue('Xdebug')); - - $container = $this->createMock('Symfony\Component\DependencyInjection\ContainerBuilder'); - - $container->expects($this->at(0)) - ->method('hasDefinition') - ->with('vipsoft.code_coverage.driver.factory') - ->will($this->returnValue(true)); - - $container->expects($this->at(1)) - ->method('getDefinition') - ->with('vipsoft.code_coverage.driver.factory') - ->will($this->returnValue($factory)); - - $container->expects($this->at(2)) - ->method('findTaggedServiceIds') - ->with('vipsoft.code_coverage.driver') - ->will($this->returnValue(array( - 'vipsoft.code_coverage.driver.xcache' => array(), - 'vipsoft.code_coverage.driver.xdebug' => array(), - ))); - - $container->expects($this->at(3)) - ->method('getDefinition') - ->with('vipsoft.code_coverage.driver.xcache') - ->will($this->returnValue($xcache)); - - $container->expects($this->at(4)) - ->method('getDefinition') - ->with('vipsoft.code_coverage.driver.xdebug') - ->will($this->returnValue($xdebug)); - - $pass = new FactoryPass(); - $pass->process($container); - } -} diff --git a/tests/Compiler/FilterPassTest.php b/tests/Compiler/FilterPassTest.php deleted file mode 100644 index 302ebc4..0000000 --- a/tests/Compiler/FilterPassTest.php +++ /dev/null @@ -1,139 +0,0 @@ -createMock('Symfony\Component\DependencyInjection\ContainerBuilder'); - $container->expects($this->exactly(2)) - ->method('hasDefinition') - ->will($this->returnValue(false)); - - $pass = new FilterPass(); - $pass->process($container); - } - - public function testProcessCodeCoverage() - { - $coverage = $this->createMock('Symfony\Component\DependencyInjection\Definition'); - $coverage->expects($this->exactly(3)) - ->method('addMethodCall'); - - $container = $this->createMock('Symfony\Component\DependencyInjection\ContainerBuilder'); - $container->expects($this->exactly(2)) - ->method('hasDefinition') - ->will($this->onConsecutiveCalls(true, false)); - - $container->expects($this->once()) - ->method('getDefinition') - ->with('behat.code_coverage.php_code_coverage') - ->will($this->returnValue($coverage)); - - $container->expects($this->once()) - ->method('getParameter') - ->with('behat.code_coverage.config.filter') - ->will($this->returnValue(array( - 'whitelist' => array( - 'addUncoveredFilesFromWhitelist' => false, - 'processUncoveredFilesFromWhitelist' => true - ), - 'forceCoversAnnotation' => false, - 'mapTestClassNameToCoveredClassName' => true - ))); - - $pass = new FilterPass(); - $pass->process($container); - } - - public function testProcessCodeCoverageFilter() - { - $filter = $this->createMock('Symfony\Component\DependencyInjection\Definition'); - $filter->expects($this->exactly(4)) - ->method('addMethodCall'); - - $container = $this->createMock('Symfony\Component\DependencyInjection\ContainerBuilder'); - $container->expects($this->exactly(2)) - ->method('hasDefinition') - ->will($this->onConsecutiveCalls(false, true)); - - $container->expects($this->once()) - ->method('getDefinition') - ->with('behat.code_coverage.php_code_coverage_filter') - ->will($this->returnValue($filter)); - - $container->expects($this->once()) - ->method('getParameter') - ->with('behat.code_coverage.config.filter') - ->will($this->returnValue(array( - 'whitelist' => array( - 'addUncoveredFilesFromWhitelist' => false, - 'processUncoveredFilesFromWhitelist' => true, - 'include' => array( - 'directories' => array( - 'directory1' => array( - 'prefix' => 'Secure', - 'suffix' => '.php', - ) - ), - 'files' => array( - 'file1' - ), - ), - 'exclude' => array( - 'directories' => array( - 'directory2' => array( - 'prefix' => 'Insecure', - 'suffix' => '.inc', - ) - ), - 'files' => array( - 'file2' - ), - ), - ), - 'blacklist' => array( - 'include' => array( - 'directories' => array( - 'directory3' => array( - 'prefix' => 'Public', - 'suffix' => '.php', - ) - ), - 'files' => array( - 'file3' - ), - ), - 'exclude' => array( - 'directories' => array( - 'directory4' => array( - 'prefix' => 'Private', - 'suffix' => '.inc', - ) - ), - 'files' => array( - 'file4' - ), - ), - ), - ))); - - $pass = new FilterPass(); - $pass->process($container); - } -}