Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Опция --alwaysUseLastVersion для авто-поиска последней версии ЕДТ #540

Merged
merged 1 commit into from
Feb 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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