Skip to content

Commit

Permalink
Опция --alwaysUseLastVersion для авто-поиска последней версии ЕДТ
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Feb 2, 2023
1 parent 81bb8c6 commit f92b3c4
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 4 deletions.
1 change: 1 addition & 0 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
.ЗависитОт("v8storage", "0.6.5")
.ЗависитОт("v8unpack", "1.0.4")
.ЗависитОт("cli-selector", "0.4.0")
.ЗависитОт("semver", "0.5.2")

.РазработкаЗависитОт("1bdd")
.РазработкаЗависитОт("1testrunner")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#Использовать 1commands
#Использовать tempfiles
#Использовать json
#Использовать semver

Перем Лог;
///////////////////////////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -32,10 +33,12 @@
| Если заполнен, то в отчетах аллюр будут ссылки на конкретные строки с ошибками.
| Пример: --project-url https://github.com/1C-Company/GitConverter/tree/master/GitConverter/src ");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--EDTversion",
"Используемая версия EDT. Необязательный аргумент.
"Используемая версия EDT. Необязательный аргумент при указании --alwaysUseLastVersion.
| Необходима, если зарегистрировано одновременно несколько версий.
| Узнать доступные версии можно командой ""ring help""
| Пример: --EDTversion 1.9.1");
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--alwaysUseLastVersion",
"Всегда использовать последнюю версию EDT. Необязательный аргумент.");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--workspace-location",
"Расположение рабочей области. Необязательный аргумент.
| Если не указан, то проверка выполняться не будет. Актуально для создания отчетов по существующему файлу результатов.");
Expand Down Expand Up @@ -99,6 +102,7 @@
ИЛИ ЗначениеЗаполнено(ПутьОтчетаВФорматеAllure2);

ВерсияEDT = ПараметрыКоманды["--EDTversion"];
ВсегдаИспользоватьПоследнююВерсиюEDT = ПараметрыКоманды["--alwaysUseLastVersion"];
РабочаяОбласть = ПараметрыКоманды["--workspace-location"];
СписокПапокСПроектами = ПараметрыКоманды["--project-list"];
СписокИменПроектов = ПараметрыКоманды["--project-name-list"];
Expand All @@ -119,7 +123,8 @@
ИмяПредыдущегоФайлаРезультата = ПараметрыКоманды["--prev-validation-result"];

ДатаНачала = ТекущаяДата();
Успешно = ВыполнитьПроверкуEDT(РабочаяОбласть, ИмяФайлаРезультата, СписокПапокСПроектами, СписокИменПроектов, ВерсияEDT);
Успешно = ВыполнитьПроверкуEDT(РабочаяОбласть, ИмяФайлаРезультата, СписокПапокСПроектами, СписокИменПроектов,
ВерсияEDT, ВсегдаИспользоватьПоследнююВерсиюEDT);

Если СохранятьОтчетВФайл Тогда

Expand Down Expand Up @@ -160,7 +165,8 @@

///////////////////////////////////////////////////////////////////////////////////////////////////

Функция ВыполнитьПроверкуEDT(Знач РабочаяОбласть, ИмяФайлаРезультата, СписокПапокСПроектами, СписокИменПроектов, ВерсияEDT)
Функция ВыполнитьПроверкуEDT(Знач РабочаяОбласть, ИмяФайлаРезультата, СписокПапокСПроектами, СписокИменПроектов,
Знач ВерсияEDT, ВсегдаИспользоватьПоследнююВерсиюEDT)

Если Не ЗначениеЗаполнено(РабочаяОбласть) Тогда

Expand All @@ -185,13 +191,23 @@
РабочаяОбласть = ОбъединитьПути(ТекущийКаталог(), РабочаяОбласть);
ИмяФайлаРезультата = ОбъединитьПути(ТекущийКаталог(), ИмяФайлаРезультата);

Если ПустаяСтрока(ВерсияEDT) И ВсегдаИспользоватьПоследнююВерсиюEDT Тогда
ВерсияEDT = НайтиМаксимальнуюУстановленнуюВерсиюEDT();
КонецЕсли;

Если НЕ ПустаяСтрока(ВерсияEDT) Тогда
ВерсияЕДТДляЗапуска = "@" + ВерсияEDT;
Иначе
ВерсияЕДТДляЗапуска = "";
КонецЕсли;

Попытка

// Для EDT критично, чтобы файла не существовало
ОбщиеМетоды.УдалитьФайлЕслиОнСуществует(ИмяФайлаРезультата);

Команда = Новый Команда;
Команда.УстановитьСтрокуЗапуска(СтрШаблон("ring edt%1 workspace validate", ?(ПустаяСтрока(ВерсияEDT), "", "@" + ВерсияEDT)));
Команда.УстановитьСтрокуЗапуска(СтрШаблон("ring edt%1 workspace validate", ВерсияЕДТДляЗапуска));
Команда.УстановитьКодировкуВывода(КодировкаТекста.ANSI);
Команда.ДобавитьПараметр("--workspace-location " + ОбщиеМетоды.ОбернутьПутьВКавычки(РабочаяОбласть));
Команда.ДобавитьПараметр("--file " + ОбщиеМетоды.ОбернутьПутьВКавычки(ИмяФайлаРезультата));
Expand Down Expand Up @@ -227,6 +243,61 @@

КонецФункции

Функция НайтиМаксимальнуюУстановленнуюВерсиюEDT()
Команда = Новый Команда;
Команда.УстановитьСтрокуЗапуска("ring edt platform-versions");
Команда.УстановитьКодировкуВывода(КодировкаТекста.ANSI);

Лог.Отладка("Поиск максимальной установленной версии EDT");

КодВозврата = Команда.Исполнить();
ЛогКоманды = Команда.ПолучитьВывод();
Лог.Отладка("ЛогКоманды %1", ЛогКоманды);

Если КодВозврата = 0 Тогда
Возврат "";
КонецЕсли;

МассивВерсий = НайтиВерсииЕДТПоЛогу(ЛогКоманды);
Если Не ЗначениеЗаполнено(МассивВерсий) Тогда
ВызватьИсключение "Не найдено ни одной установленной версии 1C:EDT";
КонецЕсли;

Возврат Версии.МаксимальнаяИзМассива(МассивВерсий).ВСтроку();
КонецФункции

Функция НайтиВерсииЕДТПоЛогу(ЛогКоманды)
Результат = Новый Массив;

РВ = Новый РегулярноеВыражение("""edt""|((\d+\.\d+\.\d+)[,\.])");
Совпадения = РВ.НайтиСовпадения(ЛогКоманды);

Лог.Отладка("НайтиВерсииЕДТПоЛогу Совпадения.Количество() %1", Совпадения.Количество());
Лог.Отладка("НайтиВерсииЕДТПоЛогу Совпадения %1", Совпадения);
Если Совпадения.Количество() > 2 Тогда
Лог.Отладка("Совпадения[0].Значение %1", Совпадения[0].Значение);
Если Совпадения[0].Значение = """edt""" Тогда
Для кк = 1 По Совпадения.Количество() - 1 Цикл
Совпадение = Совпадения[кк];
Лог.Отладка("НайтиВерсииЕДТПоЛогу Совпадение.Значение %1", Совпадение.Значение);
Лог.Отладка("НайтиВерсииЕДТПоЛогу Совпадение.Группы.Количество() %1", Совпадение.Группы.Количество());
Лог.Отладка("НайтиВерсииЕДТПоЛогу Совпадение.Группы[0].Значение %1", Совпадение.Группы[0].Значение);
Лог.Отладка("НайтиВерсииЕДТПоЛогу Совпадение.Группы[1].Значение %1", Совпадение.Группы[1].Значение);
Лог.Отладка("НайтиВерсииЕДТПоЛогу Совпадение.Группы[2].Значение %1", Совпадение.Группы[2].Значение);
Если Совпадение.Группы.Количество() = 3 Тогда
ВерсияСтрокой = Совпадение.Группы[2].Значение;
Результат.Добавить(Версии.ВерсияИзСтроки(ВерсияСтрокой));
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Для Каждого Версия Из Результат Цикл
Лог.Отладка("Нашли версию ЕДТ %1", Версия.ВСтроку());
КонецЦикла;

Возврат Результат;
КонецФункции

Функция ОбработатьЛогОшибок(ДатаНачала, ПутьКФайлуЛогаОшибок, ИмяФайлаИсключенийОшибок, ИмяПредыдущегоФайлаРезультата)

РезультатТестирования = Новый Структура;
Expand Down

0 comments on commit f92b3c4

Please sign in to comment.