Skip to content

Commit 6a36f7c

Browse files
authored
Merge pull request #242 from nixel2007/copilot/fix-1
2 parents 63a2fbd + 0e9ec9d commit 6a36f7c

File tree

4 files changed

+41
-7
lines changed

4 files changed

+41
-7
lines changed

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
Константы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюКонстант);
1414
ВерсияПродукта = Константы_ЛокальнаяВерсия.ВерсияПродукта;
1515
Иначе
16-
ВерсияПродукта = "1.4.1";
16+
ВерсияПродукта = "1.4.2";
1717
КонецЕсли;
1818

1919
Описание.Имя("opm")

src/core/Классы/КэшУстановленныхПакетов.os

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,20 @@
3939
УстановленаКорректнаяВерсия = Истина;
4040
ИначеЕсли ОписаниеЗависимости.МинимальнаяВерсия = ВерсияSNAPSHOT И УстановленнаяВерсия <> ВерсияSNAPSHOT Тогда
4141
УстановленаКорректнаяВерсия = Ложь;
42-
Иначе
43-
УстановленаКорректнаяВерсия = ОписаниеЗависимости.МинимальнаяВерсия = Неопределено
44-
ИЛИ Версии.СравнитьВерсии(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия) >= 0;
42+
Иначе
43+
Если ОписаниеЗависимости.МинимальнаяВерсия = Неопределено Тогда
44+
УстановленаКорректнаяВерсия = Истина;
45+
Иначе
46+
Попытка
47+
// Сначала пытаемся использовать семвер
48+
РезультатСравнения = Версии.СравнитьВерсии(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия);
49+
Исключение
50+
// Если семвер не может обработать версию (например, 4-значную), используем модуль РаботаСВерсиями
51+
РезультатСравнения = РаботаСВерсиями.СравнитьВерсии(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия);
52+
КонецПопытки;
53+
54+
УстановленаКорректнаяВерсия = РезультатСравнения >= 0;
55+
КонецЕсли;
4556
КонецЕсли;
4657

4758
Лог.Отладка("Пакет установлен: " + ПакетУстановлен);
@@ -160,8 +171,10 @@
160171

161172
Возврат ПутьКФайлуМетаданных;
162173

163-
КонецФункции
164-
174+
КонецФункции
175+
176+
177+
165178
Процедура ПриСозданииОбъекта(КаталогПоискаБиблиотек = "")
166179

167180
Лог = Логирование.ПолучитьЛог("oscript.app.opm");

src/core/Модули/КонстантыOpm.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@
2424
ПутьВЗапасномХранилище = "/download/";
2525
ЛокальныйКаталогУстановкиПакетов = "oscript_modules";
2626
ИмяЛога = "oscript.app.opm";
27-
ВерсияПродукта = "1.4.1";
27+
ВерсияПродукта = "1.4.2";
2828
ИмяФайлаНастроек = "opm.cfg";

tests/versions-test.os

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
СписокТестов.Добавить("ТестДолжен_ПроверитьЧтоВерсияАБольшеВерсииБ");
1717
СписокТестов.Добавить("ТестДолжен_ПолучитьИмяИВерсиюПоИмениПакетаБезВерсии");
1818
СписокТестов.Добавить("ТестДолжен_ПолучитьИмяИВерсиюПоИмениПакетаСВерсией");
19+
СписокТестов.Добавить("ТестДолжен_СравнитьЧетырехзначныеВерсии");
1920

2021
Возврат СписокТестов;
2122

@@ -89,3 +90,23 @@
8990
Ожидаем.Что(Пакет.Версия).Равно("1.1.1");
9091

9192
КонецПроцедуры
93+
94+
Процедура ТестДолжен_СравнитьЧетырехзначныеВерсии() Экспорт
95+
96+
// Тестируем сравнение четырехзначных версий (не семвер)
97+
ВерсияА = "1.2.3.4";
98+
ВерсияБ = "1.2.3.3";
99+
100+
// Проверяем что старый механизм может сравнивать 4-значные версии
101+
РезультатСравнения = РаботаСВерсиями.СравнитьВерсии(ВерсияА, ВерсияБ);
102+
Ожидаем.Что(РезультатСравнения).Больше(0);
103+
104+
// Проверяем равенство
105+
РезультатСравнения = РаботаСВерсиями.СравнитьВерсии(ВерсияА, ВерсияА);
106+
Ожидаем.Что(РезультатСравнения).Равно(0);
107+
108+
// Проверяем меньше
109+
РезультатСравнения = РаботаСВерсиями.СравнитьВерсии(ВерсияБ, ВерсияА);
110+
Ожидаем.Что(РезультатСравнения).Меньше(0);
111+
112+
КонецПроцедуры

0 commit comments

Comments
 (0)