From f694c488355bb162d94a8cb448cd6b660080e777 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 22 Aug 2026 14:00:22 +0300 Subject: [PATCH] =?UTF-8?q?fix(meta-validate):=20=D0=BB=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D1=81=D1=80=D0=B0=D0=B1=D0=B0=D1=82=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B0=20=D1=82=D0=B8=D0=BF?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D1=85=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3?= =?UTF-8?q?=D1=83=D1=80=D0=B0=D1=86=D0=B8=D1=8F=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Прогон по acc_8.3.24 и erp_8.3.24 (33 895 объектов) давал 246 ERROR и 1662 WARN на выгрузках, которые платформа принимает без единой ошибки, — то есть ложным был весь вывод валидатора. Две группы при этом роняли exit=1 на типовой конфигурации: то же, из-за чего заводились #79 и #84, только зеркально. Разобрано платформой на стенде 8.3.24.1691, каждый случай — копия эталона с одной мутацией: - пустой у реквизита — это тип «Произвольный»; загрузка проходит, round-trip сохраняет конструкцию без изменений. Было ERROR (245 раз), стало молчание; - блока Type нет вовсе — загрузка тоже проходит, но платформа молча подставляет тип нового реквизита, Строка(10). Замысел теряется, загрузка нет: ERROR заменён на WARN; - IntegrationService и Bot отсутствовали в списках видов метаданных (в спеке 45 типов, навык знал 43) — штатный объект типовой давал «Unrecognized metadata type» и exit=1; - HierarchyType платформа пишет всегда и при выключенной иерархии игнорирует: из 1254 срабатываний 1253 приходились на её собственный дефолт. Предупреждаем только о явно заданном другом типе; - источник подписки задают и наборами типов (), а состав журнала — элементами ; проверки искали только и потому не видели ни одной такой подписки и ни одного журнала. Зато реально пустой источник и пустой состав платформа отвергает («Источник событий должен быть задан», «Для журнала не заданы регистрируемые документы») — там уровень поднят с WARN до ERROR; - сигнатура процедуры переносится на несколько строк, и Экспорт оказывается не на строке с именем; регулярка требовала одну строку. Модуль поставщика в двоичном виде (Module.bin) больше не даёт предупреждения «файл не найден» — текста там нет by design; - ExchangeDate — легаси-реквизит планов обмена, поддержан в meta-compile и meta-decompile: добавлен как допустимый, но не обязательный. После правки корпус даёт 0 ERROR и 1 WARN — тот самый единственный недефолтный тип иерархии. Объём проверки не потерян: объектов провалидировано 33 895 против 33 894. Восемь новых кейсов держат обе стороны каждой правки: валидная конструкция молчит, настоящая ошибка по-прежнему ловится. Co-Authored-By: Claude Opus 5 (1M context) --- .../meta-validate/scripts/meta-validate.ps1 | 52 ++-- .../meta-validate/scripts/meta-validate.py | 52 ++-- .../error-journal-empty-documents.json | 11 + .../error-subscription-empty-source.json | 11 + .../Catalogs/Товары.xml | 131 +++++++++ .../Configuration.xml | 253 +++++++++++++++++ .../Catalogs/Прочие.xml | 91 +++++++ .../Configuration.xml | 253 +++++++++++++++++ .../catalog-no-type-block/Catalogs/Товары.xml | 131 +++++++++ .../catalog-no-type-block/Configuration.xml | 253 +++++++++++++++++ .../integration-service/Configuration.xml | 253 +++++++++++++++++ .../IntegrationServices/ОбменСообщениями.xml | 92 +++++++ .../journal-empty-documents/Configuration.xml | 255 ++++++++++++++++++ .../DocumentJournals/ТестЖурнал.xml | 196 ++++++++++++++ .../journal-with-documents/Configuration.xml | 255 ++++++++++++++++++ .../DocumentJournals/ТестЖурнал.xml | 198 ++++++++++++++ .../CommonModules/ТестМодуль.xml | 23 ++ .../CommonModules/ТестМодуль/Ext/Module.bsl | 2 + .../Configuration.xml | 255 ++++++++++++++++++ .../EventSubscriptions/ТестПодписка.xml | 18 ++ .../CommonModules/ТестМодуль.xml | 23 ++ .../CommonModules/ТестМодуль/Ext/Module.bsl | 2 + .../Configuration.xml | 255 ++++++++++++++++++ .../EventSubscriptions/ТестПодписка.xml | 20 ++ .../meta-validate/valid-empty-type-block.json | 15 ++ .../valid-integration-service.json | 15 ++ .../valid-journal-with-documents.json | 15 ++ .../valid-subscription-typeset-source.json | 15 ++ .../warn-hierarchy-type-nondefault.json | 13 + .../meta-validate/warn-no-type-block.json | 13 + 30 files changed, 3140 insertions(+), 31 deletions(-) create mode 100644 tests/skills/cases/meta-validate/error-journal-empty-documents.json create mode 100644 tests/skills/cases/meta-validate/error-subscription-empty-source.json create mode 100644 tests/skills/cases/meta-validate/fixtures/catalog-empty-type-block/Catalogs/Товары.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/catalog-empty-type-block/Configuration.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/catalog-hierarchy-type-nondefault/Catalogs/Прочие.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/catalog-hierarchy-type-nondefault/Configuration.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/catalog-no-type-block/Catalogs/Товары.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/catalog-no-type-block/Configuration.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/integration-service/Configuration.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/integration-service/IntegrationServices/ОбменСообщениями.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/journal-empty-documents/Configuration.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/journal-empty-documents/DocumentJournals/ТестЖурнал.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/journal-with-documents/Configuration.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/journal-with-documents/DocumentJournals/ТестЖурнал.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/subscription-empty-source/CommonModules/ТестМодуль.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/subscription-empty-source/CommonModules/ТестМодуль/Ext/Module.bsl create mode 100644 tests/skills/cases/meta-validate/fixtures/subscription-empty-source/Configuration.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/subscription-empty-source/EventSubscriptions/ТестПодписка.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/CommonModules/ТестМодуль.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/CommonModules/ТестМодуль/Ext/Module.bsl create mode 100644 tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/Configuration.xml create mode 100644 tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/EventSubscriptions/ТестПодписка.xml create mode 100644 tests/skills/cases/meta-validate/valid-empty-type-block.json create mode 100644 tests/skills/cases/meta-validate/valid-integration-service.json create mode 100644 tests/skills/cases/meta-validate/valid-journal-with-documents.json create mode 100644 tests/skills/cases/meta-validate/valid-subscription-typeset-source.json create mode 100644 tests/skills/cases/meta-validate/warn-hierarchy-type-nondefault.json create mode 100644 tests/skills/cases/meta-validate/warn-no-type-block.json diff --git a/.claude/skills/meta-validate/scripts/meta-validate.ps1 b/.claude/skills/meta-validate/scripts/meta-validate.ps1 index 7d86b8967..13b607b62 100644 --- a/.claude/skills/meta-validate/scripts/meta-validate.ps1 +++ b/.claude/skills/meta-validate/scripts/meta-validate.ps1 @@ -1,4 +1,4 @@ -# meta-validate v1.22 — Validate 1C metadata object structure +# meta-validate v1.23 — Validate 1C metadata object structure # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -187,6 +187,7 @@ $validTypes = @( $structuralOnlyTypes = @( "Subsystem","Role","CommonForm","CommonCommand","CommandGroup","CommonAttribute", "CommonTemplate","CommonPicture","SessionParameter","SettingsStorage","FilterCriterion", + "IntegrationService","Bot", "FunctionalOption","FunctionalOptionsParameter","Language","Style","StyleItem", "WSReference","XDTOPackage","DocumentNumerator","Sequence" ) @@ -230,7 +231,7 @@ $standardAttributesByType = @{ "ChartOfCalculationTypes" = @("PredefinedDataName","Predefined","Ref","DeletionMark","Description","Code","ActionPeriodIsBasic") "BusinessProcess" = @("Ref","DeletionMark","Date","Number","Started","Completed","HeadTask") "Task" = @("Ref","DeletionMark","Date","Number","Executed","Description","RoutePoint","BusinessProcess") - "ExchangePlan" = @("Ref","DeletionMark","Code","Description","ThisNode","SentNo","ReceivedNo") + "ExchangePlan" = @("Ref","DeletionMark","Code","Description","ThisNode","SentNo","ReceivedNo","ExchangeDate") "DocumentJournal" = @("Type","Ref","Date","Posted","DeletionMark","Number") } @@ -240,6 +241,8 @@ $standardAttributesByType = @{ $stdAttrConditionalNames = @{ "AccountingRegister" = @("PeriodAdjustment","RecordType") "AccumulationRegister" = @("RecordType") + # ExchangeDate — легаси-реквизит, объявлен лишь у части планов обмена: допустим, но не обязателен. + "ExchangePlan" = @("ExchangeDate") } # Types that have StandardAttributes block @@ -738,16 +741,14 @@ function Check-ChildElement { } if ($requireType) { + # Пустой — это тип «Произвольный», штатная конструкция: в типовых так описаны + # служебные реквизиты обработок, платформа принимает и сохраняет её без изменений + # (проверено round-trip). Ошибкой здесь был бы отказ там, где платформа не отказывает. $typeEl = $elProps.SelectSingleNode("md:Type", $ns) if (-not $typeEl) { - Report-Error "7. $kind '$nameVal' missing Type block" - return $false - } - $v8Types = $typeEl.SelectNodes("v8:Type", $ns) - $v8TypeSets = $typeEl.SelectNodes("v8:TypeSet", $ns) - if ($v8Types.Count -eq 0 -and $v8TypeSets.Count -eq 0) { - Report-Error "7. $kind '$nameVal' Type block has no v8:Type or v8:TypeSet" - return $false + # Блока Type нет вовсе: загрузка проходит, но платформа молча подставляет тип нового + # реквизита — Строка(10). Загрузку это не рвёт, а замысел теряет, отсюда WARN. + Report-Warn "7. $kind '$nameVal' — блок Type не задан; при загрузке платформа подставит Строка(10)" } } @@ -1009,7 +1010,12 @@ if ($propsNode) { # HierarchyType set but Hierarchical = false $hierarchical = $propsNode.SelectSingleNode("md:Hierarchical", $ns) $hierarchyType = $propsNode.SelectSingleNode("md:HierarchyType", $ns) - if ($hierarchical -and $hierarchyType -and $hierarchical.InnerText -eq "false" -and $hierarchyType.InnerText) { + # HierarchyType платформа пишет всегда, независимо от Hierarchical, и при выключенной иерархии + # просто его игнорирует (проверено: значение переживает round-trip). Дефолтное значение поэтому + # ни о чём не говорит — предупреждаем только о явно заданном другом типе иерархии: это похоже + # на "тип иерархии выбрали, а саму иерархию включить забыли". + if ($hierarchical -and $hierarchyType -and $hierarchical.InnerText -eq "false" -and + $hierarchyType.InnerText -and $hierarchyType.InnerText -ne "HierarchyFoldersAndItems") { Report-Warn "10. HierarchyType='$($hierarchyType.InnerText)' but Hierarchical=false" $check10Issues++ } @@ -1042,13 +1048,17 @@ if ($propsNode) { # Empty Source $source = $propsNode.SelectSingleNode("md:Source", $ns) + # Источник задают и наборами типов (cfg:CatalogObject) — в типовых + # так описана каждая четвёртая подписка. Реально пустой источник платформа отвергает: + # «ПодпискаНаСобытие.X - Источник событий должен быть задан», поэтому это ошибка. $hasSource = $false if ($source) { $sourceTypes = $source.SelectNodes("v8:Type", $ns) - if ($sourceTypes.Count -gt 0) { $hasSource = $true } + $sourceTypeSets = $source.SelectNodes("v8:TypeSet", $ns) + if ($sourceTypes.Count -gt 0 -or $sourceTypeSets.Count -gt 0) { $hasSource = $true } } if (-not $hasSource) { - Report-Warn "10. EventSubscription: no Source types specified" + Report-Error "10. EventSubscription: источник событий не задан — платформа отвергнет загрузку" $check10Issues++ } } @@ -1110,13 +1120,17 @@ if ($propsNode) { # DocumentJournal: RegisteredDocuments should not be empty if ($mdType -eq "DocumentJournal") { $regDocs = $propsNode.SelectSingleNode("md:RegisteredDocuments", $ns) + # Регистрируемые документы платформа перечисляет как , + # так же их пишет meta-compile; форма с сохранена на случай иных выгрузок. + # Пустой состав платформа отвергает: «Для журнала не заданы регистрируемые документы». $hasRegDocs = $false if ($regDocs) { $items = $regDocs.SelectNodes("v8:Type", $ns) - if ($items.Count -gt 0) { $hasRegDocs = $true } + $refItems = $regDocs.SelectNodes("xr:Item", $ns) + if ($items.Count -gt 0 -or $refItems.Count -gt 0) { $hasRegDocs = $true } } if (-not $hasRegDocs) { - Report-Warn "10. DocumentJournal: no RegisteredDocuments specified" + Report-Error "10. DocumentJournal: регистрируемые документы не заданы — платформа отвергнет загрузку" $check10Issues++ } } @@ -1373,11 +1387,17 @@ if ($propsNode -and $mdType -in @("EventSubscription","ScheduledJob") -and $scri if (Test-Path $bslPath) { $bslContent = [System.IO.File]::ReadAllText($bslPath, [System.Text.Encoding]::UTF8) # Match: Procedure/Function ProcName(...) Export or Процедура/Функция ProcName(...) Экспорт - $exportPattern = "(?mi)^[\s]*(Procedure|Function|Процедура|Функция)\s+$([regex]::Escape($procName))\s*\(.*\)\s+(Export|Экспорт)" + # Список параметров переносится на следующие строки, и Экспорт оказывается не на + # строке с именем — в типовых так объявлена каждая обработчик-процедура с длинной + # сигнатурой. Отсюда (?s) для содержимого скобок и \s (а не пробел) перед Экспорт. + $exportPattern = "(?smi)^[ ]*(Procedure|Function|Процедура|Функция)[ ]+$([regex]::Escape($procName))[ ]*\([^)]*\)\s+(Export|Экспорт)" if (-not [regex]::IsMatch($bslContent, $exportPattern)) { Report-Warn "13. ${mdType}.${propLabel}: procedure '$procName' not found as exported in CommonModule '$cmName'" $check13Ok = $false } + } elseif (Test-Path ([System.IO.Path]::ChangeExtension($bslPath, "bin"))) { + # Модуль поставщика выгружен в двоичном виде (Module.bin) — текста нет by design, + # проверять нечего. Предупреждать здесь значило бы шуметь о норме. } else { Report-Warn "13. ${mdType}.${propLabel}: BSL file not found ($bslPath), cannot verify procedure" } diff --git a/.claude/skills/meta-validate/scripts/meta-validate.py b/.claude/skills/meta-validate/scripts/meta-validate.py index 0f86ee27f..83098600e 100644 --- a/.claude/skills/meta-validate/scripts/meta-validate.py +++ b/.claude/skills/meta-validate/scripts/meta-validate.py @@ -1,4 +1,4 @@ -# meta-validate v1.22 — Validate 1C metadata object structure (Python port) +# meta-validate v1.23 — Validate 1C metadata object structure (Python port) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import os @@ -210,6 +210,7 @@ valid_types = ( structural_only_types = ( "Subsystem", "Role", "CommonForm", "CommonCommand", "CommandGroup", "CommonAttribute", "CommonTemplate", "CommonPicture", "SessionParameter", "SettingsStorage", "FilterCriterion", + "IntegrationService", "Bot", "FunctionalOption", "FunctionalOptionsParameter", "Language", "Style", "StyleItem", "WSReference", "XDTOPackage", "DocumentNumerator", "Sequence", ) @@ -253,7 +254,7 @@ standard_attributes_by_type = { "ChartOfCalculationTypes": ["PredefinedDataName", "Predefined", "Ref", "DeletionMark", "Description", "Code", "ActionPeriodIsBasic"], "BusinessProcess": ["Ref", "DeletionMark", "Date", "Number", "Started", "Completed", "HeadTask"], "Task": ["Ref", "DeletionMark", "Date", "Number", "Executed", "Description", "RoutePoint", "BusinessProcess"], - "ExchangePlan": ["Ref", "DeletionMark", "Code", "Description", "ThisNode", "SentNo", "ReceivedNo"], + "ExchangePlan": ["Ref", "DeletionMark", "Code", "Description", "ThisNode", "SentNo", "ReceivedNo", "ExchangeDate"], "DocumentJournal": ["Type", "Ref", "Date", "Posted", "DeletionMark", "Number"], } @@ -263,6 +264,8 @@ standard_attributes_by_type = { std_attr_conditional_names = { "AccountingRegister": ("PeriodAdjustment", "RecordType"), "AccumulationRegister": ("RecordType",), + # ExchangeDate — легаси-реквизит, объявлен лишь у части планов обмена: допустим, но не обязателен. + "ExchangePlan": ("ExchangeDate",), } # Types that have StandardAttributes block @@ -732,14 +735,13 @@ def check_child_element(node, kind, require_type): if require_type: type_el = find(el_props, "md:Type") + # Пустой — это тип «Произвольный», штатная конструкция: в типовых так описаны + # служебные реквизиты обработок, платформа принимает и сохраняет её без изменений + # (проверено round-trip). Ошибкой здесь был бы отказ там, где платформа не отказывает. if type_el is None: - report_error(f"7. {kind} '{name_val}' missing Type block") - return False - v8_types = find_all(type_el, "v8:Type") - v8_type_sets = find_all(type_el, "v8:TypeSet") - if len(v8_types) == 0 and len(v8_type_sets) == 0: - report_error(f"7. {kind} '{name_val}' Type block has no v8:Type or v8:TypeSet") - return False + # Блока Type нет вовсе: загрузка проходит, но платформа молча подставляет тип нового + # реквизита — Строка(10). Загрузку это не рвёт, а замысел теряет, отсюда WARN. + report_warn(f"7. {kind} '{name_val}' — блок Type не задан; при загрузке платформа подставит Строка(10)") return True @@ -977,8 +979,13 @@ if props_node is not None: # HierarchyType set but Hierarchical = false hierarchical = find(props_node, "md:Hierarchical") hierarchy_type = find(props_node, "md:HierarchyType") + # HierarchyType платформа пишет всегда, независимо от Hierarchical, и при выключенной иерархии + # просто его игнорирует (проверено: значение переживает round-trip). Дефолтное значение поэтому + # ни о чём не говорит — предупреждаем только о явно заданном другом типе иерархии: это похоже + # на "тип иерархии выбрали, а саму иерархию включить забыли". if (hierarchical is not None and hierarchy_type is not None and - inner_text(hierarchical) == "false" and inner_text(hierarchy_type)): + inner_text(hierarchical) == "false" and inner_text(hierarchy_type) + and inner_text(hierarchy_type) != "HierarchyFoldersAndItems"): report_warn(f"10. HierarchyType='{inner_text(hierarchy_type)}' but Hierarchical=false") check10_issues += 1 @@ -1006,13 +1013,17 @@ if props_node is not None: # Empty Source source = find(props_node, "md:Source") + # Источник задают и наборами типов (cfg:CatalogObject) — в типовых + # так описана каждая четвёртая подписка. Реально пустой источник платформа отвергает: + # «ПодпискаНаСобытие.X - Источник событий должен быть задан», поэтому это ошибка. has_source = False if source is not None: source_types = find_all(source, "v8:Type") - if len(source_types) > 0: + source_type_sets = find_all(source, "v8:TypeSet") + if len(source_types) > 0 or len(source_type_sets) > 0: has_source = True if not has_source: - report_warn("10. EventSubscription: no Source types specified") + report_error("10. EventSubscription: источник событий не задан — платформа отвергнет загрузку") check10_issues += 1 # ScheduledJob: empty MethodName @@ -1061,13 +1072,17 @@ if props_node is not None: # DocumentJournal: RegisteredDocuments should not be empty if md_type == 'DocumentJournal': reg_docs = find(props_node, 'md:RegisteredDocuments') + # Регистрируемые документы платформа перечисляет как , + # так же их пишет meta-compile; форма с сохранена на случай иных выгрузок. + # Пустой состав платформа отвергает: «Для журнала не заданы регистрируемые документы». has_reg_docs = False if reg_docs is not None: items = find_all(reg_docs, 'v8:Type') - if len(items) > 0: + ref_items = find_all(reg_docs, 'xr:Item') + if len(items) > 0 or len(ref_items) > 0: has_reg_docs = True if not has_reg_docs: - report_warn('10. DocumentJournal: no RegisteredDocuments specified') + report_error('10. DocumentJournal: регистрируемые документы не заданы — платформа отвергнет загрузку') check10_issues += 1 # ChartOfAccounts: ExtDimensionTypes should be set if MaxExtDimensionCount > 0 @@ -1301,10 +1316,17 @@ if props_node is not None and md_type in ("EventSubscription", "ScheduledJob") a if os.path.exists(bsl_path): with open(bsl_path, "r", encoding="utf-8-sig") as f: bsl_content = f.read() - export_pattern = rf"(?mi)^\s*(Procedure|Function|Процедура|Функция)\s+{re.escape(proc_name)}\s*\(.*\)\s+(Export|Экспорт)" + # Список параметров переносится на следующие строки, и Экспорт оказывается не на + # строке с именем — в типовых так объявлена каждая обработчик-процедура с длинной + # сигнатурой. Отсюда (?s) для содержимого скобок и \s (а не пробел) перед Экспорт. + export_pattern = rf"(?smi)^[ ]*(Procedure|Function|Процедура|Функция)[ ]+{re.escape(proc_name)}[ ]*\([^)]*\)\s+(Export|Экспорт)" if not re.search(export_pattern, bsl_content): report_warn(f"13. {md_type}.{prop_label}: procedure '{proc_name}' not found as exported in CommonModule '{cm_name}'") check13_ok = False + elif os.path.exists(os.path.splitext(bsl_path)[0] + ".bin"): + # Модуль поставщика выгружен в двоичном виде (Module.bin) — текста нет by design, + # проверять нечего. Предупреждать здесь значило бы шуметь о норме. + pass else: report_warn(f"13. {md_type}.{prop_label}: BSL file not found ({bsl_path}), cannot verify procedure") diff --git a/tests/skills/cases/meta-validate/error-journal-empty-documents.json b/tests/skills/cases/meta-validate/error-journal-empty-documents.json new file mode 100644 index 000000000..8abb35b08 --- /dev/null +++ b/tests/skills/cases/meta-validate/error-journal-empty-documents.json @@ -0,0 +1,11 @@ +{ + "name": "Пустой состав журнала — платформа отвергает загрузку (Check 10)", + "setup": "fixture:journal-empty-documents", + "params": { + "objectPath": "DocumentJournals/ТестЖурнал.xml" + }, + "expectError": true, + "expect": { + "stdoutContains": "регистрируемые документы не заданы" + } +} diff --git a/tests/skills/cases/meta-validate/error-subscription-empty-source.json b/tests/skills/cases/meta-validate/error-subscription-empty-source.json new file mode 100644 index 000000000..cf6fffc7c --- /dev/null +++ b/tests/skills/cases/meta-validate/error-subscription-empty-source.json @@ -0,0 +1,11 @@ +{ + "name": "Пустой источник подписки — платформа отвергает загрузку (Check 10)", + "setup": "fixture:subscription-empty-source", + "params": { + "objectPath": "EventSubscriptions/ТестПодписка.xml" + }, + "expectError": true, + "expect": { + "stdoutContains": "источник событий не задан" + } +} diff --git a/tests/skills/cases/meta-validate/fixtures/catalog-empty-type-block/Catalogs/Товары.xml b/tests/skills/cases/meta-validate/fixtures/catalog-empty-type-block/Catalogs/Товары.xml new file mode 100644 index 000000000..affe5ab94 --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/catalog-empty-type-block/Catalogs/Товары.xml @@ -0,0 +1,131 @@ + + + + + + 663a8901-0032-4f18-bb1a-ce2174cbece4 + bb20df17-ebde-4175-9079-c789e3cbd195 + + + 7005f331-5c27-428e-a561-8b0f78595780 + 39d1fb1b-dfb7-414f-af63-39a637b60657 + + + ead16e67-7005-48d1-83cc-dc0b07edee35 + 0d389498-9b1a-4b69-80e1-43a73bd2138d + + + 9c0c6357-31b4-466e-ab3d-7238b5133945 + 791f1ff6-e378-4777-bfd5-09495fb526e0 + + + cdd35860-4d89-4091-8400-c46e656a66d1 + e6cb5b8e-44ae-41f5-b9d7-10bfdbf41740 + + + + Товары + + + ru + Товары + + + + false + HierarchyFoldersAndItems + false + 2 + true + true + + ToItems + 9 + 25 + String + Variable + WholeCatalog + false + true + AsDescription + + Auto + InDialog + false + BothWays + + Catalog.Товары.StandardAttribute.Description + Catalog.Товары.StandardAttribute.Code + + Begin + DontUse + Directly + Catalog.Товары.Form.ФормаЭлемента + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + + + + Служебный + + + ru + Служебный + + + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + +
ФормаЭлемента
+
+
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/catalog-empty-type-block/Configuration.xml b/tests/skills/cases/meta-validate/fixtures/catalog-empty-type-block/Configuration.xml new file mode 100644 index 000000000..8f2f14efb --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/catalog-empty-type-block/Configuration.xml @@ -0,0 +1,253 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + d0bb0360-4e09-4936-8e34-a3dc3851f67e + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + d9499468-cbbe-410c-b456-6f4a6ef7e4e7 + + + e3687481-0a87-462c-a166-9f34594f9bba + 7378dde3-6113-4bb6-93bf-b57ff8406e1f + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 7398f41d-8349-4e40-8925-88bf7b3590bd + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 93b8f975-cd8b-4e8c-ac14-ea95b90b19bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 7688edd2-4e1f-4261-acd8-732c551316eb + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 2202f59a-a576-43d5-9b90-52ad63efe348 + + + + ValRepro + + + ru + ValRepro + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Товары + Прочие + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/catalog-hierarchy-type-nondefault/Catalogs/Прочие.xml b/tests/skills/cases/meta-validate/fixtures/catalog-hierarchy-type-nondefault/Catalogs/Прочие.xml new file mode 100644 index 000000000..64ef52afb --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/catalog-hierarchy-type-nondefault/Catalogs/Прочие.xml @@ -0,0 +1,91 @@ + + + + + + 294c0e5d-9374-4a21-905c-49b95454a80f + cb354c13-f425-4008-a6aa-e4fa4a79c3e6 + + + 48858662-da32-4e7b-93cc-2a3c42558ce1 + e6120e99-ce40-4a65-89c1-78bbf7f6589d + + + b627793f-7476-4163-9112-ff819772694e + d8d4eeab-6991-4101-99aa-9d619904f491 + + + af6b1dc5-4250-4a45-88ff-e96e60c596c2 + 57cb3f07-9dd3-4c8c-a736-2b58453c2816 + + + f3a5679f-a7a7-4cb8-9373-4b0aeab44925 + 3a7df5e1-a09c-4380-ba2d-8e69be09a677 + + + + Прочие + + + ru + Прочие + + + + false + HierarchyOfItems + false + 2 + true + true + + ToItems + 9 + 25 + String + Variable + WholeCatalog + false + true + AsDescription + + Auto + InDialog + false + BothWays + + Catalog.Прочие.StandardAttribute.Description + Catalog.Прочие.StandardAttribute.Code + + Begin + DontUse + Directly + + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/catalog-hierarchy-type-nondefault/Configuration.xml b/tests/skills/cases/meta-validate/fixtures/catalog-hierarchy-type-nondefault/Configuration.xml new file mode 100644 index 000000000..8f2f14efb --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/catalog-hierarchy-type-nondefault/Configuration.xml @@ -0,0 +1,253 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + d0bb0360-4e09-4936-8e34-a3dc3851f67e + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + d9499468-cbbe-410c-b456-6f4a6ef7e4e7 + + + e3687481-0a87-462c-a166-9f34594f9bba + 7378dde3-6113-4bb6-93bf-b57ff8406e1f + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 7398f41d-8349-4e40-8925-88bf7b3590bd + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 93b8f975-cd8b-4e8c-ac14-ea95b90b19bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 7688edd2-4e1f-4261-acd8-732c551316eb + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 2202f59a-a576-43d5-9b90-52ad63efe348 + + + + ValRepro + + + ru + ValRepro + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Товары + Прочие + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/catalog-no-type-block/Catalogs/Товары.xml b/tests/skills/cases/meta-validate/fixtures/catalog-no-type-block/Catalogs/Товары.xml new file mode 100644 index 000000000..09ab361c7 --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/catalog-no-type-block/Catalogs/Товары.xml @@ -0,0 +1,131 @@ + + + + + + 663a8901-0032-4f18-bb1a-ce2174cbece4 + bb20df17-ebde-4175-9079-c789e3cbd195 + + + 7005f331-5c27-428e-a561-8b0f78595780 + 39d1fb1b-dfb7-414f-af63-39a637b60657 + + + ead16e67-7005-48d1-83cc-dc0b07edee35 + 0d389498-9b1a-4b69-80e1-43a73bd2138d + + + 9c0c6357-31b4-466e-ab3d-7238b5133945 + 791f1ff6-e378-4777-bfd5-09495fb526e0 + + + cdd35860-4d89-4091-8400-c46e656a66d1 + e6cb5b8e-44ae-41f5-b9d7-10bfdbf41740 + + + + Товары + + + ru + Товары + + + + false + HierarchyFoldersAndItems + false + 2 + true + true + + ToItems + 9 + 25 + String + Variable + WholeCatalog + false + true + AsDescription + + Auto + InDialog + false + BothWays + + Catalog.Товары.StandardAttribute.Description + Catalog.Товары.StandardAttribute.Code + + Begin + DontUse + Directly + Catalog.Товары.Form.ФормаЭлемента + + + + + + + + + + false + + + Managed + Use + + + + + + Use + Auto + DontUse + false + false + + + + + БезТипа + + + ru + Без типа + + + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + + +
ФормаЭлемента
+
+
+
\ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/catalog-no-type-block/Configuration.xml b/tests/skills/cases/meta-validate/fixtures/catalog-no-type-block/Configuration.xml new file mode 100644 index 000000000..8f2f14efb --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/catalog-no-type-block/Configuration.xml @@ -0,0 +1,253 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + d0bb0360-4e09-4936-8e34-a3dc3851f67e + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + d9499468-cbbe-410c-b456-6f4a6ef7e4e7 + + + e3687481-0a87-462c-a166-9f34594f9bba + 7378dde3-6113-4bb6-93bf-b57ff8406e1f + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 7398f41d-8349-4e40-8925-88bf7b3590bd + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 93b8f975-cd8b-4e8c-ac14-ea95b90b19bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 7688edd2-4e1f-4261-acd8-732c551316eb + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 2202f59a-a576-43d5-9b90-52ad63efe348 + + + + ValRepro + + + ru + ValRepro + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Товары + Прочие + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/integration-service/Configuration.xml b/tests/skills/cases/meta-validate/fixtures/integration-service/Configuration.xml new file mode 100644 index 000000000..8f2f14efb --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/integration-service/Configuration.xml @@ -0,0 +1,253 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + d0bb0360-4e09-4936-8e34-a3dc3851f67e + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + d9499468-cbbe-410c-b456-6f4a6ef7e4e7 + + + e3687481-0a87-462c-a166-9f34594f9bba + 7378dde3-6113-4bb6-93bf-b57ff8406e1f + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 7398f41d-8349-4e40-8925-88bf7b3590bd + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 93b8f975-cd8b-4e8c-ac14-ea95b90b19bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 7688edd2-4e1f-4261-acd8-732c551316eb + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 2202f59a-a576-43d5-9b90-52ad63efe348 + + + + ValRepro + + + ru + ValRepro + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Товары + Прочие + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/integration-service/IntegrationServices/ОбменСообщениями.xml b/tests/skills/cases/meta-validate/fixtures/integration-service/IntegrationServices/ОбменСообщениями.xml new file mode 100644 index 000000000..d959522fc --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/integration-service/IntegrationServices/ОбменСообщениями.xml @@ -0,0 +1,92 @@ + + + + + + 5362f1d1-1f56-4a61-a52e-6519a060293e + ad884943-3c3a-4073-ab34-ed12a0d67556 + + + + ОбменСообщениями + + + ru + Обмен сообщениями + + + + + + + + + + 71313d47-3c6e-464a-8776-f7eb0626fd6b + bb1ff475-725d-46cb-8cbc-9ff08970cccc + + + + input_from_SM_normal_priority + + + e1c::FreshBus::Main::MessageExchange_v2.input_from_SM_normal_priority + Receive + ОбработатьСообщениеОбычныйПриоритет + false + + + + + + 9d8dc419-a252-467d-a132-abba635ac42d + 0f7df7e6-a5a4-4c0a-8a44-b70676ce54a2 + + + + input_from_SM_high_priority + + + e1c::FreshBus::Main::MessageExchange_v2.input_from_SM_high_priority + Receive + ОбработатьСообщениеВысокийПриоритет + false + + + + + + fa26d8bb-bc63-4707-926d-64b8c10cd13d + 301c529a-896f-4da6-946e-a28690af5399 + + + + output_to_SM_high_priority + + + e1c::FreshBus::Main::MessageExchange_v2.output_to_SM_high_priority + Send + + true + + + + + + 2c5400bc-0503-4bf3-b2db-64d8e12338d1 + 9ab26516-751f-4ef4-8c9e-716d19bd35a0 + + + + output_to_SM_normal_priority + + + e1c::FreshBus::Main::MessageExchange_v2.output_to_SM_normal_priority + Send + + true + + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/journal-empty-documents/Configuration.xml b/tests/skills/cases/meta-validate/fixtures/journal-empty-documents/Configuration.xml new file mode 100644 index 000000000..6e91880aa --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/journal-empty-documents/Configuration.xml @@ -0,0 +1,255 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + d0bb0360-4e09-4936-8e34-a3dc3851f67e + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + d9499468-cbbe-410c-b456-6f4a6ef7e4e7 + + + e3687481-0a87-462c-a166-9f34594f9bba + 7378dde3-6113-4bb6-93bf-b57ff8406e1f + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 7398f41d-8349-4e40-8925-88bf7b3590bd + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 93b8f975-cd8b-4e8c-ac14-ea95b90b19bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 7688edd2-4e1f-4261-acd8-732c551316eb + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 2202f59a-a576-43d5-9b90-52ad63efe348 + + + + ValRepro + + + ru + ValRepro + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Товары + Прочие + ТестДок + ТестЖурнал + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/journal-empty-documents/DocumentJournals/ТестЖурнал.xml b/tests/skills/cases/meta-validate/fixtures/journal-empty-documents/DocumentJournals/ТестЖурнал.xml new file mode 100644 index 000000000..43765356f --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/journal-empty-documents/DocumentJournals/ТестЖурнал.xml @@ -0,0 +1,196 @@ + + + + + + d5e5ef76-6a80-43d8-8e38-50f3817885ca + 95209c42-dcf0-4b3d-bff6-0f1b6e0d3fa4 + + + 8d01ac37-7f20-489b-8b6d-8c13f571f1bf + d8d9b68d-61f4-46b9-a1ba-a239cfda7ded + + + cce45fe9-4c30-4224-9743-8ae2e2c3f26c + a6bb1cb7-287b-487c-bdb7-7031e9beea24 + + + + ТестЖурнал + + + ru + Тест журнал + + + + + + true + + false + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/journal-with-documents/Configuration.xml b/tests/skills/cases/meta-validate/fixtures/journal-with-documents/Configuration.xml new file mode 100644 index 000000000..6e91880aa --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/journal-with-documents/Configuration.xml @@ -0,0 +1,255 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + d0bb0360-4e09-4936-8e34-a3dc3851f67e + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + d9499468-cbbe-410c-b456-6f4a6ef7e4e7 + + + e3687481-0a87-462c-a166-9f34594f9bba + 7378dde3-6113-4bb6-93bf-b57ff8406e1f + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 7398f41d-8349-4e40-8925-88bf7b3590bd + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 93b8f975-cd8b-4e8c-ac14-ea95b90b19bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 7688edd2-4e1f-4261-acd8-732c551316eb + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 2202f59a-a576-43d5-9b90-52ad63efe348 + + + + ValRepro + + + ru + ValRepro + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Товары + Прочие + ТестДок + ТестЖурнал + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/journal-with-documents/DocumentJournals/ТестЖурнал.xml b/tests/skills/cases/meta-validate/fixtures/journal-with-documents/DocumentJournals/ТестЖурнал.xml new file mode 100644 index 000000000..24cc6032b --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/journal-with-documents/DocumentJournals/ТестЖурнал.xml @@ -0,0 +1,198 @@ + + + + + + d5e5ef76-6a80-43d8-8e38-50f3817885ca + 95209c42-dcf0-4b3d-bff6-0f1b6e0d3fa4 + + + 8d01ac37-7f20-489b-8b6d-8c13f571f1bf + d8d9b68d-61f4-46b9-a1ba-a239cfda7ded + + + cce45fe9-4c30-4224-9743-8ae2e2c3f26c + a6bb1cb7-287b-487c-bdb7-7031e9beea24 + + + + ТестЖурнал + + + ru + Тест журнал + + + + + + true + + Document.ТестДок + + false + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/CommonModules/ТестМодуль.xml b/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/CommonModules/ТестМодуль.xml new file mode 100644 index 000000000..b6f499c2c --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/CommonModules/ТестМодуль.xml @@ -0,0 +1,23 @@ + + + + + ТестМодуль + + + ru + Тест модуль + + + + false + false + true + false + false + false + false + DontUse + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/CommonModules/ТестМодуль/Ext/Module.bsl b/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/CommonModules/ТестМодуль/Ext/Module.bsl new file mode 100644 index 000000000..cc3221f10 --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/CommonModules/ТестМодуль/Ext/Module.bsl @@ -0,0 +1,2 @@ +Процедура Обработчик(Источник, Отказ) Экспорт +КонецПроцедуры diff --git a/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/Configuration.xml b/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/Configuration.xml new file mode 100644 index 000000000..67f9b4f57 --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/Configuration.xml @@ -0,0 +1,255 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + d0bb0360-4e09-4936-8e34-a3dc3851f67e + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + d9499468-cbbe-410c-b456-6f4a6ef7e4e7 + + + e3687481-0a87-462c-a166-9f34594f9bba + 7378dde3-6113-4bb6-93bf-b57ff8406e1f + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 7398f41d-8349-4e40-8925-88bf7b3590bd + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 93b8f975-cd8b-4e8c-ac14-ea95b90b19bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 7688edd2-4e1f-4261-acd8-732c551316eb + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 2202f59a-a576-43d5-9b90-52ad63efe348 + + + + ValRepro + + + ru + ValRepro + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Товары + Прочие + ТестПодписка + ТестМодуль + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/EventSubscriptions/ТестПодписка.xml b/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/EventSubscriptions/ТестПодписка.xml new file mode 100644 index 000000000..e03f2a924 --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/subscription-empty-source/EventSubscriptions/ТестПодписка.xml @@ -0,0 +1,18 @@ + + + + + ТестПодписка + + + ru + Тест подписка + + + + + BeforeWrite + CommonModule.ТестМодуль.Обработчик + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/CommonModules/ТестМодуль.xml b/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/CommonModules/ТестМодуль.xml new file mode 100644 index 000000000..b6f499c2c --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/CommonModules/ТестМодуль.xml @@ -0,0 +1,23 @@ + + + + + ТестМодуль + + + ru + Тест модуль + + + + false + false + true + false + false + false + false + DontUse + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/CommonModules/ТестМодуль/Ext/Module.bsl b/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/CommonModules/ТестМодуль/Ext/Module.bsl new file mode 100644 index 000000000..cc3221f10 --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/CommonModules/ТестМодуль/Ext/Module.bsl @@ -0,0 +1,2 @@ +Процедура Обработчик(Источник, Отказ) Экспорт +КонецПроцедуры diff --git a/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/Configuration.xml b/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/Configuration.xml new file mode 100644 index 000000000..67f9b4f57 --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/Configuration.xml @@ -0,0 +1,255 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + d0bb0360-4e09-4936-8e34-a3dc3851f67e + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + d9499468-cbbe-410c-b456-6f4a6ef7e4e7 + + + e3687481-0a87-462c-a166-9f34594f9bba + 7378dde3-6113-4bb6-93bf-b57ff8406e1f + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 7398f41d-8349-4e40-8925-88bf7b3590bd + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 93b8f975-cd8b-4e8c-ac14-ea95b90b19bd + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 7688edd2-4e1f-4261-acd8-732c551316eb + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 2202f59a-a576-43d5-9b90-52ad63efe348 + + + + ValRepro + + + ru + ValRepro + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Товары + Прочие + ТестПодписка + ТестМодуль + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/EventSubscriptions/ТестПодписка.xml b/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/EventSubscriptions/ТестПодписка.xml new file mode 100644 index 000000000..fd0676e88 --- /dev/null +++ b/tests/skills/cases/meta-validate/fixtures/subscription-typeset-source/EventSubscriptions/ТестПодписка.xml @@ -0,0 +1,20 @@ + + + + + ТестПодписка + + + ru + Тест подписка + + + + + cfg:CatalogObject + + BeforeWrite + CommonModule.ТестМодуль.Обработчик + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-validate/valid-empty-type-block.json b/tests/skills/cases/meta-validate/valid-empty-type-block.json new file mode 100644 index 000000000..47895e976 --- /dev/null +++ b/tests/skills/cases/meta-validate/valid-empty-type-block.json @@ -0,0 +1,15 @@ +{ + "name": "Пустой блок типа — тип «Произвольный», не ошибка (Check 7)", + "setup": "fixture:catalog-empty-type-block", + "params": { + "objectPath": "Catalogs/Товары.xml" + }, + "noSnapshot": "фикстура статична, meta-validate только читает и печатает — эталон зафиксировал бы саму фикстуру; проверяется stdout", + "skipPlatformVerify": "фикстура — один объект без каталога форм; полная загрузка такого дерева невозможна", + "expect": { + "stdoutNotContains": [ + "[ERROR]", + "Type block has no" + ] + } +} diff --git a/tests/skills/cases/meta-validate/valid-integration-service.json b/tests/skills/cases/meta-validate/valid-integration-service.json new file mode 100644 index 000000000..7306bf39c --- /dev/null +++ b/tests/skills/cases/meta-validate/valid-integration-service.json @@ -0,0 +1,15 @@ +{ + "name": "Сервис интеграции — известный вид метаданных (Check 1)", + "setup": "fixture:integration-service", + "params": { + "objectPath": "IntegrationServices/ОбменСообщениями.xml" + }, + "noSnapshot": "фикстура статична, meta-validate только читает и печатает — эталон зафиксировал бы саму фикстуру; проверяется stdout", + "skipPlatformVerify": "фикстура — один объект из типовой конфигурации без её остальной части; полная загрузка такого дерева невозможна", + "expect": { + "stdoutNotContains": [ + "[ERROR]", + "Unrecognized metadata type" + ] + } +} diff --git a/tests/skills/cases/meta-validate/valid-journal-with-documents.json b/tests/skills/cases/meta-validate/valid-journal-with-documents.json new file mode 100644 index 000000000..ffe3aad45 --- /dev/null +++ b/tests/skills/cases/meta-validate/valid-journal-with-documents.json @@ -0,0 +1,15 @@ +{ + "name": "Состав журнала перечислен через xr:Item — не повод для предупреждения (Check 10)", + "setup": "fixture:journal-with-documents", + "params": { + "objectPath": "DocumentJournals/ТестЖурнал.xml" + }, + "noSnapshot": "фикстура статична, meta-validate только читает и печатает — эталон зафиксировал бы саму фикстуру; проверяется stdout", + "skipPlatformVerify": "фикстура — журнал без документов, на которые он ссылается; полная загрузка такого дерева невозможна", + "expect": { + "stdoutNotContains": [ + "[ERROR]", + "регистрируемые документы не заданы" + ] + } +} diff --git a/tests/skills/cases/meta-validate/valid-subscription-typeset-source.json b/tests/skills/cases/meta-validate/valid-subscription-typeset-source.json new file mode 100644 index 000000000..14dde606f --- /dev/null +++ b/tests/skills/cases/meta-validate/valid-subscription-typeset-source.json @@ -0,0 +1,15 @@ +{ + "name": "Источник подписки задан набором типов — не повод для предупреждения (Check 10)", + "setup": "fixture:subscription-typeset-source", + "params": { + "objectPath": "EventSubscriptions/ТестПодписка.xml" + }, + "noSnapshot": "фикстура статична, meta-validate только читает и печатает — эталон зафиксировал бы саму фикстуру; проверяется stdout", + "skipPlatformVerify": "фикстура — подписка с общим модулем без остальной конфигурации; полная загрузка такого дерева невозможна", + "expect": { + "stdoutNotContains": [ + "[ERROR]", + "источник событий не задан" + ] + } +} diff --git a/tests/skills/cases/meta-validate/warn-hierarchy-type-nondefault.json b/tests/skills/cases/meta-validate/warn-hierarchy-type-nondefault.json new file mode 100644 index 000000000..a110108e7 --- /dev/null +++ b/tests/skills/cases/meta-validate/warn-hierarchy-type-nondefault.json @@ -0,0 +1,13 @@ +{ + "name": "Недефолтный тип иерархии при выключенной иерархии — предупреждение (Check 10)", + "setup": "fixture:catalog-hierarchy-type-nondefault", + "params": { + "objectPath": "Catalogs/Прочие.xml" + }, + "noSnapshot": "фикстура статична, meta-validate только читает и печатает — эталон зафиксировал бы саму фикстуру; проверяется stdout", + "skipPlatformVerify": "фикстура — один объект без остальной конфигурации; полная загрузка такого дерева невозможна", + "expect": { + "stdoutContains": "HierarchyType='HierarchyOfItems'", + "stdoutNotContains": "[ERROR]" + } +} diff --git a/tests/skills/cases/meta-validate/warn-no-type-block.json b/tests/skills/cases/meta-validate/warn-no-type-block.json new file mode 100644 index 000000000..a7e41ba42 --- /dev/null +++ b/tests/skills/cases/meta-validate/warn-no-type-block.json @@ -0,0 +1,13 @@ +{ + "name": "Блок типа отсутствует — платформа подставит Строка(10), это предупреждение (Check 7)", + "setup": "fixture:catalog-no-type-block", + "params": { + "objectPath": "Catalogs/Товары.xml" + }, + "noSnapshot": "фикстура статична, meta-validate только читает и печатает — эталон зафиксировал бы саму фикстуру; проверяется stdout", + "skipPlatformVerify": "фикстура — один объект без каталога форм; полная загрузка такого дерева невозможна", + "expect": { + "stdoutContains": "блок Type не задан", + "stdoutNotContains": "[ERROR]" + } +}