private function setupRunner(IndexedServiceContainer $container)
{
$container->define('runner.suite', function (IndexedServiceContainer $c) {
return new Runner\SuiteRunner($c->get('event_dispatcher'), $c->get('runner.specification'));
});
$container->define('runner.specification', function (IndexedServiceContainer $c) {
return new Runner\SpecificationRunner($c->get('event_dispatcher'), $c->get('runner.example'));
});
$container->define('runner.example', function (IndexedServiceContainer $c) {
$runner = new Runner\ExampleRunner($c->get('event_dispatcher'), $c->get('formatter.presenter'));
array_map(array($runner, 'registerMaintainer'), $c->getByTag('runner.maintainers'));
return $runner;
});
$container->define('runner.maintainers.errors', function (IndexedServiceContainer $c) {
return new Runner\Maintainer\ErrorMaintainer($c->getParam('runner.maintainers.errors.level', E_ALL ^ E_STRICT));
}, ['runner.maintainers']);
$container->define('runner.maintainers.collaborators', function (IndexedServiceContainer $c) {
return new Runner\Maintainer\CollaboratorsMaintainer($c->get('unwrapper'), $c->get('loader.transformer.typehintindex'));
}, ['runner.maintainers']);
$container->define('runner.maintainers.let_letgo', function () {
return new Runner\Maintainer\LetAndLetgoMaintainer();
}, ['runner.maintainers']);
$container->define('runner.maintainers.matchers', function (IndexedServiceContainer $c) {
$matchers = $c->getByTag('matchers');
return new Runner\Maintainer\MatchersMaintainer($c->get('formatter.presenter'), $matchers);
}, ['runner.maintainers']);
$container->define('runner.maintainers.subject', function (IndexedServiceContainer $c) {
return new Runner\Maintainer\SubjectMaintainer($c->get('formatter.presenter'), $c->get('unwrapper'), $c->get('event_dispatcher'), $c->get('access_inspector'));
}, ['runner.maintainers']);
$container->define('unwrapper', function () {
return new Wrapper\Unwrapper();
});
$container->define('access_inspector', function ($c) {
return $c->get('access_inspector.magic');
});
$container->define('access_inspector.magic', function ($c) {
return new MagicAwareAccessInspector($c->get('access_inspector.visibility'));
});
$container->define('access_inspector.visibility', function () {
return new VisibilityAccessInspector();
});
}