/** * @param ServiceContainer $container */ public function load(ServiceContainer $container) { $container->setShared('code_generator.generators.specification', function (ServiceContainer $c) { return new ClassNotationSpecificationGenerator($c->get('console.io'), $c->get('code_generator.templates')); }); $container->setParam('code_generator.templates.paths', array(rtrim(__DIR__, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . '.phpspec')); }
function it_should_use_singular_output() { $container = new ServiceContainer(); $container->setParam('code_coverage', array('output' => 'test', 'format' => 'foo')); $this->load($container); $options = $container->get('code_coverage.options'); expect($options['output'])->toBe(array('foo' => 'test')); }
/** * @param ServiceContainer $container */ private function setupGenerators(ServiceContainer $container) { $container->setShared('code_generator', function (ServiceContainer $c) { $generator = new CodeGenerator\GeneratorManager(); array_map(array($generator, 'registerGenerator'), $c->getByPrefix('code_generator.generators')); return $generator; }); $container->set('code_generator.generators.specification', function (ServiceContainer $c) { $specificationGenerator = new CodeGenerator\Generator\SpecificationGenerator($c->get('console.io'), $c->get('code_generator.templates')); return new CodeGenerator\Generator\NewFileNotifyingGenerator($specificationGenerator, $c->get('event_dispatcher')); }); $container->set('code_generator.generators.class', function (ServiceContainer $c) { $classGenerator = new CodeGenerator\Generator\ClassGenerator($c->get('console.io'), $c->get('code_generator.templates'), null, $c->get('process.executioncontext')); return new CodeGenerator\Generator\NewFileNotifyingGenerator($classGenerator, $c->get('event_dispatcher')); }); $container->set('code_generator.generators.interface', function (ServiceContainer $c) { $interfaceGenerator = new CodeGenerator\Generator\InterfaceGenerator($c->get('console.io'), $c->get('code_generator.templates'), null, $c->get('process.executioncontext')); return new CodeGenerator\Generator\NewFileNotifyingGenerator($interfaceGenerator, $c->get('event_dispatcher')); }); $container->set('code_generator.generators.method', function (ServiceContainer $c) { return new CodeGenerator\Generator\MethodGenerator($c->get('console.io'), $c->get('code_generator.templates')); }); $container->set('code_generator.generators.methodSignature', function (ServiceContainer $c) { return new CodeGenerator\Generator\MethodSignatureGenerator($c->get('console.io'), $c->get('code_generator.templates')); }); $container->set('code_generator.generators.returnConstant', function (ServiceContainer $c) { return new CodeGenerator\Generator\ReturnConstantGenerator($c->get('console.io'), $c->get('code_generator.templates')); }); $container->set('code_generator.generators.named_constructor', function (ServiceContainer $c) { return new CodeGenerator\Generator\NamedConstructorGenerator($c->get('console.io'), $c->get('code_generator.templates')); }); $container->set('code_generator.generators.private_constructor', function (ServiceContainer $c) { return new CodeGenerator\Generator\PrivateConstructorGenerator($c->get('console.io'), $c->get('code_generator.templates')); }); $container->setShared('code_generator.templates', function (ServiceContainer $c) { $renderer = new CodeGenerator\TemplateRenderer(); $renderer->setLocations($c->getParam('code_generator.templates.paths', array())); return $renderer; }); if (!empty($_SERVER['HOMEDRIVE']) && !empty($_SERVER['HOMEPATH'])) { $home = $_SERVER['HOMEDRIVE'] . $_SERVER['HOMEPATH']; } else { $home = getenv('HOME'); } $container->setParam('code_generator.templates.paths', array(rtrim(getcwd(), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . '.phpspec', rtrim($home, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . '.phpspec')); }
/** * @param ServiceContainer $container */ protected function setupGenerators(ServiceContainer $container) { $container->setShared('code_generator', function ($c) { $generator = new CodeGenerator\GeneratorManager(); array_map(array($generator, 'registerGenerator'), $c->getByPrefix('code_generator.generators')); return $generator; }); $container->set('code_generator.generators.specification', function ($c) { return new CodeGenerator\Generator\SpecificationGenerator($c->get('console.io'), $c->get('code_generator.templates')); }); $container->set('code_generator.generators.class', function ($c) { return new CodeGenerator\Generator\ClassGenerator($c->get('console.io'), $c->get('code_generator.templates')); }); $container->set('code_generator.generators.method', function ($c) { return new CodeGenerator\Generator\MethodGenerator($c->get('console.io'), $c->get('code_generator.templates')); }); $container->setShared('code_generator.templates', function ($c) { $renderer = new CodeGenerator\TemplateRenderer(); $renderer->setLocations($c->getParam('code_generator.templates.paths', array())); return $renderer; }); if (!empty($_SERVER['HOMEDRIVE']) && !empty($_SERVER['HOMEPATH'])) { $home = $_SERVER['HOMEDRIVE'] . $_SERVER['HOMEPATH']; } else { $home = $_SERVER['HOME']; } $container->setParam('code_generator.templates.paths', array(rtrim(getcwd(), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . '.phpspec', rtrim($home, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . '.phpspec')); }
/** * {@inheritDoc} */ public function load(ServiceContainer $container) { $container->setShared('code_coverage.filter', function () { return new \PHP_CodeCoverage_Filter(); }); $container->setShared('code_coverage', function ($container) { return new \PHP_CodeCoverage(null, $container->get('code_coverage.filter')); }); $container->setShared('code_coverage.options', function ($container) { $options = $container->getParam('code_coverage'); if (!isset($options['format'])) { $options['format'] = array('html'); } elseif (!is_array($options['format'])) { $options['format'] = (array) $options['format']; } if (isset($options['output'])) { if (!is_array($options['output']) && count($options['format']) == 1) { $format = $options['format'][0]; $options['output'] = array($format => $options['output']); } } if (!isset($options['show_uncovered_files'])) { $options['show_uncovered_files'] = true; } if (!isset($options['lower_upper_bound'])) { $options['lower_upper_bound'] = 35; } if (!isset($options['high_lower_bound'])) { $options['high_lower_bound'] = 70; } return $options; }); $container->setShared('code_coverage.reports', function ($container) { $options = $container->get('code_coverage.options'); $reports = array(); foreach ($options['format'] as $format) { switch ($format) { case 'clover': $reports['clover'] = new \PHP_CodeCoverage_Report_Clover(); break; case 'php': $reports['php'] = new \PHP_CodeCoverage_Report_PHP(); break; case 'text': $reports['text'] = new \PHP_CodeCoverage_Report_Text($options['lower_upper_bound'], $options['high_lower_bound'], $options['show_uncovered_files'], false); break; case 'xml': $reports['xml'] = new \PHP_CodeCoverage_Report_XML(); break; case 'crap4j': $reports['crap4j'] = new \PHP_CodeCoverage_Report_Crap4j(); break; case 'html': $reports['html'] = new \PHP_CodeCoverage_Report_HTML(); break; } } $container->setParam('code_coverage', $options); return $reports; }); $container->setShared('event_dispatcher.listeners.code_coverage', function ($container) { $listener = new CodeCoverageListener($container->get('code_coverage'), $container->get('code_coverage.reports')); $listener->setIO($container->get('console.io')); $listener->setOptions($container->getParam('code_coverage', array())); return $listener; }); }