v1.13.1
Исправлено
find_predefined/search(scope='predefined')для объектов расширения теперь работают на реальной CF/CFE-раскладке._predefined_candidatesвыводил путь кExt/Predefined.xmlиз локатора объекта, предполагая, что локатор лежит внутриObj/Ext/. Для реального sibling-локатораКатегория/Объект.xml(как в настоящих выгрузках CF/CFE) он строил неверный путьКатегория/Ext/Predefined.xml→ предопределённые элементы расширения не находились (возвращался[]). Теперь объектная папка корректно выводится и из sibling-локатора (Cat/Name.xml), и изCat/Name/Ext/<Type>.xml. Это реальный баг — проявлялся на настоящих расширениях с предопределёнными элементами; раньше был скрыт нереалистичной тестовой фикстурой.- Детект метаданных объектов расширений стал независимым от порядка файловой системы. В
_iter_metadata_xml_files(используется extension-passbsl_helpersи_collect_object_synonyms) fallback-ветка «метаданные объекта лежат вObj/Ext/» брала первый.xmlв порядкеiterdir()и могла выбратьPredefined.xml(предопределённые элементы, без реквизитов) как локатор объекта →find_attributesдля такого объекта возвращал[]. Порядокiterdir()зависит от ФС, поэтому проблема всплывала недетерминированно (проявилась после смены образаubuntu-latestв GitHub Actions — CI, зелёный на v1.12.0, стал красным без изменений кода). Теперь ветка сортирует содержимоеExt/и никогда не выбираетPredefined.xmlкак метаданные объекта.- Влияния на реальные конфигурации именно у этого fallback нет: реальные выгрузки CF/CFE используют sibling-файл
Категория/Объект.xml, а EDT —Объект.mdo; обе ветки детерминированы и срабатывают раньше этого fallback (проверено на реальных CF, CFE и EDT). Затрагивалась только синтетическая тестовая раскладка (Ext/Catalog.xmlбез sibling).
- Влияния на реальные конфигурации именно у этого fallback нет: реальные выгрузки CF/CFE используют sibling-файл
Тесты
tests/test_helpers_extension.py: фикстура расширения приведена к реальной CF/CFE-раскладке — метаданные каталога теперь siblingCatalogs/<Имя>.xml, вExt/остаются только модули +Predefined.xml(раньше тест клалExt/Catalog.xml, чего 1С не выгружает). Subsystem намеренно оставлен вExt/— покрывает (уже детерминированную) fallback-ветку.- Регрессионный
TestMetadataXmlDiscoveryFallback: прямой тест_iter_metadata_xml_files— выбираетCatalog.xml, никогдаPredefined.xml, и устойчив к обратному порядкуiterdir()(воспроизводит условие падения CI детерминированно).
Полный список изменений: CHANGELOG.md