Open zlex opened 11 years ago
Тест бы )
Воспроизвести очень легко, добавив property в test/meta/config.meta.xml в любой объект:
<property name="range" type="DateRange" />
Если запустить тесты, то результат такой:
PHP Fatal error: Call to undefined method DateRangeType::getSuffixList() in /var/www/libs/onphp-dev/meta/classes/MetaClassProperty.class.php on line 271
PHP Stack trace:
PHP 1. {main}() /usr/bin/phpunit:0
PHP 2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:49
PHP 3. PHPUnit_TextUI_Command->run() /usr/share/php5/PEAR/PHPUnit/TextUI/Command.php:129
PHP 4. PHPUnit_Runner_BaseTestRunner->getTest() /usr/share/php5/PEAR/PHPUnit/TextUI/Command.php:150
PHP 5. ReflectionMethod->invoke() /usr/share/php5/PEAR/PHPUnit/Runner/BaseTestRunner.php:124
PHP 6. AllTests::suite() /var/www/libs/onphp-dev/test/AllTests.php:124
PHP 7. include() /var/www/libs/onphp-dev/test/AllTests.php:84
PHP 8. MetaConfiguration->buildClasses() /var/www/libs/onphp-dev/meta/bin/build.php:306
PHP 9. MetaClass->dump() /var/www/libs/onphp-dev/meta/classes/MetaConfiguration.class.php:236
PHP 10. BasePattern->build() /var/www/libs/onphp-dev/meta/classes/MetaClass.class.php:364
PHP 11. BasePattern->fullBuild() /var/www/libs/onphp-dev/meta/patterns/BasePattern.class.php:72
PHP 12. BasePattern->buildProto() /var/www/libs/onphp-dev/meta/patterns/BasePattern.class.php:81
PHP 13. AutoProtoClassBuilder::build() /var/www/libs/onphp-dev/meta/patterns/BasePattern.class.php:93
PHP 14. AutoProtoClassBuilder::dumpMetaClass() /var/www/libs/onphp-dev/meta/builders/AutoProtoClassBuilder.class.php:32
PHP 15. MetaClassProperty->toLightProperty() /var/www/libs/onphp-dev/meta/builders/AutoProtoClassBuilder.class.php:78
PHP 16. MetaClassProperty->getRelationColumnName() /var/www/libs/onphp-dev/meta/classes/MetaClassProperty.class.php:416
Вот так вот сходу не понятно почему оно так. Либо недопилили, либо недовыпилили. В тестах DateRange вроде как упоминается.
В MetaClassProperty::getRelationColumnName() есть вызов метода getSuffixList(). Такой метод нигде не реализован, и если собирать мету с объектами, наследующими InternalType (например, DateRange), сборщик падает.
Подразумеваю, что не все объекты InternalType должны иметь метод getSuffixList(). В onPHP я вообще не нашёл, где это может использоваться. Забыли выпилить?
Что думаете, коллеги?