/** * @param Configuration $config * @return FactoryDependencyInjectionContainer */ public function getContainer(Configuration $config) { $generator = new WritingFactoryGenerator($config, __DIR__ . '/_factories'); $fileReflection = new \Zend\Code\Reflection\FileReflection(__DIR__ . '/test_classes.php'); $classes = $fileReflection->getClasses(); foreach ($classes as $class) { /** @var \ReflectionClass $class */ $generator->processFileForClass($class->getName()); } return new FactoryOnlyDependencyInjectionContainer($config); }
/** * Ensure that all classes extended from extensible classes implement getter and setter for extension attributes. */ public function testExtensibleClassesWithMissingInterface() { $invoker = new \Magento\Framework\App\Utility\AggregateInvoker($this); $invoker(function ($filename) { $errors = []; $fileContent = file_get_contents($filename); $extensibleClassPattern = 'class [^\\{]+extends[^\\{]+AbstractExtensible'; $abstractExtensibleClassPattern = 'abstract ' . $extensibleClassPattern; if (preg_match('/' . $extensibleClassPattern . '/', $fileContent) && !preg_match('/' . $abstractExtensibleClassPattern . '/', $fileContent)) { $fileReflection = new \Zend\Code\Reflection\FileReflection($filename, true); foreach ($fileReflection->getClasses() as $classReflection) { if ($classReflection->isSubclassOf(self::EXTENSIBLE_DATA_INTERFACE)) { $methodsToCheck = ['setExtensionAttributes', 'getExtensionAttributes']; foreach ($methodsToCheck as $methodName) { try { $classReflection->getMethod($methodName); } catch (\ReflectionException $e) { $className = $classReflection->getName(); $errors[] = "'{$className}::{$methodName}()' must be declared or " . "'{$className}' should not be inherited from extensible class."; } } } } } $this->assertEmpty($errors, "Error validating {$filename}\n" . print_r($errors, true)); }, $this->getPhpFiles()); }