Files
cc-1c-skills/tests/skills/integration/platform-dump-modes.test.mjs
T
Nick ShirokovandClaude Opus 5.5 f98e7e9e81 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
2026-09-24 18:08:20 +03:00

80 lines
3.5 KiB
JavaScript

// platform-dump-modes.test.mjs — db-dump-xml Full / Changes / UpdateInfo on a real base.
// Guards the artifact postcondition (non-empty output dir) against false-fail in the
// less-common dump modes: each step succeeding proves the mode produces real output.
// 1cv8-only: ibcmd config export does not support Mode UpdateInfo.
export const name = 'Режимы выгрузки конфигурации (Full/Changes/UpdateInfo)';
export const setup = 'none';
export const requiresPlatform = true;
export const steps = [
// ── 1. Build + load a minimal base ──
{
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' },
},
{
name: 'db-update: обновление БД',
script: 'db-update/scripts/db-update',
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb' },
},
// ── 2. Full dump (baseline) → postcondition must pass on a real export ──
{
name: 'db-dump-xml: Full',
script: 'db-dump-xml/scripts/db-dump-xml',
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb', '-ConfigDir': '{workDir}/dumpA', '-Mode': 'Full' },
},
// ── 3. Changes dump into the same dir → must not false-fail ──
{
name: 'db-dump-xml: Changes',
script: 'db-dump-xml/scripts/db-dump-xml',
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb', '-ConfigDir': '{workDir}/dumpA', '-Mode': 'Changes' },
},
// ── 3b. Changes into a FRESH dir → no ConfigDumpInfo yet, so the first dump must be full ──
{
name: 'db-dump-xml: Changes в пустой каталог (первая выгрузка)',
script: 'db-dump-xml/scripts/db-dump-xml',
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb', '-ConfigDir': '{workDir}/dumpC', '-Mode': 'Changes' },
},
{
name: 'assert: первая выгрузка записала ConfigDumpInfo.xml',
assertContains: '{workDir}/dumpC/ConfigDumpInfo.xml',
expect: 'ConfigDumpInfo',
},
// ── 4. UpdateInfo into a FRESH dir → proves the mode alone yields non-empty output ──
{
name: 'db-dump-xml: UpdateInfo',
script: 'db-dump-xml/scripts/db-dump-xml',
args: { '-V8Path': '{v8path}', '-InfoBasePath': '{workDir}/testdb', '-ConfigDir': '{workDir}/dumpB', '-Mode': 'UpdateInfo' },
},
{
name: 'assert: UpdateInfo записал ConfigDumpInfo.xml',
assertContains: '{workDir}/dumpB/ConfigDumpInfo.xml',
expect: 'ConfigDumpInfo',
},
];