From 312d058412263676b64440a11a41e395fe07097b Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 28 Mar 2026 13:08:53 +0300 Subject: [PATCH] feat: add meta-validate, meta-info tests and broken fixtures - meta-validate: 3 cases (valid catalog, bad root element, file not found) - meta-info: 2 cases (catalog overview with stdoutContains, not found error) - fixtures/broken/catalog-bad-root for negative validate tests - All 5 skill archetypes now covered: compile, init, edit, validate, info 17 tests, all passing. Co-Authored-By: Claude Opus 4.6 (1M context) --- tests/skills/cases/meta-info/_skill.json | 11 ++++++++++ .../cases/meta-info/catalog-overview.json | 22 +++++++++++++++++++ .../cases/meta-info/error-not-found.json | 5 +++++ tests/skills/cases/meta-validate/_skill.json | 11 ++++++++++ .../cases/meta-validate/error-bad-root.json | 6 +++++ .../meta-validate/error-file-not-found.json | 5 +++++ .../cases/meta-validate/valid-catalog.json | 12 ++++++++++ .../broken/catalog-bad-root/Catalogs/Bad.xml | 5 +++++ 8 files changed, 77 insertions(+) create mode 100644 tests/skills/cases/meta-info/_skill.json create mode 100644 tests/skills/cases/meta-info/catalog-overview.json create mode 100644 tests/skills/cases/meta-info/error-not-found.json create mode 100644 tests/skills/cases/meta-validate/_skill.json create mode 100644 tests/skills/cases/meta-validate/error-bad-root.json create mode 100644 tests/skills/cases/meta-validate/error-file-not-found.json create mode 100644 tests/skills/cases/meta-validate/valid-catalog.json create mode 100644 tests/skills/fixtures/broken/catalog-bad-root/Catalogs/Bad.xml diff --git a/tests/skills/cases/meta-info/_skill.json b/tests/skills/cases/meta-info/_skill.json new file mode 100644 index 00000000..c29e6450 --- /dev/null +++ b/tests/skills/cases/meta-info/_skill.json @@ -0,0 +1,11 @@ +{ + "script": "meta-info/scripts/meta-info", + "setup": "none", + "args": [ + { "flag": "-ObjectPath", "from": "workPath", "field": "objectPath" } + ], + "snapshot": { + "root": "workDir", + "normalizeUuids": false + } +} diff --git a/tests/skills/cases/meta-info/catalog-overview.json b/tests/skills/cases/meta-info/catalog-overview.json new file mode 100644 index 00000000..0d26a2c8 --- /dev/null +++ b/tests/skills/cases/meta-info/catalog-overview.json @@ -0,0 +1,22 @@ +{ + "name": "Обзор справочника с реквизитами", + "setup": "empty-config", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Catalog", + "name": "Номенклатура", + "attributes": [ + { "name": "Артикул", "type": "String", "length": 25 }, + { "name": "Цена", "type": "Number", "length": 15, "precision": 2 } + ] + }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + } + ], + "params": { "objectPath": "Catalogs/Номенклатура" }, + "expect": { + "stdoutContains": "Номенклатура" + } +} diff --git a/tests/skills/cases/meta-info/error-not-found.json b/tests/skills/cases/meta-info/error-not-found.json new file mode 100644 index 00000000..841e832e --- /dev/null +++ b/tests/skills/cases/meta-info/error-not-found.json @@ -0,0 +1,5 @@ +{ + "name": "Ошибка: объект не найден", + "params": { "objectPath": "Catalogs/НесуществующийОбъект" }, + "expectError": true +} diff --git a/tests/skills/cases/meta-validate/_skill.json b/tests/skills/cases/meta-validate/_skill.json new file mode 100644 index 00000000..5c797dc6 --- /dev/null +++ b/tests/skills/cases/meta-validate/_skill.json @@ -0,0 +1,11 @@ +{ + "script": "meta-validate/scripts/meta-validate", + "setup": "none", + "args": [ + { "flag": "-ObjectPath", "from": "workPath", "field": "objectPath" } + ], + "snapshot": { + "root": "workDir", + "normalizeUuids": false + } +} diff --git a/tests/skills/cases/meta-validate/error-bad-root.json b/tests/skills/cases/meta-validate/error-bad-root.json new file mode 100644 index 00000000..dd0c797f --- /dev/null +++ b/tests/skills/cases/meta-validate/error-bad-root.json @@ -0,0 +1,6 @@ +{ + "name": "Валидатор находит ошибку: неверный корневой элемент", + "setup": "fixture:broken/catalog-bad-root", + "params": { "objectPath": "Catalogs/Bad.xml" }, + "expectError": true +} diff --git a/tests/skills/cases/meta-validate/error-file-not-found.json b/tests/skills/cases/meta-validate/error-file-not-found.json new file mode 100644 index 00000000..b277542d --- /dev/null +++ b/tests/skills/cases/meta-validate/error-file-not-found.json @@ -0,0 +1,5 @@ +{ + "name": "Валидатор: файл не найден", + "params": { "objectPath": "Catalogs/Несуществующий.xml" }, + "expectError": true +} diff --git a/tests/skills/cases/meta-validate/valid-catalog.json b/tests/skills/cases/meta-validate/valid-catalog.json new file mode 100644 index 00000000..ec6ecbb0 --- /dev/null +++ b/tests/skills/cases/meta-validate/valid-catalog.json @@ -0,0 +1,12 @@ +{ + "name": "Корректный справочник проходит валидацию", + "setup": "empty-config", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "Catalog", "name": "Тест" }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + } + ], + "params": { "objectPath": "Catalogs/Тест" } +} diff --git a/tests/skills/fixtures/broken/catalog-bad-root/Catalogs/Bad.xml b/tests/skills/fixtures/broken/catalog-bad-root/Catalogs/Bad.xml new file mode 100644 index 00000000..f9044e4b --- /dev/null +++ b/tests/skills/fixtures/broken/catalog-bad-root/Catalogs/Bad.xml @@ -0,0 +1,5 @@ + + + + +