public function testAddsErrorToList()
 {
     $list = new ValidationErrorList();
     $error1 = $this->createMockError();
     $error2 = $this->createMockError();
     $list->add($error1);
     $list->add($error2);
     $this->assertCount(2, $list);
     $expectedErrors = array($error1, $error2);
     $this->assertSame($expectedErrors, iterator_to_array($list));
 }
    public function testPrintsErrorMessageInAList()
    {
        $serviceId1 = 'service_1';
        $message1 = 'Message 1';
        $exception1 = $this->createException($message1);
        $error1 = $this->createMockError($serviceId1, $exception1);
        $serviceId2 = 'service_2';
        $message2 = 'Message 2';
        $exception2 = $this->createException($message2);
        $error2 = $this->createMockError($serviceId2, $exception2);
        $list = new ValidationErrorList();
        $list->add($error1);
        $list->add($error2);
        $expectedMessage = <<<EOT
Service definition validation errors (2):
- {$serviceId1}: {$message1}
- {$serviceId2}: {$message2}
EOT;
        $printer = new SimpleErrorListPrinter();
        $this->assertSame($expectedMessage, $printer->printErrorList($list));
    }
 /**
  * Validates the definitions in the provided container and returns a list of errors.
  *
  * @param ContainerBuilder $container
  * @return ValidationErrorList
  */
 protected function validateContainer(ContainerBuilder $container)
 {
     $validatorFactory = new ServiceDefinitionValidatorFactory();
     $validator = $validatorFactory->create($container);
     $errors = new ValidationErrorList();
     foreach ($container->getDefinitions() as $serviceId => $definition) {
         try {
             $validator->validate($definition);
             return $errors;
         } catch (\Exception $exception) {
             $error = new ValidationError($serviceId, $definition, $exception);
             $errors->add($error);
         }
     }
     return $errors;
 }