mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-25 11:45:51 +03:00
fix(db-dump-xml): Changes без тихой полной перевыгрузки, инкремент в ibcmd
- -update без -force: при другой версии формата — отказ с подсказкой про -Mode Full, а не молчаливая перезапись всего дерева в новом формате. - Первая выгрузка режимом по умолчанию: в каталог без выгрузки (пусто, только .git/README) — полностью; выгрузка без ConfigDumpInfo.xml — ошибка. - ibcmd: Changes через --sync; Full в непустой каталог — через временный каталог и копирование поверх, как пишет конфигуратор; ошибка копирования даёт код 1. UpdateInfo с -AllExtensions отвергается, а не выгружает всё. - py-порт печатает вывод ibcmd, как PS. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ANXwbMUhuRFSCsq2RgmTTm
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
ce7238792e
commit
f98e7e9e81
@@ -0,0 +1,101 @@
|
||||
// platform-dump-sync.test.mjs — db-dump-xml Changes/Full поверх существующей выгрузки, оба движка.
|
||||
// Changes должен быть инкрементом от ConfigDumpInfo.xml (1cv8 -update, ibcmd --sync), а Full в
|
||||
// непустой каталог — писать поверх и не трогать лишнее, как конфигуратор (ibcmd сам в непустой
|
||||
// каталог не выгружает). Изменение доставляется в базу загрузкой частями и проверяется маркером.
|
||||
|
||||
export const name = 'Выгрузка поверх существующей: Changes и Full (оба движка)';
|
||||
export const setup = 'none';
|
||||
export const requiresPlatform = true;
|
||||
export const engines = ['1cv8', 'ibcmd'];
|
||||
|
||||
export const steps = [
|
||||
// ── 1. Минимальная база ──
|
||||
{
|
||||
name: 'cf-init: пустая конфигурация',
|
||||
script: 'cf-init/scripts/cf-init',
|
||||
args: { '-Name': 'ВыгрузкаПоверх', '-OutputDir': '{workDir}/config' },
|
||||
},
|
||||
{
|
||||
name: 'meta-compile: Справочник Товары',
|
||||
script: 'meta-compile/scripts/meta-compile',
|
||||
input: { type: 'Catalog', name: 'Товары', codeLength: 9, descriptionLength: 100 },
|
||||
args: { '-JsonPath': '{inputFile}', '-OutputDir': '{workDir}/config' },
|
||||
},
|
||||
{
|
||||
name: 'cf-edit: регистрация справочника',
|
||||
script: 'cf-edit/scripts/cf-edit',
|
||||
input: [{ operation: 'add-childObject', value: 'Catalog.Товары' }],
|
||||
args: { '-ConfigPath': '{workDir}/config', '-DefinitionFile': '{inputFile}' },
|
||||
},
|
||||
{
|
||||
name: 'db-create: файловая ИБ',
|
||||
script: 'db-create/scripts/db-create',
|
||||
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb' },
|
||||
},
|
||||
{
|
||||
name: 'db-load-xml: загрузка конфигурации (Full)',
|
||||
script: 'db-load-xml/scripts/db-load-xml',
|
||||
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb', '-ConfigDir': '{workDir}/config' },
|
||||
},
|
||||
|
||||
// ── 2. Первая выгрузка режимом по умолчанию (Changes) в несуществующий каталог → полная ──
|
||||
{
|
||||
name: 'db-dump-xml: первая выгрузка без -Mode',
|
||||
script: 'db-dump-xml/scripts/db-dump-xml',
|
||||
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb', '-ConfigDir': '{workDir}/dump' },
|
||||
},
|
||||
{
|
||||
name: 'assert: выгрузка содержит ConfigDumpInfo.xml',
|
||||
assertContains: '{workDir}/dump/ConfigDumpInfo.xml',
|
||||
expect: 'ConfigDumpInfo',
|
||||
},
|
||||
|
||||
// ── 3. Изменение в базе → Changes поверх выгрузки ──
|
||||
{
|
||||
name: 'editFile: маркер в Comment справочника',
|
||||
editFile: '{workDir}/config/Catalogs/Товары.xml',
|
||||
replace: '<Comment/>',
|
||||
with: '<Comment>syncMARK</Comment>',
|
||||
},
|
||||
{
|
||||
name: 'db-load-xml: частичная загрузка Товары',
|
||||
script: 'db-load-xml/scripts/db-load-xml',
|
||||
args: {
|
||||
'-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb',
|
||||
'-ConfigDir': '{workDir}/config', '-Files': 'Catalogs/Товары.xml',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'db-dump-xml: Changes поверх выгрузки',
|
||||
script: 'db-dump-xml/scripts/db-dump-xml',
|
||||
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb', '-ConfigDir': '{workDir}/dump', '-Mode': 'Changes' },
|
||||
},
|
||||
{
|
||||
name: 'assert: Changes выгрузил изменение',
|
||||
assertContains: '{workDir}/dump/Catalogs/Товары.xml',
|
||||
expect: 'syncMARK',
|
||||
},
|
||||
|
||||
// ── 4. Full в непустой каталог: пишет поверх, лишнее остаётся ──
|
||||
{
|
||||
name: 'meta-compile: посторонний объект в каталоге выгрузки',
|
||||
script: 'meta-compile/scripts/meta-compile',
|
||||
input: { type: 'Catalog', name: 'Посторонний' },
|
||||
args: { '-JsonPath': '{inputFile}', '-OutputDir': '{workDir}/dump' },
|
||||
},
|
||||
{
|
||||
name: 'db-dump-xml: Full в непустой каталог',
|
||||
script: 'db-dump-xml/scripts/db-dump-xml',
|
||||
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb', '-ConfigDir': '{workDir}/dump', '-Mode': 'Full' },
|
||||
},
|
||||
{
|
||||
name: 'assert: Full выгрузил конфигурацию',
|
||||
assertContains: '{workDir}/dump/Catalogs/Товары.xml',
|
||||
expect: 'syncMARK',
|
||||
},
|
||||
{
|
||||
name: 'assert: посторонний объект не удалён',
|
||||
assertContains: '{workDir}/dump/Catalogs/Посторонний.xml',
|
||||
expect: 'Посторонний',
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user