Skip to content

v1.13.1

Choose a tag to compare

@github-actions github-actions released this 24 May 20:15
· 15 commits to master since this release

Исправлено

  • 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-pass bsl_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).

Тесты

  • tests/test_helpers_extension.py: фикстура расширения приведена к реальной CF/CFE-раскладке — метаданные каталога теперь sibling Catalogs/<Имя>.xml, в Ext/ остаются только модули + Predefined.xml (раньше тест клал Ext/Catalog.xml, чего 1С не выгружает). Subsystem намеренно оставлен в Ext/ — покрывает (уже детерминированную) fallback-ветку.
  • Регрессионный TestMetadataXmlDiscoveryFallback: прямой тест _iter_metadata_xml_files — выбирает Catalog.xml, никогда Predefined.xml, и устойчив к обратному порядку iterdir() (воспроизводит условие падения CI детерминированно).

Полный список изменений: CHANGELOG.md