public function process(ContainerBuilder $container)
 {
     $serviceDefinitions = $container->getDefinitions();
     $validatorFactory = new ServiceDefinitionValidatorFactory($this->configuration);
     $validator = $validatorFactory->create($container);
     $batchValidator = new BatchServiceDefinitionValidator($validator, new ValidationErrorFactory());
     $errorList = $batchValidator->validate($serviceDefinitions);
     if (count($errorList) === 0) {
         return;
     }
     $errorListPrinter = new SimpleErrorListPrinter();
     $message = $errorListPrinter->printErrorList($errorList);
     throw new InvalidServiceDefinitionsException($message);
 }
 public function testCreatesErrorListAndTransformsValidationExceptionIntoErrors()
 {
     $goodDefinition = $this->createMockDefinition();
     $badDefinition = $this->createMockDefinition();
     $definitions = array('good_service' => $goodDefinition, 'bad_service' => $badDefinition);
     $error = $this->createMockError();
     $errorList = $this->createMockErrorList();
     $errorList->expects($this->once())->method('add')->with($error);
     $errorFactory = $this->createMockErrorFactory();
     $errorFactory->expects($this->once())->method('createValidationErrorList')->will($this->returnValue($errorList));
     $exception = $this->createException();
     $errorFactory->expects($this->once())->method('createValidationError')->with('bad_service', $badDefinition, $exception)->will($this->returnValue($error));
     $validator = $this->createMockValidator();
     $validator->expects($this->at(0))->method('validate')->with($goodDefinition);
     $validator->expects($this->at(1))->method('validate')->with($badDefinition)->will($this->throwException($exception));
     $batchValidator = new BatchServiceDefinitionValidator($validator, $errorFactory);
     $result = $batchValidator->validate($definitions);
     $this->assertSame($errorList, $result);
 }