Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Testwork / Hook / ServiceContainer / HookExtension.php
1 <?php
2
3 /*
4  * This file is part of the Behat Testwork.
5  * (c) Konstantin Kudryashov <ever.zet@gmail.com>
6  *
7  * For the full copyright and license information, please view the LICENSE
8  * file that was distributed with this source code.
9  */
10
11 namespace Behat\Testwork\Hook\ServiceContainer;
12
13 use Behat\Behat\Tester\ServiceContainer\TesterExtension;
14 use Behat\Testwork\Call\ServiceContainer\CallExtension;
15 use Behat\Testwork\Environment\ServiceContainer\EnvironmentExtension;
16 use Behat\Testwork\ServiceContainer\Extension;
17 use Behat\Testwork\ServiceContainer\ExtensionManager;
18 use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
19 use Symfony\Component\DependencyInjection\ContainerBuilder;
20 use Symfony\Component\DependencyInjection\Definition;
21 use Symfony\Component\DependencyInjection\Reference;
22
23 /**
24  * Provides test hooking services for testwork.
25  *
26  * @author Konstantin Kudryashov <ever.zet@gmail.com>
27  */
28 class HookExtension implements Extension
29 {
30     /*
31      * Available services
32      */
33     const DISPATCHER_ID = 'hook.dispatcher';
34     const REPOSITORY_ID = 'hook.repository';
35
36     /**
37      * {@inheritdoc}
38      */
39     public function getConfigKey()
40     {
41         return 'hooks';
42     }
43
44     /**
45      * {@inheritdoc}
46      */
47     public function initialize(ExtensionManager $extensionManager)
48     {
49     }
50
51     /**
52      * {@inheritdoc}
53      */
54     public function configure(ArrayNodeDefinition $builder)
55     {
56     }
57
58     /**
59      * {@inheritdoc}
60      */
61     public function load(ContainerBuilder $container, array $config)
62     {
63         $this->loadDispatcher($container);
64         $this->loadRepository($container);
65         $this->loadHookableTesters($container);
66     }
67
68     /**
69      * {@inheritdoc}
70      */
71     public function process(ContainerBuilder $container)
72     {
73     }
74
75     /**
76      * Loads hook dispatcher.
77      *
78      * @param ContainerBuilder $container
79      */
80     protected function loadDispatcher(ContainerBuilder $container)
81     {
82         $definition = new Definition('Behat\Testwork\Hook\HookDispatcher', array(
83             new Reference(self::REPOSITORY_ID),
84             new Reference(CallExtension::CALL_CENTER_ID)
85         ));
86         $container->setDefinition(self::DISPATCHER_ID, $definition);
87     }
88
89     /**
90      * Loads hook repository.
91      *
92      * @param ContainerBuilder $container
93      */
94     protected function loadRepository(ContainerBuilder $container)
95     {
96         $definition = new Definition('Behat\Testwork\Hook\HookRepository', array(
97             new Reference(EnvironmentExtension::MANAGER_ID)
98         ));
99         $container->setDefinition(self::REPOSITORY_ID, $definition);
100     }
101
102     /**
103      * Loads hookable testers.
104      *
105      * @param ContainerBuilder $container
106      */
107     protected function loadHookableTesters(ContainerBuilder $container)
108     {
109         $definition = new Definition('Behat\Testwork\Hook\Tester\HookableSuiteTester', array(
110             new Reference(TesterExtension::SUITE_TESTER_ID),
111             new Reference(self::DISPATCHER_ID)
112         ));
113         $definition->addTag(TesterExtension::SUITE_TESTER_WRAPPER_TAG, array('priority' => 9999));
114         $container->setDefinition(TesterExtension::SUITE_TESTER_WRAPPER_TAG . '.hookable', $definition);
115     }
116 }