diff --git a/packagedef b/packagedef index f4e59c54..41e45578 100644 --- a/packagedef +++ b/packagedef @@ -126,7 +126,7 @@ .ЗависитОт("cmdline", "1.0.0") .ЗависитОт("fluent", "0.6.1") .ЗависитОт("fs", "1.2.0") - .ЗависитОт("ibcmdrunner", "0.2.5") + .ЗависитОт("ibcmdrunner", "0.3.0") .ЗависитОт("json", "1.1.1") .ЗависитОт("logos", "1.7.0") .ЗависитОт("ParserFileV8i", "0.0.5") diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217.os" index bf23e46f..9a1654d7 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217.os" @@ -1,6 +1,7 @@ /////////////////////////////////////////////////////////////////////////////////////////////////// // -// Выполнение команды/действия в 1С:Предприятие в режиме тонкого/толстого клиента с передачей запускаемых обработок и параметров +// Выполнение команды/действия в 1С:Предприятие в режиме тонкого/толстого клиента с передачей +// запускаемых обработок и параметров // // TODO добавить фичи для проверки команды // @@ -11,13 +12,16 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner +#Использовать fs -Перем Лог; +#Область ОписаниеПеременных -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +Перем Лог; // Экземпляер логгера +Перем ПутьОбработкиДляЗапуска; // Путь внешней обработки 1С для запуска в предприятии + +#КонецОбласти + +#Область ОбработчикиСобытий // Регистрация команды и ее аргументов/ключей // @@ -55,6 +59,9 @@ | Значение ""2"" означает выполнение запуска с предупреждением. | Любое другое значение эквивалентно отсутствию файла."); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibsrv", + "Запуск команды с использованием утилиты ibsrv"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры // ЗарегистрироватьКоманду @@ -65,24 +72,37 @@ // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений // ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) // +// Возвращаемое значение: +// Число - Код возврата команды +// Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); + + ПутьОбработкиДляЗапуска = ПутьОбработкиДляЗапуска(ПараметрыКоманды["--execute"]); + + ПараметрыАвтономногоСервера = ОбщиеМетоды.НовыеПараметрыАвтономногоСервера(); + + Действие = Новый Действие(ЭтотОбъект, "ЗапуститьВРежимеПредприятия"); + Возврат ОбщиеМетоды.ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера); + +КонецФункции + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ЗапуститьВРежимеПредприятия(ПараметрыКоманды) Экспорт // TODO отрефакторить получение ЗапускатьТолстыйКлиент ЗапускатьТолстыйКлиент = ОбщиеМетоды.УказанПараметрТолстыйКлиент(ПараметрыКоманды["--ordinaryapp"], Лог); ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; МенеджерКонфигуратора = Новый МенеджерКонфигуратора; - - ПутьОбработки1С = ПараметрыКоманды["--execute"]; - ПутьОбработки1С = Заменить_runnerRoot_на_КаталогVanessaRunner(ПутьОбработки1С); - ПутьОбработки1С = ОбщиеМетоды.ПолныйПуть(ПутьОбработки1С); + МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); ОжидатьЗавершения = Не ПараметрыКоманды["--no-wait"]; - МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды); - ПутьКФайлуСтатусаВыполнения = ПараметрыКоманды["--exitCodePath"]; КомандаЗапуска = КомандаЗапуска(ПараметрыКоманды["--command"], ПутьКФайлуСтатусаВыполнения); ПутьЛогаВыполнения = ПараметрыКоманды["--online-file"]; @@ -102,7 +122,7 @@ Попытка МенеджерКонфигуратора.ЗапуститьВРежимеПредприятияСПроверкойВыполнения( ДопСообщения, - КомандаЗапуска, ПутьОбработки1С, + КомандаЗапуска, ПутьОбработкиДляЗапуска, ЗапускатьТолстыйКлиент, ДополнительныеПараметры, ОжидатьЗавершения, ПутьЛогаВыполнения, @@ -115,8 +135,13 @@ МенеджерКонфигуратора.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции // ВыполнитьКоманду +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + Функция КомандаЗапуска(Знач ПараметрКомандаЗапуска, Знач ПутьКФайлуСтатусаВыполнения) КомандыЗапуска = Новый Массив; @@ -148,3 +173,23 @@ Функция Заменить_runnerRoot_на_КаталогVanessaRunner(Знач ИсходнаяСтрока) Возврат СтрЗаменить(ИсходнаяСтрока, "$runnerRoot", ОбщиеМетоды.КаталогПроекта()); КонецФункции + +Функция ПутьОбработкиДляЗапуска(Знач ПутьОбработки1С) + + Если ПустаяСтрока(ПутьОбработки1С) Тогда + Возврат ""; + КонецЕсли; + + ПутьОбработки1С = Заменить_runnerRoot_на_КаталогVanessaRunner(ПутьОбработки1С); + ПутьОбработки1С = ОбщиеМетоды.ПолныйПуть(ПутьОбработки1С); + + Если ФС.ФайлСуществует(ПутьОбработки1С) Тогда + Возврат ПутьОбработки1С; + Иначе + ВызватьИсключение СтрШаблон("Файл внешней обработки ""%1"" не существует на диске!", + ПутьОбработки1С); + КонецЕсли; + +КонецФункции + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200.os" index f5d0e92f..15d27b5a 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200.os" @@ -9,13 +9,13 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner +#Область ОписаниеПеременных Перем Лог; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий // Регистрация команды и ее аргументов/ключей // @@ -39,6 +39,9 @@ Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-user", "Пользователь хранилища"); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-pwd", "Пароль"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibsrv", + "Запуск команды с использованием утилиты ibsrv"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры // ЗарегистрироватьКоманду @@ -51,7 +54,21 @@ // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Лог = ДополнительныеПараметры.Лог; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); + + ПараметрыАвтономногоСервера = ОбщиеМетоды.НовыеПараметрыАвтономногоСервера(); + ПараметрыАвтономногоСервера.ИспользоватьПрямоеСоединение = Истина; + + Действие = Новый Действие(ЭтотОбъект, "ЗапуститьКонфигуратор"); + Возврат ОбщиеМетоды.ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера); + +КонецФункции // ВыполнитьКоманду + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ЗапуститьКонфигуратор(ПараметрыКоманды) Экспорт ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; @@ -87,4 +104,6 @@ МенеджерКонфигуратора.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; -КонецФункции // ВыполнитьКоманду +КонецФункции + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index ac159c28..4427b48b 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -10,16 +10,16 @@ #Область ОписаниеПеременных Перем Лог; // Экземпляр логгера -Перем КорневойПутьПроекта; +Перем КорневойПутьПроекта; // Путь к корневой папке проекта // Параметры команды -Перем ДанныеПодключения; -Перем ПараметрыХранилища; -Перем РежимыРеструктуризации; -Перем РежимРазработчика; -Перем ПутьКФайлуКонфигурации; -Перем ПутьКИсходникам; -Перем ПутьКФайлуВыгрузки; +Перем ДанныеПодключения; // Данные подключения к ИБ +Перем ПараметрыХранилища; // Параметры подключения к хранилищу +Перем РежимыРеструктуризации; // Доступные режимы реструктуризации +Перем РежимРазработчика; // Режим разработчика +Перем ПутьКФайлуКонфигурации; // Путь к файлу конфигурации +Перем ПутьКИсходникам; // Путь к исходным файлам кофнигурации +Перем ПутьКФайлуВыгрузки; // Путь к файлу выгрузки информационной базы #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index d9f9bfb9..fd1216bf 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -6,20 +6,22 @@ // oscript-app-template (C) EvilBeaver // /////////////////////////////////////////////////////////////////// + #Использовать gitrunner + #Область ОписаниеПеременных Перем Лог; // Экземпляр логгера -Перем КорневойПутьПроекта; - -Перем ДанныеПодключения; -Перем ПараметрыХранилища; -Перем РежимыРеструктуризации; -Перем РежимРазработчика; -Перем ПутьКИсходникам; -Перем ПутьКФайлуВыгрузки; -Перем ИнкрементальнаяЗагрузкаGit; -Перем СниматьСПоддержки; +Перем КорневойПутьПроекта; // Путь к корневой папке проекта + +Перем ДанныеПодключения; // Данные подключения к ИБ +Перем ПараметрыХранилища; // Параметры подключения к хранилищу +Перем РежимыРеструктуризации; // Доступные режимы реструктуризации +Перем РежимРазработчика; // Режим разработчика +Перем ПутьКИсходникам; // Путь к исходным файлам кофнигурации +Перем ПутьКФайлуВыгрузки; // Путь к файлу выгрузки информационной базы +Перем ИнкрементальнаяЗагрузкаGit; // Использовать инкрементальную загрузку из репозитория git +Перем СниматьСПоддержки; // Снимать конфигурацию с поддержки перед загрузкой #КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" index 3ee241d9..b5f29a09 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" @@ -61,7 +61,7 @@ МенеджерСборки.Деструктор(); ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); КонецПопытки; - Лог.Информация("Сборка расширения из исходников завершена."); + Лог.Информация("Сборка расширения %1 из исходников завершена.", ИмяРасширения); МенеджерСборки.Деструктор(); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os" index b7c05dc4..289117ce 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os" @@ -9,21 +9,21 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner +#Область ОписаниеПеременных -Перем Лог; -Перем МенеджерКонфигуратора; -Перем МенеджерВерсий; +Перем Лог; // Экземпляр логгера +Перем МенеджерКонфигуратора; // Экземпляр менеджера работы с конфигурацией +Перем МенеджерВерсий; // Эксземпляр менеджера работы с версиями // Параметры команды -Перем ИмяФайлаПоставки; -Перем КаталогИсходников; -Перем НомерСборки; -Перем ЗагружатьВТекущую; +Перем ИмяФайлаПоставки; // Путь к файлу конфигурации поставки +Перем КаталогИсходников; // Каталог с исходниками конфигурации +Перем НомерСборки; // Текущий номер сборки +Перем ЗагружатьВТекущую; // Флаг загрузки в текущую информационную базу -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -41,7 +41,8 @@ Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--src", "Каталог с исходниками конфигурации"); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--build-number", "Номер сборки"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--current", "Флаг загрузки в указанную базу или -с"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-c", "Флаг загрузки в указанную базу, краткая форма от --current"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-c", + "Флаг загрузки в указанную базу, краткая форма от --current"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -53,6 +54,9 @@ // ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений // ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно) // +// Возвращаемое значение: +// Число - Код возврата команды. +// Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт Лог = ДополнительныеПараметры.Лог; @@ -86,6 +90,10 @@ КонецФункции // ВыполнитьКоманду +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + Процедура СоздатьФайлПоставки() Если ЗначениеЗаполнено(КаталогИсходников) Тогда @@ -119,3 +127,5 @@ КонецЦикла; КонецПроцедуры + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_xUnitFor1C.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_xUnitFor1C.os" index edc744dd..bb33aed6 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_xUnitFor1C.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_xUnitFor1C.os" @@ -12,17 +12,18 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner #Использовать asserts #Использовать fs -Перем Лог; +#Область ОписаниеПеременных + +Перем Лог; // Экземпляр логгера Перем МенеджерКонфигуратора; Перем ВанессаАДД; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -94,6 +95,9 @@ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--no-shutdown", "Не завершать работу 1С:Предприятие после выполнения тестов"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibsrv", + "Запуск команды с использованием утилиты ibsrv"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры @@ -106,11 +110,20 @@ // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Попытка - Лог = ДополнительныеПараметры.Лог; - Исключение - Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); - КонецПопытки; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); + + ПараметрыАвтономногоСервера = ОбщиеМетоды.НовыеПараметрыАвтономногоСервера(); + + Действие = Новый Действие(ЭтотОбъект, "ВыполнитьТестирование"); + Возврат ОбщиеМетоды.ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера); + +КонецФункции + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ВыполнитьТестирование(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт ЗапускатьТолстыйКлиент = ОбщиеМетоды.УказанПараметрТолстыйКлиент(ПараметрыКоманды["--ordinaryapp"], Лог); ОжидатьЗавершения = Не ПараметрыКоманды["--no-wait"]; @@ -161,6 +174,10 @@ Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; КонецФункции +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + // Выполняем запуск тестов для xunit // // Параметры: @@ -361,3 +378,5 @@ ВызватьИсключение СообщениеОшибки; КонецЕсли; КонецПроцедуры + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217.os" index 85ae6202..012dfbe0 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217.os" @@ -9,17 +9,18 @@ // /////////////////////////////////////////////////////////////////////////////////////////////////// -#Использовать logos -#Использовать v8runner #Использовать asserts #Использовать json -Перем Лог; +#Область ОписаниеПеременных + +Перем Лог; // Экземпляр логгера Перем МенеджерКонфигуратора; Перем ВанессаАДД; -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Прикладной интерфейс +#КонецОбласти + +#Область ОбработчикиСобытий Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт @@ -57,6 +58,9 @@ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--no-wait", "Не ожидать завершения запущенной команды/действия"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibsrv", + "Запуск команды с использованием утилиты ibsrv"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры @@ -69,12 +73,21 @@ // Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт - Попытка - Лог = ДополнительныеПараметры.Лог; - Исключение - Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); - КонецПопытки; + Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры); + + ПараметрыАвтономногоСервера = ОбщиеМетоды.НовыеПараметрыАвтономногоСервера(); + + Действие = Новый Действие(ЭтотОбъект, "ТестированиеПоведения"); + Возврат ОбщиеМетоды.ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера); +КонецФункции + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +Функция ТестированиеПоведения(Знач ПараметрыКоманды) Экспорт + ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; ЗапускатьТолстыйКлиент = ОбщиеМетоды.УказанПараметрТолстыйКлиент(ПараметрыКоманды["--ordinaryapp"], Лог); @@ -113,8 +126,13 @@ МенеджерКонфигуратора.Деструктор(); Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; + КонецФункции +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + // Выполняем запуск тестов для vannessa // // Параметры: @@ -217,3 +235,5 @@ Лог.Информация("Тестирование поведения завершено"); КонецПроцедуры + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" index 79eee776..7aa231fb 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" @@ -43,6 +43,13 @@ КонецПроцедуры +// Создать новую файловую базу из файла выгрузки или пустую. +// +// Параметры: +// КаталогБазы - Строка - Каталог информационной базы +// ПутьКШаблону - Строка - Путь к файлу выгрузки конфигурации. +// ИмяБазыВСписке - Строка - Имя базы для показа в списке баз стартера 1С. +// Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону = "", Знач ИмяБазыВСписке = "") Экспорт ОбщиеМетоды.ОбеспечитьПустойКаталог(Новый Файл(КаталогБазы)); @@ -55,6 +62,14 @@ КонецПроцедуры +// Создать информационную базу из исходников +// +// Параметры: +// ВходнойКаталог - Строка - Каталог с исходниками конфигурации +// СписокФайловДляЗагрузки - Строка, Массив из Строка - Файлы для инкрементальной загрузки. +// СниматьСПоддержки - Булево - Снимать конфигурацию с поддержки перед загрузкой. +// ОбновитьФайлВерсий - Булево - Обновлять файл версий метаданных. +// Процедура СобратьИзИсходниковТекущуюКонфигурацию(Знач ВходнойКаталог, Знач СписокФайловДляЗагрузки = "", СниматьСПоддержки = Ложь, ОбновитьФайлВерсий = Истина) Экспорт @@ -88,7 +103,13 @@ // ПутьКВыгружаемомуФайлуСДанными - Строка - Путь к результату - выгружаемому файлу с данными (*.dt) // Процедура ВыгрузитьИнфобазуВФайл(Знач ПутьКВыгружаемомуФайлуСДанными) Экспорт + + Лог.Информация("Запускаю выгрузку информационной базы в файл"); + УправлениеИБ.ВыгрузитьДанныеИБ(ПутьКВыгружаемомуФайлуСДанными); + + Лог.Информация("Выгрузка в файл завершена."); + КонецПроцедуры // Загружает информационную базу из файла @@ -98,59 +119,101 @@ // КоличествоЗаданий - Число - Количество заданий (потоков) загрузки из файла с данными // Процедура ЗагрузитьИнфобазуИзФайла(Знач ПутьКЗагружаемомуФайлуСДанными, Знач КоличествоЗаданий = 0) Экспорт + + Лог.Информация("Запускаю загрузку информационной базы из файла"); + УправлениеИБ.ЗагрузитьДанныеИБ(ПутьКЗагружаемомуФайлуСДанными); + + Лог.Информация("Загрузка из файла завершена."); + КонецПроцедуры +// Загружает файл конфигурации в текущую базу данных. +// +// Параметры: +// ПутьКФайлу - Строка - Путь к файлу *.cf +// СниматьСПоддержки - Булево - Перед загрузкой снять текущую конфигурацию ИБ с поддержки. +// Процедура ЗагрузитьФайлКонфигурации(Знач ПутьКФайлу, Знач СниматьСПоддержки = Истина) Экспорт ИмяРасширения = ""; + Лог.Информация("Загружаем файл конфигурации %1", ПутьКФайлу); + Если СниматьСПоддержки Тогда УправлениеИБ.СнятьСПоддержки(); КонецЕсли; УправлениеИБ.ЗагрузитьКонфигурацию(ПутьКФайлу, ИмяРасширения); + Лог.Информация("Загрузка конфигурации из файла cf успешно завершена!"); + КонецПроцедуры +// Обновить конфигурацию базы данных +// +// Параметры: +// ДинамическоеОбновление - Булево - Выполнять динамическое обновление. +// Процедура ОбновитьКонфигурациюБазыДанных(ДинамическоеОбновление = Ложь) Экспорт Если ДинамическоеОбновление Тогда - РежимДинамическогоОбновления = "disable"; - Иначе РежимДинамическогоОбновления = "auto"; + Иначе + РежимДинамическогоОбновления = "disable"; КонецЕсли; - ЗавершатьСеансы = "force"; + ЗавершатьСеансы = "force"; ИмяРасширения = ""; + + Лог.Информация("Запускаю обновление конфигурации БД"); + УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения, РежимДинамическогоОбновления, ЗавершатьСеансы); Лог.Информация("Обновление конфигурации БД завершено."); КонецПроцедуры -// ОбновитьРасширение +// Обновить конфигурацию базы данных для расширения // // Параметры: -// ИмяРасширения - Строка - <описание параметра> +// ИмяРасширения - Строка - имя расширения // Процедура ОбновитьРасширение(Знач ИмяРасширения) Экспорт РежимДинамическогоОбновления = "disable"; ЗавершатьСеансы = "force"; + Лог.Информация("Запускаю обновление конфигурации БД для расширения %1", ИмяРасширения); + УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения, РежимДинамическогоОбновления, ЗавершатьСеансы); + + Лог.Информация("Обновление конфигурации БД для расширения %1 завершено.", ИмяРасширения); + КонецПроцедуры +// Вывести в консоль список всех расширений информационной базы. +// Процедура ПоказатьСписокВсехРасширенийКонфигурации() Экспорт + СписокРасширений = УправлениеИБ.СписокРасширений(); Лог.Информация("Список расширений конфигурации:%2%1", СписокРасширений, Символы.ПС); + КонецПроцедуры +// Выгружает файл конфигурации из ИБ +// +// Параметры: +// ПутьКНужномуФайлуКонфигурации - Строка - Путь к выгружаемому файлу конфигурации (*.cf) +// Процедура ВыгрузитьКонфигурациюВФайл(Знач ПутьКНужномуФайлуКонфигурации) Экспорт + Лог.Информация("Запускаю выгрузку конфигурации в файл"); + УправлениеИБ.ВыгрузитьКонфигурациюВФайл(ПутьКНужномуФайлуКонфигурации); + Лог.Информация("Выгрузка в файл завершена."); + КонецПроцедуры // Разбор текущей конфигураций на исходники штатной выгрузкой 1С @@ -159,7 +222,8 @@ // КаталогВыгрузки - Строка - Путь к каталогу выгрузки // ФайлВерсии - Строка - Путь к файлу версии // ТолькоИзмененные - Булево - Выгружать только измененные файлы для ускорения выгрузки -// ИспользоватьПереименования - Булево - Переименовывать файлы в удобные имена и раскладывать по папкам согласно иерархии метаданных +// ИспользоватьПереименования - Булево - Переименовывать файлы в удобные имена и раскладывать +// по папкам согласно иерархии метаданных // Процедура РазобратьНаИсходникиТекущуюКонфигурацию(КаталогВыгрузки, Знач ФайлВерсии = "", Знач ТолькоИзмененные = Истина, @@ -209,7 +273,8 @@ // ФайлКонфигурации - Строка - Путь к источнику - выгружаемому файлу конфигурации (*.cf) // ВыходнойКаталог - Строка - Путь к каталогу выгрузки // ФайлВерсии - Строка - Путь к файлу версии -// ИспользоватьПереименования - Булево - Переименовывать файлы в удобные имена и раскладывать по папкам согласно иерархии метаданных +// ИспользоватьПереименования - Булево - Переименовывать файлы в удобные имена и раскладывать +// по папкам согласно иерархии метаданных // Процедура ВыгрузитьКонфигурациюВИсходники(Знач ФайлКонфигурации, Знач ВыходнойКаталог, Знач ФайлВерсии = "", Знач ИспользоватьПереименования = Ложь) Экспорт @@ -219,14 +284,25 @@ КонецПроцедуры +// Собирает из исходников расширение с указанным имененм +// +// Параметры: +// Каталог - Строка - путь каталогу с иходниками расширения +// ИмяРасширения - Строка - Имя расширения +// Обновить - Булево - Признак обновления расширения в базе, имеет смысл только на пустой базе или первой загрузке. +// Процедура СобратьИзИсходниковРасширение(Каталог, ИмяРасширения, Обновить = Ложь) Экспорт + Лог.Информация("Выполняю сборку/загрузку расширения %1 из каталога %2", ИмяРасширения, Каталог); + УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(Каталог, ИмяРасширения); Если Обновить Тогда УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения); КонецЕсли; + Лог.Информация("Сборка/загрузка расширения %1 завершена", ИмяРасширения); + КонецПроцедуры // Выгружает файл расширения из ИБ @@ -305,7 +381,8 @@ КонецЕсли; Возврат ИзмененияКонфигурации; -КонецФункции +КонецФункции + #КонецОбласти #Область ОбработчикиСобытий diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibsrv.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibsrv.os" new file mode 100644 index 00000000..be64c5ab --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibsrv.os" @@ -0,0 +1,274 @@ + +#Использовать ibcmdrunner + +// BSLLS:LatinAndCyrillicSymbolInWord-off + +#Область ОписаниеПеременных + +Перем Лог; // Содержит объект лога +Перем ВременныйКаталогДанныхСервера; // Временный каталог данных автономного сервера +Перем МенеджерАС; // Вложенный объект упрапвления автономным сервером +Перем ПортHttpДоступа; // Основной сетевой порт, обслуживаемый сервером. + +Перем ИспользоватьПрямоеСоединение; // Режим использования прямого соединения +Перем ПортПрямогоСоединения; // Основной сетевой порт установки прямого соединения с сервером + +Перем ИспользоватьОтладку; // Режим использования отладки +Перем ПортОтладки; // Основной порт отладки + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +// Выполняет действие запуска платформы 1С через автономный сервер +// +// Параметры: +// Действие - Действие - Метод выполняющий запуск платформы 1С. +// ПараметрыКоманды - Соответствие - Параметры команды +// +// Возвращаемое значение: +// Число - Код возврата команды запуска. +// +Функция ВыполнитьДействие(Действие, ПараметрыКоманды) Экспорт + + ЗапуститьМенеджерАС(); + Лог.Информация("Запущен ibsrv на основном порту %1", ПортHttpДоступа); + + УстановитьДанныеПодключения(ПараметрыКоманды); + + Попытка + Результат = Действие.Выполнить(ПараметрыКоманды); + Исключение + МенеджерАС.Остановить(); + Лог.Информация("Процесс ibsrv остановлен"); + ВызватьИсключение; + КонецПопытки; + + МенеджерАС.Остановить(); + Лог.Информация("Процесс ibsrv остановлен"); + + Возврат Результат; + +КонецФункции + +// Включает режим прямого соединения с автономным сервером +// +Процедура ВключитьПрямоеСоединение() Экспорт + ИспользоватьПрямоеСоединение = Истина; +КонецПроцедуры + +// Включает режим отладки на автономном сервере +// +Процедура ВключитьОтладку() Экспорт + ИспользоватьОтладку = Истина; +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПриСозданииОбъекта(ПараметрыКоманды) + + Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); + ВременныйКаталогДанныхСервера = ВременныеФайлы.СоздатьКаталог(); + + МенеджерАС = Новый УправлениеАС(); + МенеджерАС.УстановитьКаталогДанных(ВременныйКаталогДанныхСервера); + + ПортHttpДоступа = ПортHttpДоступа(); + + ИспользоватьПрямоеСоединение = Ложь; + ПортПрямогоСоединения = ПортПрямогоСоединения(); + + ИспользоватьОтладку = Ложь; + ПортОтладки = ПортОтладки(); + + ДанныеПодключения = ОбщиеМетоды.ДанныеПодключения(ПараметрыКоманды); + + ВерсияПлатформы = ДанныеПодключения.ВерсияПлатформы; + Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда + Если ЗначениеЗаполнено(ДанныеПодключения.РазрядностьПлатформы) Тогда + Разрядность = ОбщиеМетоды.РазрядностьПлатформы(ДанныеПодключения.РазрядностьПлатформы); + Лог.Отладка("Разрядность платформы 1С указана %1", ДанныеПодключения.РазрядностьПлатформы); + Иначе + Разрядность = ОбщиеМетоды.РазрядностьПлатформы("x64x86"); + Лог.Отладка("Разрядность платформы 1С не указана, используем значение x64x86"); + КонецЕсли; + + МенеджерАС.УстановитьВерсиюПлатформы(ВерсияПлатформы, Разрядность); + КонецЕсли; + + Лог.Информация("Используется ibsrv платформы %1", МенеджерАС.Версия()); + + КаталогБазы = ОбщиеМетоды.КаталогФайловойИБ(ДанныеПодключения.ПутьБазы); + МенеджерАС.УстановитьПараметрыФайловойИБ(КаталогБазы); + +КонецПроцедуры + +Процедура Деструктор() Экспорт + + Попытка + ВременныеФайлы.УдалитьФайл(ВременныйКаталогДанныхСервера); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Лог.Отладка(КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + КонецПопытки; + + ВременныйКаталогДанныхСервера = ""; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция СтрокаПрямогоСоединения() + Возврат СтрШаблон("/S localhost:%1/DefAlias", XMLСтрока(ПортПрямогоСоединения)); +КонецФункции + +Функция СтрокаВебСоединения() + Возврат СтрШаблон("/WS http://localhost:%1/", XMLСтрока(ПортHttpДоступа)); +КонецФункции + +Процедура УстановитьДанныеПодключения(ПараметрыКоманды) + + ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"]; + + Если ИспользоватьПрямоеСоединение Тогда + СтрокаСоединения = СтрокаПрямогоСоединения(); + Иначе + СтрокаСоединения = СтрокаВебСоединения(); + КонецЕсли; + + НовыеДанныеПодключения = Новый Структура(ДанныеПодключения); + НовыеДанныеПодключения.ПутьБазы = СтрокаСоединения; + НовыеДанныеПодключения.СтрокаПодключения = СтрокаСоединения; + Лог.Отладка("Установлена строка подключения к ИБ: %1", СтрокаСоединения); + + ПараметрыКоманды["ДанныеПодключения"] = НовыеДанныеПодключения; + +КонецПроцедуры + +Процедура ЗапуститьМенеджерАС() + + СдвигПортов = ДоступныйСдвигПортов(); + ПортHttpДоступа = ПортHttpДоступа(СдвигПортов); + ПортПрямогоСоединения = ПортПрямогоСоединения(СдвигПортов); + ПортОтладки = ПортОтладки(СдвигПортов); + + СформироватьФайлКонфигурацииАС(СдвигПортов); + + МенеджерАС.Запустить(); + +КонецПроцедуры + +Функция ДоступныйСдвигПортов() + + ДиапазонПортов = 0; // Стандартный сдвиг + КоличествоПопыток = 8; + КоличествоДиапазонов = 32; + + Генератор = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах()); + + Результат = Ложь; + ТекущаяПопытка = 0; + Пока Не Результат И ТекущаяПопытка < КоличествоПопыток Цикл + + СдвигПортов = СдвигПортовДляДиапазона(ДиапазонПортов); + ПортПроверки = ПортHttpДоступа(СдвигПортов); + Если ПортДоступен(ПортПроверки) Тогда + Лог.Отладка("Порт %1 доступен для запуска ibsrv", ПортПроверки); + Результат = Истина; + Прервать; + Иначе + Лог.Отладка("Порт %1 недоступен для запуска ibsrv!", ПортПроверки); + КонецЕсли; + + ТекущаяПопытка = ТекущаяПопытка + 1; + ДиапазонПортов = Генератор.СлучайноеЧисло(1, КоличествоДиапазонов); + + КонецЦикла; + + Если Результат Тогда + Возврат СдвигПортов; + Иначе + ВызватьИсключение "Не найден доступный порт для запуска автономного сервера!"; + КонецЕсли; + +КонецФункции + +Функция СдвигПортовДляДиапазона(ДиапазонПортов) + Возврат 100 * ДиапазонПортов; // BSLLS:MagicNumber-off +КонецФункции + +Функция ПортПрямогоСоединения(СдвигПортов = 0) + Возврат 8341 + СдвигПортов; // BSLLS:MagicNumber-off +КонецФункции + +Функция ПортHttpДоступа(СдвигПортов = 0) + Возврат 8314 + СдвигПортов; // BSLLS:MagicNumber-off +КонецФункции + +Функция ПортОтладки(СдвигПортов = 0) + Возврат 8350 + СдвигПортов; // BSLLS:MagicNumber-off +КонецФункции + +Функция МинимальныйПортПодключения(СдвигПортов = 0) + Возврат 8360 + СдвигПортов; // BSLLS:MagicNumber-off +КонецФункции + +Функция МаксимальныйПортПодключения(СдвигПортов = 0) + Возврат 8391 + СдвигПортов; // BSLLS:MagicNumber-off +КонецФункции + +Функция ПортДоступен(ПортПроверки) + + TCPСервер = Новый TCPСервер(ПортПроверки); + Попытка + TCPСервер.Запустить(); + Исключение + Возврат Ложь; + КонецПопытки; + + TCPСервер.Остановить(); + Возврат Истина; + +КонецФункции + +Процедура СформироватьФайлКонфигурацииАС(СдвигПортов) + + СетевойИнтерфейс = "any"; + ИмяИБ = "DefAlias"; + РазрешитьВыдачуЛицензий = Истина; + РазрешитьРегламентныеЗадания = Ложь; + + КонфигурационныйФайлАС = Новый КонфигурационныйФайлАС; + КонфигурационныйФайлАС.ПараметрыСервера(СетевойИнтерфейс, ПортHttpДоступа); + КонфигурационныйФайлАС.ПараметрыИБ(ИмяИБ, РазрешитьВыдачуЛицензий, РазрешитьРегламентныеЗадания); + + ИспользоватьШлюзПрямогоДоступа = ИспользоватьПрямоеСоединение; + ИспользоватьШлюзHTTP = Неопределено; + ИспользоватьШлюзSSH = Ложь; + ИспользоватьРасширеннуюФункциональностьКонфигуратора = Неопределено; + КонфигурационныйФайлАС.ПараметрыФункциональностиСервера( + ИспользоватьШлюзПрямогоДоступа, ИспользоватьШлюзHTTP, + ИспользоватьШлюзSSH, ИспользоватьРасширеннуюФункциональностьКонфигуратора); + + Если ИспользоватьПрямоеСоединение Тогда + КонфигурационныйФайлАС.ПараметрыШлюзаПрямогоДоступа(ПортПрямогоСоединения, + МинимальныйПортПодключения(СдвигПортов), + МаксимальныйПортПодключения(СдвигПортов)); + КонецЕсли; + + Если ИспользоватьОтладку Тогда + КонфигурационныйФайлАС.ПараметрыОтладкиСервера("http", ПортОтладки, СетевойИнтерфейс); + КонецЕсли; + + ФайлКонфигурации = ОбъединитьПути(ВременныйКаталогДанныхСервера, "ibsrv.yaml"); + КонфигурационныйФайлАС.СоздатьКонфигурационныйФайл(ФайлКонфигурации); + + МенеджерАС.УстановитьКонфигурационныйФайл(ФайлКонфигурации); + +КонецПроцедуры + +#КонецОбласти diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" index a2665ddf..3390345f 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" @@ -202,6 +202,13 @@ КонецПроцедуры +// Создать новую файловую базу из файла выгрузки или пустую. +// +// Параметры: +// КаталогБазы - Строка - Каталог информационной базы +// ПутьКШаблону - Строка - Путь к файлу выгрузки конфигурации. +// ИмяБазыВСписке - Строка - Имя базы для показа в списке баз стартера 1С. +// Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону = "", Знач ИмяБазыВСписке = "") Экспорт Попытка @@ -288,7 +295,6 @@ // ИмяРасширения - Строка - <описание параметра> // Процедура ОбновитьРасширение(Знач ИмяРасширения) Экспорт - ТекущаяПроцедура = "ОбновитьРасширение"; Лог.Информация("Запускаю обновление расширения %1", ИмяРасширения); @@ -300,7 +306,7 @@ КонецЕсли; Исключение Лог.Ошибка(УправлениеКонфигуратором.ВыводКоманды()); - ВызватьИсключение ТекущаяПроцедура; + ВызватьИсключение; КонецПопытки; Лог.Информация("Обновление расширения завершено."); @@ -1591,26 +1597,24 @@ Лог.Отладка(Приложение); Попытка - ЗапуститьПроцесс1С(Приложение, ПутьЛогаВыполненияСценариев ); - Результат = ВыводПредприятия(ПутьДамп); - - ПроверитьЛогПредприятияНаИзвестныеОшибки(Результат); - - ПоказатьВыводПредприятия(Результат, ДопСообщения.ПоказыватьДополнительноЛогПредприятия); - + ЗапуститьПроцесс1С(Приложение, ПутьЛогаВыполненияСценариев); Исключение - ОписаниеОшибки = ОписаниеОшибки(); + ТекстВывода = ВыводПредприятия(ПутьДамп); + ПоказатьВыводПредприятия(ТекстВывода, Истина); + + ВызватьИсключение; + КонецПопытки; - Результат = ВыводПредприятия(ПутьДамп); - ПоказатьВыводПредприятия(Результат, Истина); + Результат = ВыводПредприятия(ПутьДамп); - Лог.Ошибка(ОписаниеОшибки); - ВызватьИсключение ТекущаяПроцедура; - КонецПопытки; + ПроверитьЛогПредприятияНаИзвестныеОшибки(Результат); + + ПоказатьВыводПредприятия(Результат, ДопСообщения.ПоказыватьДополнительноЛогПредприятия); Лог.Информация("Выполнение команды/действия в режиме 1С:Предприятие завершено."); Возврат Результат; + КонецФункции Процедура ЗапуститьПроцесс1С(Знач СтрокаЗапуска, Знач ПутьКФайлуЛога) @@ -1766,7 +1770,7 @@ НормализованныйЛог = НРег(ЛогПредприятия); Для каждого Ошибка Из ИзвестныеНормализованныеОшибки() Цикл Если Найти(НормализованныйЛог, Ошибка) > 0 Тогда - ВызватьИсключение Ошибка; + ВызватьИсключение ЛогПредприятия; КонецЕсли; КонецЦикла; diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index c1de0fb5..6d179ef2 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -200,11 +200,10 @@ ЗначениеПараметраФайлНастроек = ЗначенияПараметров["--settings"]; Если ЗначениеЗаполнено(ЗначениеПараметраФайлНастроек) Тогда ФайлОбщихНастроек = Новый Файл(ОбщиеМетоды.ПолныйПуть(ЗначениеПараметраФайлНастроек)); - Ожидаем.Что(ФайлОбщихНастроек.Существует(), - СтрШаблон("Ожидаем, что указанный в --settings <%1> файл по пути <%2> существует, а его нет!", - ЗначениеПараметраФайлНастроек, - ФайлОбщихНастроек.ПолноеИмя) - ).ЭтоИстина(); + Сообщение = СтрШаблон("Ожидаем, что указанный в --settings <%1> файл по пути <%2> существует, а его нет!", + ЗначениеПараметраФайлНастроек, + ФайлОбщихНастроек.ПолноеИмя); + Ожидаем.Что(ФайлОбщихНастроек.Существует(), Сообщение).ЭтоИстина(); КонецЕсли; НастройкиИзФайла = ОбщиеМетоды.ПрочитатьНастройкиФайлJSON(ТекущийКаталогПроекта, @@ -275,7 +274,7 @@ // специально не через ВременныеФайлы для возможности сохранения файла после завершения ПутьФайлаВывода = ПолучитьИмяВременногоФайла(".log"); // BSLLS:MissingTemporaryFileDeletion-off ФайлВывода = Новый Файл(ПутьФайлаВывода); - ПутьФайлаВывода = ОбъединитьПути(ФайлВывода.Путь, "vrunner-" + ФайлВывода.Имя); // BSLLS:MissingTemporaryFileDeletion-off + ПутьФайлаВывода = ОбъединитьПути(ФайлВывода.Путь, "vrunner-" + ФайлВывода.Имя); Иначе Возврат; КонецЕсли; @@ -397,8 +396,8 @@ Значение = КлючЗначение.Значение; Если ЗначениеЗаполнено(Значение) И РегулярноеВыражение.Совпадает(Значение) Тогда ВызватьИсключение СтрШаблон( - "Запрещено использование слешей как последних символов в параметрах.%1" + - " Это может привести к проблемам при запуске в командной строке.%1%1 Ключ %2 = %3", + "Запрещено использование слэшей как последних символов в параметрах.%1" + + " Это может привести к проблемам при запуске в командной строке.%1%1 Ключ %2 = %3", Символы.ПС, КлючЗначение.Ключ, Значение); КонецЕсли; КонецЦикла; diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" index f0c4d8c7..db30f0c0 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" @@ -277,7 +277,6 @@ КонецФункции // ПолныйПуть() - Функция ЭтоОтносительныйПуть(Знач Путь) // BSLLS:IfElseDuplicatedCodeBlock-off @@ -623,6 +622,88 @@ Возврат НайденныйФайл; КонецФункции +// Выполняет запуск команды приложения с дополнительным запуском ibsrv или напрямую. +// +// Параметры: +// ПараметрыКоманды - Соотвествие - Параметры команды +// Действие - Действие - Метод выполняющий запуск платформы 1С. +// ПараметрыАвтономногоСервера - см. НовыеПараметрыАвтономногоСервера +// +// Возвращаемое значение: +// Число - Код возврата команды запуска. +// +Функция ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера) Экспорт + + Если ИспользоватьIbsrv(ПараметрыКоманды) Тогда + Возврат ВыполнитьЧерезIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера); + Иначе + Возврат Действие.Выполнить(ПараметрыКоманды); + КонецЕсли; + +КонецФункции + +Функция ИспользоватьIbSrv(ПараметрыКоманды) + + ИспользоватьIbsrv = ПараметрыКоманды["--ibsrv"]; + ОжидатьЗавершения = НЕ (ПараметрыКоманды["--no-wait"] = Истина); + ДанныеПодключения = ДанныеПодключения(ПараметрыКоманды); + СтрокаПодключенияИБ = ДанныеПодключения.ПутьБазы; + + Если Не ИспользоватьIbsrv Тогда + Лог.Отладка("Не указан флаг использования ibsrv"); + Возврат Ложь; + + ИначеЕсли Не ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключенияИБ) Тогда + Лог.Предупреждение("Серверные ИБ не поддерживаются ibsrv!"); + Возврат Ложь; + + ИначеЕсли Не ОжидатьЗавершения Тогда + Лог.Предупреждение("Запуск без ожидания не поддерживается при работе с ibsrv!"); + Возврат Ложь; + + Иначе + Лог.Отладка("Используем ibsrv."); + Возврат Истина; + + КонецЕсли; + +КонецФункции + +Функция НовыеПараметрыАвтономногоСервера() Экспорт + + ПараметрыАС = Новый Структура; + ПараметрыАС.Вставить("ИспользоватьПрямоеСоединение", Ложь); + ПараметрыАС.Вставить("ИспользоватьОтладку", Ложь); + + Возврат ПараметрыАС; + +КонецФункции + +Функция ВыполнитьЧерезIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера) + + МенеджерIbsrv = Новый МенеджерIbsrv(ПараметрыКоманды); + + Если ПараметрыАвтономногоСервера.ИспользоватьПрямоеСоединение Тогда + МенеджерIbsrv.ВключитьПрямоеСоединение(); + КонецЕсли; + + Если ПараметрыАвтономногоСервера.ИспользоватьОтладку Тогда + МенеджерIbsrv.ВключитьОтладку(); + КонецЕсли; + + Попытка + Результат = МенеджерIbsrv.ВыполнитьДействие(Действие, ПараметрыКоманды); + Исключение + МенеджерIbsrv.Деструктор(); + ВызватьИсключение; + КонецПопытки; + + МенеджерIbsrv.Деструктор(); + + Возврат Результат; + +КонецФункции + Функция НовыйМенеджерКонфигуратора() Экспорт Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень()); Возврат Новый МенеджерКонфигуратора(); @@ -656,5 +737,17 @@ КонецПроцедуры +// Получает данные подключения из параметров команды +// +// Параметры: +// ПараметрыКоманды - Соответствие - Парвметры команды +// +// Возвращаемое значение: +// Структура - Парметры подключения к ИБ +// +Функция ДанныеПодключения(ПараметрыКоманды) Экспорт + Возврат ПараметрыКоманды["ДанныеПодключения"]; +КонецФункции + // из-за особенностей загрузки модуль ОбщиеМетоды грузится раньше ПараметрыСистемы, // поэтому сразу в конце кода модуля использовать ПараметрыСистемы нельзя diff --git a/tests/fixtures/cf/Configuration.xml b/tests/fixtures/cf/Configuration.xml index 616caa9a..8f82018d 100644 --- a/tests/fixtures/cf/Configuration.xml +++ b/tests/fixtures/cf/Configuration.xml @@ -32,7 +32,7 @@ - Version8_3_10 + Version8_3_14 ManagedApplication PersonalComputer @@ -113,7 +113,7 @@ DontUse Use Taxi - Version8_3_10 + Version8_3_14 diff --git "a/tests/fixtures/feature/\320\221\320\265\320\267 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270 \321\210\320\260\320\263\320\260/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\271 \321\201 \320\275\320\265\321\200\320\265\320\260\320\273\320\270\320\267\320\276\320\262\320\260\320\275\320\275\321\213\320\274 \321\210\320\260\320\263\320\276\320\274.feature" "b/tests/fixtures/feature/\320\221\320\265\320\267 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270 \321\210\320\260\320\263\320\260/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\271 \321\201 \320\275\320\265\321\200\320\265\320\260\320\273\320\270\320\267\320\276\320\262\320\260\320\275\320\275\321\213\320\274 \321\210\320\260\320\263\320\276\320\274.feature" new file mode 100644 index 00000000..11735e03 --- /dev/null +++ "b/tests/fixtures/feature/\320\221\320\265\320\267 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270 \321\210\320\260\320\263\320\260/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\271 \321\201 \320\275\320\265\321\200\320\265\320\260\320\273\320\270\320\267\320\276\320\262\320\260\320\275\320\275\321\213\320\274 \321\210\320\260\320\263\320\276\320\274.feature" @@ -0,0 +1,5 @@ +# language: ru +Функционал: Выполнение несуществующего шага + +Сценарий: Выполнение несуществующего шага + Когда я выполняю несуществующий шаг diff --git "a/tests/fixtures/feature/\320\237\320\260\321\203\320\267\320\260/\320\237\320\260\321\203\320\267\320\260.feature" "b/tests/fixtures/feature/\320\237\320\260\321\203\320\267\320\260/\320\237\320\260\321\203\320\267\320\260.feature" new file mode 100644 index 00000000..e175beb1 --- /dev/null +++ "b/tests/fixtures/feature/\320\237\320\260\321\203\320\267\320\260/\320\237\320\260\321\203\320\267\320\260.feature" @@ -0,0 +1,5 @@ +# language: ru +Функционал: Сделать паузу в указанное число секунд + +Сценарий: Пауза + Когда Пауза 1 diff --git a/tests/fixtures/test.cfe b/tests/fixtures/test.cfe index 20518554..437550cc 100644 Binary files a/tests/fixtures/test.cfe and b/tests/fixtures/test.cfe differ diff --git "a/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" "b/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" new file mode 100644 index 00000000..5f7d7790 --- /dev/null +++ "b/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" @@ -0,0 +1,18 @@ + + + + + ТестFAIL_ОбщийМодуль + + + false + false + true + true + false + false + false + DontUse + + + \ No newline at end of file diff --git "a/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" "b/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" new file mode 100644 index 00000000..437d39ff --- /dev/null +++ "b/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" @@ -0,0 +1,10 @@ + +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + НаборТестов.Добавить("ТестFail"); +КонецПроцедуры + +Процедура ТестFail(Ванесса) Экспорт + + ВызватьИсключение "Тест FAIL!"; + +КонецПроцедуры \ No newline at end of file diff --git a/tests/fixtures/xdd_cfe_FAIL/Configuration.xml b/tests/fixtures/xdd_cfe_FAIL/Configuration.xml new file mode 100644 index 00000000..cd57a891 --- /dev/null +++ b/tests/fixtures/xdd_cfe_FAIL/Configuration.xml @@ -0,0 +1,72 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + 986648a2-0daa-4f7c-90f6-55b99394ca68 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + 78e5b327-4d98-46ce-8e1d-6ce2913a42b3 + + + e3687481-0a87-462c-a166-9f34594f9bba + ff659aab-ce9b-4126-9941-cdd1533eb0c4 + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 8ae1a01d-72f2-4079-9934-d186b374c4d8 + + + 51f2d5d8-ea4d-4064-8892-82951750031e + d86f397b-5b9d-48d0-aeb4-596a4f003c30 + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 955aa924-ae4d-461c-92d5-004ca627de16 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 031b5158-f0a7-40ab-a84d-93a307da1563 + + + + Adopted + ТестFAIL + + + ru + Тест FAIL + + + + Customization + true + ТестFAIL_ + Version8_3_14 + ManagedApplication + + PlatformApplication + + Russian + + Role.ТестFAIL_ОсновнаяРоль + + + + Language.Русский + + + + + + Taxi + + + Русский + ТестFAIL_ОсновнаяРоль + ТестFAIL_ОбщийМодуль + + + diff --git "a/tests/fixtures/xdd_cfe_FAIL/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" "b/tests/fixtures/xdd_cfe_FAIL/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" new file mode 100644 index 00000000..6dbda9fa --- /dev/null +++ "b/tests/fixtures/xdd_cfe_FAIL/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" @@ -0,0 +1,12 @@ + + + + + + Adopted + Русский + + ru + + + \ No newline at end of file diff --git "a/tests/fixtures/xdd_cfe_FAIL/Roles/\320\242\320\265\321\201\321\202FAIL_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" "b/tests/fixtures/xdd_cfe_FAIL/Roles/\320\242\320\265\321\201\321\202FAIL_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" new file mode 100644 index 00000000..98795e0b --- /dev/null +++ "b/tests/fixtures/xdd_cfe_FAIL/Roles/\320\242\320\265\321\201\321\202FAIL_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" @@ -0,0 +1,10 @@ + + + + + ТестFAIL_ОсновнаяРоль + + + + + \ No newline at end of file diff --git "a/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" new file mode 100644 index 00000000..29890491 --- /dev/null +++ "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" @@ -0,0 +1,18 @@ + + + + + ТестOK_ОбщийМодуль + + + false + false + true + true + true + false + false + DontUse + + + diff --git "a/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" new file mode 100644 index 00000000..d8e3f435 --- /dev/null +++ "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" @@ -0,0 +1,12 @@ + +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + НаборТестов.Добавить("ТестOK"); +КонецПроцедуры + +Процедура ТестOK(Ванесса) Экспорт + + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = "Тест OK!"; + Сообщение.Сообщить(); + +КонецПроцедуры \ No newline at end of file diff --git "a/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141.xml" "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141.xml" new file mode 100644 index 00000000..74ec0bdb --- /dev/null +++ "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141.xml" @@ -0,0 +1,18 @@ + + + + + Тест_ОбщийМодуль1 + + + false + false + true + true + true + false + false + DontUse + + + diff --git "a/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141/Ext/Module.bsl" "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141/Ext/Module.bsl" new file mode 100644 index 00000000..3de44fce --- /dev/null +++ "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141/Ext/Module.bsl" @@ -0,0 +1,7 @@ + +Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт + НаборТестов.Добавить("Тест_Выполняется"); +КонецПроцедуры + +Процедура Тест_Выполняется(Ванесса) Экспорт +КонецПроцедуры diff --git a/tests/fixtures/xdd_cfe_OK/Configuration.xml b/tests/fixtures/xdd_cfe_OK/Configuration.xml new file mode 100644 index 00000000..b4dbd7e7 --- /dev/null +++ b/tests/fixtures/xdd_cfe_OK/Configuration.xml @@ -0,0 +1,72 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + c68551a9-4e35-4db1-9a4e-d2bf7c6224d4 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + 45b51908-9aba-4ff0-9dde-96fec0c1a8d5 + + + e3687481-0a87-462c-a166-9f34594f9bba + a7007268-2b03-4157-b9cb-a9e597e0831e + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + 53328cf7-8389-4b5c-89f7-1cbf09324b07 + + + 51f2d5d8-ea4d-4064-8892-82951750031e + cc8b9d47-7eeb-4d3d-a94c-b58b25ea35f6 + + + e68182ea-4237-4383-967f-90c1e3370bc7 + 8dc87c7e-a71e-4c7e-aedf-aebc06cd7599 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + 13d6e80b-14c7-44d6-a997-41eece31b85e + + + + Adopted + ТестOK + + + ru + Тест OK + + + + Customization + true + ТестOK_ + Version8_3_14 + ManagedApplication + + PlatformApplication + + Russian + + Role.ТестOK_ОсновнаяРоль + + + + Language.Русский + + + + + + Taxi + + + Русский + ТестOK_ОсновнаяРоль + ТестOK_ОбщийМодуль + + + diff --git "a/tests/fixtures/xdd_cfe_OK/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" "b/tests/fixtures/xdd_cfe_OK/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" new file mode 100644 index 00000000..2adb33dc --- /dev/null +++ "b/tests/fixtures/xdd_cfe_OK/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" @@ -0,0 +1,12 @@ + + + + + + Adopted + Русский + + ru + + + \ No newline at end of file diff --git "a/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202OK_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" "b/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202OK_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" new file mode 100644 index 00000000..83ae99ce --- /dev/null +++ "b/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202OK_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" @@ -0,0 +1,10 @@ + + + + + ТестOK_ОсновнаяРоль + + + + + \ No newline at end of file diff --git "a/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" "b/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" new file mode 100644 index 00000000..cded8de4 --- /dev/null +++ "b/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" @@ -0,0 +1,10 @@ + + + + + Тест_ОсновнаяРоль + + + + + \ No newline at end of file diff --git a/tests/xunits/compileext.os b/tests/xunits/compileext.os index ee0feefc..3b49beb5 100644 --- a/tests/xunits/compileext.os +++ b/tests/xunits/compileext.os @@ -30,7 +30,7 @@ // Тогда Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd"); - Исполнитель.ОжидаемЧтоВыводСодержит("Сборка расширения из исходников завершена."); + Исполнитель.ОжидаемЧтоВыводСодержит("Сборка расширения testNew из исходников завершена."); КонецПроцедуры @@ -50,4 +50,4 @@ КонецПроцедуры -#КонецОбласти \ No newline at end of file +#КонецОбласти diff --git a/tests/xunits/designer.os b/tests/xunits/designer.os new file mode 100644 index 00000000..59a57013 --- /dev/null +++ b/tests/xunits/designer.os @@ -0,0 +1,48 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "../.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ВыгрузитьИнформационноюБазуВФайлIbsrv() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("designer"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + Исполнитель.ДобавитьПараметр("--additional", """/DumpDBCfgList -AllExtensions"""); + Исполнитель.ДобавитьФлаг("--ibsrv"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv"); + Исполнитель.ОжидаемЧтоВыводСодержит("Работа Конфигуратора завершена"); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти diff --git a/tests/xunits/run.os b/tests/xunits/run.os new file mode 100644 index 00000000..7939fe37 --- /dev/null +++ b/tests/xunits/run.os @@ -0,0 +1,90 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "../.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ЗапуститьОбработкуЗакрытьПредприятиеIbsrv() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("run"); + Исполнитель.СобратьВнешнююОбработку("epf/ЗакрытьПредприятие/ЗакрытьПредприятие.xml", "epf/ЗакрытьПредприятие.epf"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + Исполнитель.ДобавитьПараметр("--execute", "$runnerRoot/epf/ЗакрытьПредприятие.epf"); + Исполнитель.ДобавитьФлаг("--ibsrv"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv"); + Исполнитель.ОжидаемЧтоВыводСодержит("Выполнение команды/действия в режиме 1С:Предприятие завершено."); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_ЗапуститьСНевернымИменемПользователяIbsrv() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("run"); + Исполнитель.СобратьВнешнююОбработку("epf/ЗакрытьПредприятие/ЗакрытьПредприятие.xml", "epf/ЗакрытьПредприятие.epf"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + Исполнитель.ДобавитьПараметр("--execute", "$runnerRoot/epf/ЗакрытьПредприятие.epf"); + Исполнитель.ДобавитьФлаг("--ibsrv"); + + // Когда + Исполнитель.ДобавитьПараметр("--db-user", "НеизвестныйПользователь"); + + // Тогда + Ожидаем.Что(Исполнитель) + .Метод("ВыполнитьКоманду") + .ВыбрасываетИсключение("Пользователь ИБ не идентифицирован"); + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv"); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_ЗапуститьСОткрытиемНавигационнойСсылкиIbsrv() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("run"); + Исполнитель.СобратьВнешнююОбработку("epf/ЗакрытьПредприятие/ЗакрытьПредприятие.xml", "epf/ЗакрытьПредприятие.epf"); + Исполнитель.УстановитьКонтекстПустаяИБ(); + Исполнитель.ДобавитьПараметр("--execute", "$runnerRoot/epf/ЗакрытьПредприятие.epf"); + Исполнитель.ДобавитьПараметр("--url", "e1cib/navigationpoint/startpage"); + Исполнитель.ДобавитьФлаг("--ibsrv"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv"); + Исполнитель.ОжидаемЧтоВыводСодержит("Выполнение команды/действия в режиме 1С:Предприятие завершено."); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти diff --git a/tests/xunits/update-dev.os b/tests/xunits/update-dev.os index 32996eef..d94e632d 100644 --- a/tests/xunits/update-dev.os +++ b/tests/xunits/update-dev.os @@ -63,11 +63,6 @@ // Когда Исполнитель.ВыполнитьКоманду(); - ЛогВыводаКоманды = СтрШаблон("Лог вывода команды: - |%1", Исполнитель.ЛогКоманды().ВыводЛога()); - Сообщить(ЛогВыводаКоманды); - - //ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(Исполнитель.КаталогКоманды(), ".git")); // Тогда Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы"); @@ -101,12 +96,6 @@ // Когда Исполнитель.ВыполнитьКоманду(); - ЛогВыводаКоманды = СтрШаблон("Лог вывода команды: - |%1", Исполнитель.ЛогКоманды().ВыводЛога()); - Сообщить(ЛогВыводаКоманды); - - //ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(Исполнитель.КаталогКоманды(), ".git")); - // Тогда Исполнитель.ОжидаемЧтоРавно(СокрЛП(Репозиторий.ПолучитьНастройку("core.quotePath")), "false", "Должно быть задано git config core.quotePath == false"); @@ -131,9 +120,6 @@ // Когда Исполнитель.ВыполнитьКоманду(); - ЛогВыводаКоманды = СтрШаблон("Лог вывода команды: - |%1", Исполнитель.ЛогКоманды().ВыводЛога()); - Сообщить(ЛогВыводаКоманды); // Тогда Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы"); @@ -158,16 +144,12 @@ // Когда Исполнитель.ВыполнитьКоманду(); - ЛогВыводаКоманды = СтрШаблон("Лог вывода команды: - |%1", Исполнитель.ЛогКоманды().ВыводЛога()); - Сообщить(ЛогВыводаКоманды); // Тогда Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы"); Исполнитель.ОжидаемЧтоВыводСодержит("Будет выполнена инкрементальная загрузка"); Исполнитель.ОжидаемЧтоВыводСодержит(ОбъединитьПути("Catalogs", "Справочник1.xml")); - Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из исходников"); Исполнитель.ОжидаемЧтоВыводСодержит("Обновление конфигурации БД завершено."); @@ -185,9 +167,6 @@ // Когда Исполнитель.ВыполнитьКоманду(); - ЛогВыводаКоманды = СтрШаблон("Лог вывода команды: - |%1", Исполнитель.ЛогКоманды().ВыводЛога()); - Сообщить(ЛогВыводаКоманды); // Тогда Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы"); @@ -196,7 +175,6 @@ Исполнитель.ОжидаемЧтоВыводСодержит("ObjectModule.bsl"); Исполнитель.ОжидаемЧтоВыводСодержит(ОбъединитьПути("Catalogs", "Справочник1.xml")); - Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из исходников"); Исполнитель.ОжидаемЧтоВыводСодержит("Обновление конфигурации БД завершено."); @@ -213,16 +191,12 @@ // Когда Исполнитель.ВыполнитьКоманду(); - ЛогВыводаКоманды = СтрШаблон("Лог вывода команды: - |%1", Исполнитель.ЛогКоманды().ВыводЛога()); - Сообщить(ЛогВыводаКоманды); // Тогда Исполнитель.ОжидаемЧтоВыводНеСодержит("Используется ibcmd платформы"); Исполнитель.ОжидаемЧтоВыводСодержит("Будет выполнена инкрементальная загрузка"); Исполнитель.ОжидаемЧтоВыводСодержит(ОбъединитьПути("Catalogs", "Справочник1.xml")); - Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из исходников"); Исполнитель.ОжидаемЧтоВыводСодержит("Обновление конфигурации БД завершено."); @@ -296,6 +270,7 @@ ЗаписатьТекст(lastUploadedCommit, ПоследнийКоммит); Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогИсходников); + Исполнитель.ВыгрузитьВФайлСостояниеКонфигурации(КаталогИсходников); Если ИзмененияСКоммитом Тогда ManagedApplicationModule = ОбъединитьПути(КаталогИсходников, "Ext", "ManagedApplicationModule.bsl"); diff --git "a/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os" "b/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os" index 4a3ed034..c82bef68 100644 --- "a/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os" +++ "b/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os" @@ -1,9 +1,18 @@ #Использовать tempfiles -Перем ТекстовыйДокумент; +#Область ОписаниеПеременных + +Перем ТекстовыйДокумент; // Экземпляр документа для хренения лога вывода. + +#КонецОбласти #Область ПрограммныйИнтерфейс +// Возвращает вывод лога +// +// Возвращаемое значение: +// Строка - Сожержимое лога +// Функция ВыводЛога() Экспорт Возврат ТекстовыйДокумент.ПолучитьТекст(); КонецФункции @@ -16,6 +25,7 @@ Сообщение = СобытиеЛога.ПолучитьФорматированноеСообщение(); ТекстовыйДокумент.ДобавитьСтроку(Сообщение); + Консоль.ВывестиСтроку(Сообщение); КонецПроцедуры @@ -24,6 +34,10 @@ // Устанавливает свойство аппендера, заданное в конфигурационном файле // +// Параметры: +// ИмяСвойства - Строка - Имя свойства +// Значение - Строка, Число, Булево - Значение свойства +// Процедура УстановитьСвойство(Знач ИмяСвойства, Знач Значение) Экспорт КонецПроцедуры // УстановитьСвойство() diff --git "a/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" "b/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" index ca0bc7aa..fb22b092 100644 --- "a/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" +++ "b/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" @@ -1,15 +1,17 @@ #Использовать "../../../.." #Использовать cmdline #Использовать ibcmdrunner +#Использовать v8runner #Использовать asserts #Область ОписаниеПеременных -Перем Команда; -Перем Аргументы; -Перем СпособВывода; -Перем КаталогКоманды; -Перем УправлениеИБ; +Перем Команда; // Текущая команда приложения +Перем Аргументы; // Аргументы команды приложения +Перем СпособВывода; // Экземпляр вывода лога команды приложения +Перем КаталогКоманды; // Каталог в котором выполняется команда +Перем УправлениеИБ; // Экземпляр менеджера ibcmd +Перем УровеньЛога; // Уровень логирования #КонецОбласти @@ -28,13 +30,14 @@ Аргументы.Добавить(ИмяФлага); КонецПроцедуры -Процедура ВыполнитьКоманду() Экспорт +Функция ВыполнитьКоманду() Экспорт СистемнаяИнформация = Новый СистемнаяИнформация; ПараметрыСистемы.ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; ДобавитьПараметр("--root", КаталогКоманды); ДобавитьФлаг("--nocacheuse"); + ДобавитьПараметр("--language", "ru"); МенеджерКомандПриложения.РегистраторКоманд(ПараметрыСистемы); @@ -43,9 +46,21 @@ Парсер = Новый ПарсерАргументовКоманднойСтроки(); МенеджерКомандПриложения.ЗарегистрироватьКоманды(Парсер); ПараметрыКоманды = Парсер.Разобрать(Аргументы); - МенеджерКомандПриложения.ВыполнитьКоманду(Команда, ПараметрыКоманды.ЗначенияПараметров); -КонецПроцедуры + Сообщить(">>>"); + Сообщить("vrunner " + СтрСоединить(Аргументы, " ")); + Попытка + Результат = МенеджерКомандПриложения.ВыполнитьКоманду(Команда, ПараметрыКоманды.ЗначенияПараметров); + Исключение + Сообщить("<<<"); + ВызватьИсключение; + КонецПопытки; + + Сообщить("<<<"); + + Возврат Результат; + +КонецФункции Функция ЛогКоманды() Экспорт Возврат СпособВывода; @@ -90,6 +105,7 @@ КаталогПустойИБ = ОбъединитьПути(КаталогКоманды, "db-data"); УправлениеИБ = Новый УправлениеИБ; + УправлениеИБ.УстановитьПараметрыАвтономногоСервера(КаталогКоманды); УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогПустойИБ); УправлениеИБ.СоздатьИБИзФайлаВыгрузки(""); @@ -103,15 +119,19 @@ КаталогИБ = ОбъединитьПути(КаталогКоманды, "db-data"); УправлениеИБ = Новый УправлениеИБ; + УправлениеИБ.УстановитьПараметрыАвтономногоСервера(КаталогКоманды); УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогИБ); УправлениеИБ.СоздатьИБИзФайловКонфигурации(Каталог); - УправлениеИБ.ВыгрузитьВФайлСостояниеКонфигурации(Каталог); СтрокаСоединения = СтрШаблон("/F""%1""", КаталогИБ); ДобавитьПараметр("--ibconnection", СтрокаСоединения); КонецПроцедуры +Процедура ВыгрузитьВФайлСостояниеКонфигурации(Каталог) Экспорт + УправлениеИБ.ВыгрузитьВФайлСостояниеКонфигурации(Каталог); +КонецПроцедуры + Процедура СоздатьПустоеРасширение(ИмяРасширения, ПрефиксИмен) Экспорт УправлениеИБ.СоздатьРасширение(ИмяРасширения, ПрефиксИмен); КонецПроцедуры @@ -120,6 +140,33 @@ УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(КаталогИсходников, ИмяРасширения); КонецПроцедуры +Процедура ОбновитьКонфигурациюБазыДанных(ИмяРасширения = "") Экспорт + УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения); +КонецПроцедуры + +Процедура УстановитьУровеньЛога(Знач Уровень) Экспорт + УровеньЛога = Уровень; +КонецПроцедуры + +Процедура СобратьВнешнююОбработку(Знач КаталогИсходников, Знач ПутьКФайлуОбработки) Экспорт + + Если ФС.ФайлСуществует(ПутьКФайлуОбработки) Тогда + Возврат; + КонецЕсли; + + Конфигуратор = Новый УправлениеКонфигуратором(); + КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог(); + Конфигуратор.КаталогСборки(КаталогВременнойИБ); + + Параметры = Конфигуратор.ПолучитьПараметрыЗапуска(); + Параметры.Добавить("/LoadExternalDataProcessorOrReportFromFiles"); + Параметры.Добавить(ОбщиеМетоды.ОбернутьПутьВКавычки(КаталогИсходников)); + Параметры.Добавить(ОбщиеМетоды.ОбернутьПутьВКавычки(ПутьКФайлуОбработки)); + + Конфигуратор.ВыполнитьКоманду(Параметры); + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытий @@ -133,6 +180,7 @@ КаталогКоманды = ВременныеФайлы.СоздатьКаталог(); СпособВывода = Новый Тест_ВыводЛога(); + УровеньЛога = УровниЛога.Информация; КонецПроцедуры @@ -141,8 +189,13 @@ #Область СлужебныеПроцедурыИФункции Процедура ДобавитьСпособВывода(МенеджерКомандПриложения) + Лог = МенеджерКомандПриложения.Лог(); + + Лог.Закрыть(); Лог.ДобавитьСпособВывода(СпособВывода); + Лог.УстановитьУровень(УровеньЛога); + КонецПроцедуры #КонецОбласти diff --git a/tests/xunits/vanessa.os b/tests/xunits/vanessa.os new file mode 100644 index 00000000..a143f8d0 --- /dev/null +++ b/tests/xunits/vanessa.os @@ -0,0 +1,85 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "../.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ВыполнитьФичуПаузаIbsrv() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("vanessa"); + + КаталогSrcCf = Исполнитель.ПутьТестовыхДанных("cf"); + Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrcCf); + Исполнитель.ОбновитьКонфигурациюБазыДанных(); + + ФайлНастроек = Исполнитель.ПутьТестовыхДанных("feature/vb-conf.json"); + ПутьКФичам = Исполнитель.ПутьТестовыхДанных("feature/Пауза"); + + Исполнитель.ДобавитьПараметр("--vanessasettings", ФайлНастроек); + Исполнитель.ДобавитьПараметр("--path", ПутьКФичам); + Исполнитель.ДобавитьФлаг("--ibsrv"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv"); + Исполнитель.ОжидаемЧтоВыводСодержит("Все фичи/сценарии выполнены!"); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_ВыполнитьНереализованнуюФичуIbsrv() Экспорт + + // Дано + Исполнитель = Новый Тест_ИсполнительКоманд("vanessa"); + + КаталогSrcCf = Исполнитель.ПутьТестовыхДанных("cf"); + Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrcCf); + Исполнитель.ОбновитьКонфигурациюБазыДанных(); + + ФайлНастроек = Исполнитель.ПутьТестовыхДанных("feature/vb-conf.json"); + ПутьКФичам = Исполнитель.ПутьТестовыхДанных("feature/Без реализации шага"); + + Исполнитель.ДобавитьПараметр("--vanessasettings", ФайлНастроек); + Исполнитель.ДобавитьПараметр("--path", ПутьКФичам); + Исполнитель.ДобавитьФлаг("--ibsrv"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv"); + Исполнитель.ОжидаемЧтоВыводСодержит("Все фичи/сценарии выполнены!"); + + // В текущем релизе add нет нужного вывода. + // Исполнитель.ОжидаемЧтоВыводСодержит("Пустой адрес снипета у шага: Когда я выполняю несуществующий шаг"); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти diff --git a/tests/xunits/xunit.os b/tests/xunits/xunit.os new file mode 100644 index 00000000..1681c316 --- /dev/null +++ b/tests/xunits/xunit.os @@ -0,0 +1,90 @@ +#Использовать asserts +#Использовать tempfiles +#Использовать "utils" +#Использовать "../.." + +#Область ОписаниеПеременных + +Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +&Тест +Процедура ТестДолжен_ВыполнитьУспешноеТестированиеПроектаIbsrv() Экспорт + + // Дано + ИмяРасширения = "ТестOK"; + + Исполнитель = Новый Тест_ИсполнительКоманд("xunit"); + + КаталогSrcCf = Исполнитель.ПутьТестовыхДанных("cf"); + Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrcCf); + Исполнитель.ОбновитьКонфигурациюБазыДанных(); + + КаталогSrc = Исполнитель.ПутьТестовыхДанных("xdd_cfe_OK"); + Исполнитель.СоздатьРасширениеИзФайлов(ИмяРасширения, КаталогSrc); + Исполнитель.ОбновитьКонфигурациюБазыДанных(ИмяРасширения); + + Исполнитель.ДобавитьПараметр(ИмяРасширения); + Исполнитель.ДобавитьФлаг("--config-tests"); + Исполнитель.ДобавитьПараметр("--xddExitCodePath", "./exitCode.txt"); + Исполнитель.ДобавитьФлаг("--ibsrv"); + + // Когда + Исполнитель.ВыполнитьКоманду(); + + // Тогда + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv"); + Исполнитель.ОжидаемЧтоВыводСодержит("Все тесты выполнены!"); + +КонецПроцедуры + +&Тест +Процедура ТестДолжен_ВыполнитьОшибочноеТестированиеПроектаIbsrv() Экспорт + + // Дано + ИмяРасширения = "ТестFAIL"; + + Исполнитель = Новый Тест_ИсполнительКоманд("xunit"); + + КаталогSrcCf = Исполнитель.ПутьТестовыхДанных("cf"); + Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrcCf); + Исполнитель.ОбновитьКонфигурациюБазыДанных(); + + КаталогSrc = Исполнитель.ПутьТестовыхДанных("xdd_cfe_FAIL"); + Исполнитель.СоздатьРасширениеИзФайлов(ИмяРасширения, КаталогSrc); + Исполнитель.ОбновитьКонфигурациюБазыДанных(ИмяРасширения); + + // Когда + Исполнитель.ДобавитьПараметр(ИмяРасширения); + Исполнитель.ДобавитьФлаг("--config-tests"); + Исполнитель.ДобавитьПараметр("--xddExitCodePath", "./exitCode.txt"); + Исполнитель.ДобавитьФлаг("--ibsrv"); + + // Тогда + Ожидаем.Что(Исполнитель) + .Метод("ВыполнитьКоманду") + .ВыбрасываетИсключение("Часть тестов упала!"); + Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv"); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПередЗапускомТеста() Экспорт + + НакопленныеВременныеФайлы = ВременныеФайлы.Файлы(); + +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт + + ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы); + +КонецПроцедуры + +#КонецОбласти diff --git a/vanessa-runner-schema.json b/vanessa-runner-schema.json index 09427eab..f02684dd 100644 --- a/vanessa-runner-schema.json +++ b/vanessa-runner-schema.json @@ -1096,6 +1096,13 @@ "type": "boolean", "default": false }, + "--ibsrv": { + "description": "Запуск команды с использованием утилиты ibsrv", + "id": "/properties/xunit/--ibsrv", + "title": "The --ibsrv Schema", + "type": "boolean", + "default": false + }, "--ibconnection": { "description": "Строка подключения к БД (/FfilePath или /SserverPath)\n\tНапример, для файловых баз --ibconnection /FC:\\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1\n\tИли для серверных баз --ibconnection /Sservername\\basename", "id": "/properties/xunit/--ibconnection", @@ -1272,6 +1279,13 @@ "type": "boolean", "default": false }, + "--ibsrv": { + "description": "Запуск команды с использованием утилиты ibsrv", + "id": "/properties/vanessa/--ibsrv", + "title": "The --ibsrv Schema", + "type": "boolean", + "default": false + }, "--ibconnection": { "description": "Строка подключения к БД (/FfilePath или /SserverPath)\n\tНапример, для файловых баз --ibconnection /FC:\\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1\n\tИли для серверных баз --ibconnection /Sservername\\basename", "id": "/properties/vanessa/--ibconnection", @@ -1434,6 +1448,13 @@ "type": "string", "default": "" }, + "--ibsrv": { + "description": "Запуск команды с использованием утилиты ibsrv", + "id": "/properties/run/--ibsrv", + "title": "The --ibsrv Schema", + "type": "boolean", + "default": false + }, "--ibconnection": { "description": "Строка подключения к БД (/FfilePath или /SserverPath)\n\tНапример, для файловых баз --ibconnection /FC:\\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1\n\tИли для серверных баз --ibconnection /Sservername\\basename", "id": "/properties/run/--ibconnection", @@ -1582,6 +1603,13 @@ "type": "string", "default": "" }, + "--ibsrv": { + "description": "Запуск команды с использованием утилиты ibsrv", + "id": "/properties/designer/--ibsrv", + "title": "The --ibsrv Schema", + "type": "boolean", + "default": false + }, "--ibconnection": { "description": "Строка подключения к БД (/FfilePath или /SserverPath)\n\tНапример, для файловых баз --ibconnection /FC:\\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1\n\tИли для серверных баз --ibconnection /Sservername\\basename", "id": "/properties/designer/--ibconnection", @@ -8638,6 +8666,13 @@ "type": "boolean", "default": false }, + "--ibsrv": { + "description": "Запуск команды с использованием утилиты ibsrv", + "id": "/properties/default/--ibsrv", + "title": "The --ibsrv Schema", + "type": "boolean", + "default": false + }, "--path": { "description": "Путь для запуска тестов\nМожно указывать как каталог с фичами, так и конкретную фичу", "id": "/properties/default/--path",