Exemplo n.º 1
0
 /**
  * Validate DI config file
  *
  * @param string $file
  */
 protected function _validateFile($file)
 {
     $dom = new \DOMDocument();
     $dom->load($file);
     $data = $this->_mapper->convert($dom);
     foreach ($data as $instanceName => $parameters) {
         if (!isset($parameters['parameters']) || empty($parameters['parameters'])) {
             continue;
         }
         if (\Magento\TestFramework\Utility\Classes::isVirtual($instanceName)) {
             $instanceName = \Magento\TestFramework\Utility\Classes::resolveVirtualType($instanceName);
         }
         if (!$this->_classExistsAsReal($instanceName)) {
             continue;
         }
         $reflectionClass = new \ReflectionClass($instanceName);
         $constructor = $reflectionClass->getConstructor();
         if (!$constructor) {
             $this->fail('Class ' . $instanceName . ' does not have __constructor');
         }
         $parameters = $parameters['parameters'];
         $classParameters = $constructor->getParameters();
         foreach ($classParameters as $classParameter) {
             $parameterName = $classParameter->getName();
             if (array_key_exists($parameterName, $parameters)) {
                 unset($parameters[$parameterName]);
             }
         }
         $message = 'Configuration of ' . $instanceName . ' contains data for non-existed parameters: ' . implode(', ', array_keys($parameters));
         $this->assertEmpty($parameters, $message);
     }
 }
Exemplo n.º 2
0
 /**
  * Check whether specified classes correspond to a file according PSR-0 standard
  *
  * Cyclomatic complexity is because of temporary marking test as incomplete
  * Suppressing "unused variable" because of the "catch" block
  *
  * @param array $classes
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.UnusedLocalVariable)
  */
 protected function _assertClassesExist($classes, $path)
 {
     if (!$classes) {
         return;
     }
     $badClasses = array();
     $badUsages = array();
     foreach ($classes as $class) {
         try {
             if (strrchr($class, '\\') == false) {
                 $badUsages[] = $class;
                 continue;
             } else {
                 $this->assertTrue(isset(self::$_existingClasses[$class]) || \Magento\TestFramework\Utility\Files::init()->classFileExists($class) || \Magento\TestFramework\Utility\Classes::isVirtual($class) || \Magento\TestFramework\Utility\Classes::isAutogenerated($class));
             }
             self::$_existingClasses[$class] = 1;
         } catch (\PHPUnit_Framework_AssertionFailedError $e) {
             $badClasses[] = $class;
         }
     }
     if ($badClasses) {
         $this->fail("Files not found for following usages in {$path}:\n" . implode("\n", $badClasses));
     }
     if ($badUsages) {
         $this->fail("Bad usages of classes in {$path}: \n" . implode("\n", $badUsages));
     }
 }