mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-15 02:14:57 +03:00
feat(web-test): обработка ТестовыеОшибки + bsl-модули (M1 Step 3)
Покрытие matrix #6 — errors balloon/messages/modal (10-validation, fetchErrorStack Path 2): - ОбщиеФункции.ПоказатьСообщение() → Сообщить("Тестовое сообщение") - ОбщиеФункции.ВызватьТестовоеИсключение() → ВызватьИсключение - DataProcessor.ТестовыеОшибки + ФормаОбработки с двумя кнопками, каждая делает клиент→сервер вызов соответствующей процедуры - Регистрация в Configuration + Subsystem.Администрирование Runner расширен step-типом writeFile — записывает произвольный текст (обычно Module.bsl) в workDir. Нет навыка для модификации bsl-кода модулей, и плодить отдельный навык под одну задачу избыточно. Платформенная верификация: 36 шагов, 21.2s. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -153,6 +153,29 @@ export const steps = [
|
||||
args: { '-JsonPath': '{inputFile}', '-OutputDir': '{workDir}' },
|
||||
validate: { script: 'meta-validate/scripts/meta-validate', flag: '-ObjectPath', path: 'CommonModules/ОбщиеФункции' },
|
||||
},
|
||||
{
|
||||
name: 'writeFile: ОбщиеФункции Module.bsl',
|
||||
writeFile: 'CommonModules/ОбщиеФункции/Ext/Module.bsl',
|
||||
content: `Процедура ПоказатьСообщение() Экспорт
|
||||
\tСообщить("Тестовое сообщение");
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВызватьТестовоеИсключение() Экспорт
|
||||
\tВызватьИсключение "Тестовое исключение";
|
||||
КонецПроцедуры
|
||||
`,
|
||||
},
|
||||
|
||||
// Обработка ТестовыеОшибки — для тестов errors balloon/messages/modal (10-validation)
|
||||
{
|
||||
name: 'meta-compile: Обработка ТестовыеОшибки',
|
||||
script: 'meta-compile/scripts/meta-compile',
|
||||
input: {
|
||||
type: 'DataProcessor', name: 'ТестовыеОшибки',
|
||||
},
|
||||
args: { '-JsonPath': '{inputFile}', '-OutputDir': '{workDir}' },
|
||||
validate: { script: 'meta-validate/scripts/meta-validate', flag: '-ObjectPath', path: 'DataProcessors/ТестовыеОшибки' },
|
||||
},
|
||||
|
||||
// Отчёт ОстаткиТоваров
|
||||
{
|
||||
@@ -348,6 +371,57 @@ export const steps = [
|
||||
validate: { script: 'form-validate/scripts/form-validate', flag: '-FormPath', path: 'Documents/ПриходнаяНакладная/Forms/ФормаСписка/Ext/Form.xml' },
|
||||
},
|
||||
|
||||
// Форма обработки ТестовыеОшибки — кнопки вызова процедур ОбщиеФункции
|
||||
{
|
||||
name: 'form-add: Форма обработки ТестовыеОшибки',
|
||||
script: 'form-add/scripts/form-add',
|
||||
args: { '-ObjectPath': '{workDir}/DataProcessors/ТестовыеОшибки.xml', '-FormName': 'ФормаОбработки' },
|
||||
},
|
||||
{
|
||||
name: 'form-compile: Форма обработки ТестовыеОшибки',
|
||||
script: 'form-compile/scripts/form-compile',
|
||||
input: {
|
||||
title: 'Тестовые ошибки',
|
||||
attributes: [
|
||||
{ name: 'Объект', type: 'DataProcessorObject.ТестовыеОшибки', main: true },
|
||||
],
|
||||
elements: [
|
||||
{ button: 'ПоказатьСообщение', command: 'ПоказатьСообщение', title: 'Показать сообщение' },
|
||||
{ button: 'ВызватьИсключение', command: 'ВызватьИсключениеКоманда', title: 'Вызвать исключение' },
|
||||
],
|
||||
commands: [
|
||||
{ name: 'ПоказатьСообщение', action: 'ПоказатьСообщение' },
|
||||
{ name: 'ВызватьИсключениеКоманда', action: 'ВызватьИсключениеКоманда' },
|
||||
],
|
||||
},
|
||||
args: { '-JsonPath': '{inputFile}', '-OutputPath': '{workDir}/DataProcessors/ТестовыеОшибки/Forms/ФормаОбработки/Ext/Form.xml' },
|
||||
validate: { script: 'form-validate/scripts/form-validate', flag: '-FormPath', path: 'DataProcessors/ТестовыеОшибки/Forms/ФормаОбработки/Ext/Form.xml' },
|
||||
},
|
||||
{
|
||||
name: 'writeFile: ТестовыеОшибки form Module.bsl',
|
||||
writeFile: 'DataProcessors/ТестовыеОшибки/Forms/ФормаОбработки/Ext/Form/Module.bsl',
|
||||
content: `&НаКлиенте
|
||||
Процедура ПоказатьСообщение(Команда)
|
||||
\tПоказатьСообщениеНаСервере();
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ПоказатьСообщениеНаСервере()
|
||||
\tОбщиеФункции.ПоказатьСообщение();
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВызватьИсключениеКоманда(Команда)
|
||||
\tВызватьИсключениеНаСервере();
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ВызватьИсключениеНаСервере()
|
||||
\tОбщиеФункции.ВызватьТестовоеИсключение();
|
||||
КонецПроцедуры
|
||||
`,
|
||||
},
|
||||
|
||||
// ── 4. DCS for report ──
|
||||
{
|
||||
name: 'skd-compile: Схема отчёта ОстаткиТоваров',
|
||||
@@ -397,6 +471,7 @@ export const steps = [
|
||||
content: [
|
||||
'InformationRegister.КурсыВалют',
|
||||
'Constant.ОсновнаяВалюта',
|
||||
'DataProcessor.ТестовыеОшибки',
|
||||
],
|
||||
},
|
||||
args: { '-DefinitionFile': '{inputFile}', '-OutputDir': '{workDir}' },
|
||||
@@ -434,6 +509,7 @@ export const steps = [
|
||||
{ operation: 'add-childObject', value: 'InformationRegister.КурсыВалют' },
|
||||
{ operation: 'add-childObject', value: 'Constant.ОсновнаяВалюта' },
|
||||
{ operation: 'add-childObject', value: 'CommonModule.ОбщиеФункции' },
|
||||
{ operation: 'add-childObject', value: 'DataProcessor.ТестовыеОшибки' },
|
||||
{ operation: 'add-childObject', value: 'Report.ОстаткиТоваров' },
|
||||
{ operation: 'add-childObject', value: 'Subsystem.Склад' },
|
||||
{ operation: 'add-childObject', value: 'Subsystem.Администрирование' },
|
||||
|
||||
@@ -929,6 +929,22 @@ async function runIntegrationTest(test, opts) {
|
||||
const step = test.steps[i];
|
||||
const stepT0 = performance.now();
|
||||
|
||||
// writeFile step: записать содержимое (обычно .bsl модуля) в workDir
|
||||
if (step.writeFile) {
|
||||
try {
|
||||
const target = replacePlaceholders(step.writeFile);
|
||||
const abs = target.includes(':') || target.startsWith('/') ? target : join(workDir, target);
|
||||
mkdirSync(dirname(abs), { recursive: true });
|
||||
writeFileSync(abs, step.content ?? '', 'utf8');
|
||||
const stepElapsed = ((performance.now() - stepT0) / 1000).toFixed(1);
|
||||
stepResults.push({ name: step.name, passed: true, elapsed: `${stepElapsed}s` });
|
||||
} catch (e) {
|
||||
stepResults.push({ name: step.name, passed: false, error: `writeFile failed: ${e.message}` });
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// Write input if provided
|
||||
let inputFile = null;
|
||||
if (step.input) {
|
||||
|
||||
Reference in New Issue
Block a user