1 | <?php |
||
40 | class ParallelContainerDefinition |
||
41 | { |
||
42 | /** @var ParserDefinition */ |
||
43 | private $parserDefinition; |
||
44 | |||
45 | /** @var TestResultDefinition */ |
||
46 | private $testResult; |
||
47 | |||
48 | 20 | public function __construct() |
|
53 | |||
54 | 64 | public function configure(ContainerBuilder $container): ContainerBuilder |
|
55 | { |
||
56 | 64 | $container->setParameter('paraunit.max_retry_count', 3); |
|
57 | 64 | $container->setParameter('kernel.root_dir', 'src'); |
|
58 | 64 | $this->configureConfiguration($container); |
|
59 | 64 | $this->configureEventDispatcher($container); |
|
60 | 64 | $this->configureFile($container); |
|
61 | 64 | $this->parserDefinition->configure($container); |
|
62 | 64 | $this->configurePrinter($container); |
|
63 | 64 | $this->configureProcess($container); |
|
64 | 64 | $this->configureRunner($container); |
|
65 | 64 | $this->configureServices($container); |
|
66 | 64 | $this->testResult->configure($container); |
|
67 | |||
68 | 64 | return $container; |
|
69 | } |
||
70 | |||
71 | 64 | private function configureConfiguration(ContainerBuilder $container) |
|
72 | { |
||
73 | 64 | $container->setDefinition(PHPUnitBinFile::class, new Definition(PHPUnitBinFile::class)); |
|
74 | 64 | $container->setDefinition(PHPUnitConfig::class, new Definition(PHPUnitConfig::class, [ |
|
75 | 64 | '%paraunit.phpunit_config_filename%', |
|
76 | ])) |
||
77 | 64 | ->setPublic(true); |
|
78 | 64 | $container->setDefinition(TempFilenameFactory::class, new Definition(TempFilenameFactory::class, [ |
|
79 | 64 | new Reference(TempDirectory::class), |
|
80 | ])); |
||
81 | } |
||
82 | |||
83 | 64 | private function configureEventDispatcher(ContainerBuilder $container) |
|
84 | { |
||
85 | 64 | if (class_exists('Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument')) { |
|
86 | 64 | $container->setDefinition(EventDispatcherInterface::class, new Definition(EventDispatcher::class)); |
|
87 | } else { |
||
88 | $container->setDefinition( |
||
89 | EventDispatcherInterface::class, |
||
90 | new Definition(ContainerAwareEventDispatcher::class, [new Reference('service_container')]) |
||
91 | ); |
||
92 | } |
||
93 | |||
94 | 64 | $container->addCompilerPass( |
|
95 | 64 | new RegisterListenersPass( |
|
96 | 64 | EventDispatcherInterface::class, |
|
97 | 64 | '', |
|
98 | 64 | ParallelConfiguration::TAG_EVENT_SUBSCRIBER |
|
99 | ) |
||
100 | ); |
||
101 | } |
||
102 | |||
103 | 64 | private function configureFile(ContainerBuilder $container) |
|
104 | { |
||
105 | 64 | $container->setDefinition(TempDirectory::class, new Definition(TempDirectory::class)); |
|
106 | 64 | $container->setDefinition(Cleaner::class, new Definition(Cleaner::class, [ |
|
107 | 64 | new Reference(TempDirectory::class), |
|
108 | ])); |
||
109 | } |
||
110 | |||
111 | 64 | private function configurePrinter(ContainerBuilder $container) |
|
112 | { |
||
113 | 64 | $output = new Reference(OutputInterface::class); |
|
114 | |||
115 | 64 | $container->setDefinition(SharkPrinter::class, new Definition(SharkPrinter::class, [ |
|
116 | 64 | $output, |
|
117 | 64 | '%paraunit.show_logo%', |
|
118 | ])); |
||
119 | 64 | $container->setDefinition(ProcessPrinter::class, new Definition(ProcessPrinter::class, [ |
|
120 | 64 | new Reference(SingleResultFormatter::class), |
|
121 | 64 | $output, |
|
122 | ])); |
||
123 | |||
124 | $finalPrinterArguments = [ |
||
125 | 64 | new Reference(TestResultList::class), |
|
126 | 64 | $output, |
|
127 | ]; |
||
128 | 64 | $container->setDefinition(FinalPrinter::class, new Definition(FinalPrinter::class, $finalPrinterArguments)); |
|
129 | 64 | $container->setDefinition(FailuresPrinter::class, new Definition(FailuresPrinter::class, $finalPrinterArguments)); |
|
130 | 64 | $container->setDefinition(FilesRecapPrinter::class, new Definition(FilesRecapPrinter::class, $finalPrinterArguments)); |
|
131 | |||
132 | 64 | $container->setDefinition(ConsoleFormatter::class, new Definition(ConsoleFormatter::class, [$output])); |
|
133 | 64 | $container->setDefinition(SingleResultFormatter::class, new Definition(SingleResultFormatter::class, [ |
|
134 | 64 | new Reference(TestResultList::class), |
|
135 | ])); |
||
136 | } |
||
137 | |||
138 | 64 | private function configureProcess(ContainerBuilder $container) |
|
150 | |||
151 | 64 | private function configureRunner(ContainerBuilder $container) |
|
168 | |||
169 | 64 | private function configureServices(ContainerBuilder $container) |
|
170 | { |
||
171 | 64 | $container->register(OutputInterface::class, OutputInterface::class) |
|
172 | 64 | ->setPublic(true) |
|
173 | 64 | ->setSynthetic(true); |
|
184 | |||
185 | 64 | private function getProcessFactoryClass(): string |
|
196 | } |
||
197 |