From a893d9a3be7d68c7f8390da35b08d3e5a4668cc4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 15:45:26 +0000 Subject: [PATCH 1/9] Initial plan From f796d3747c1151efceea5236b6ee5f9e713edb7c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 16:00:11 +0000 Subject: [PATCH 2/9] Fix opm install -l --dev to properly handle developer dependencies Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com> --- ...20\272\320\265\321\202\320\276\320\262.os" | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git "a/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index 819aa71..645b381 100644 --- "a/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -202,11 +202,28 @@ ВызватьИсключение "УровеньЗависимости не может быть меньше нуля"; КонецЕсли; - Зависимости = Манифест.Зависимости(); - Если Зависимости.Количество() = 0 Тогда + ВсеЗависимости = Манифест.Зависимости(); + Если ВсеЗависимости.Количество() = 0 Тогда Возврат; КонецЕсли; + // Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика + Зависимости = Новый ТаблицаЗначений; + Для Каждого Колонка Из ВсеЗависимости.Колонки Цикл + Зависимости.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения); + КонецЦикла; + + Для Каждого Зависимость Из ВсеЗависимости Цикл + // Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0) + Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда + ЗаполнитьЗначенияСвойств(Зависимости.Добавить(), Зависимость); + Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки); + Иначе + Лог.Отладка("Пропущена зависимость разработчика: %1 (УстанавливатьЗависимостиРазработчика: %2, УровеньЗависимости: %3)", + Зависимость.ИмяПакета, УстанавливатьЗависимостиРазработчика, УровеньЗависимости); + КонецЕсли; + КонецЦикла; + УстановленныеПакеты = ПолучитьУстановленныеПакеты(); Для Каждого Зависимость Из Зависимости Цикл @@ -233,11 +250,28 @@ Процедура РазрешитьЗависимостиПакетаЛокально(Манифест, ПутьККаталогуЛокальныхЗависимостей, Знач УровеньЗависимости = 0) - Зависимости = Манифест.Зависимости(); - Если Зависимости.Количество() = 0 Тогда + ВсеЗависимости = Манифест.Зависимости(); + Если ВсеЗависимости.Количество() = 0 Тогда Возврат; КонецЕсли; + // Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика + Зависимости = Новый ТаблицаЗначений; + Для Каждого Колонка Из ВсеЗависимости.Колонки Цикл + Зависимости.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения); + КонецЦикла; + + // Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0) + Для Каждого Зависимость Из ВсеЗависимости Цикл + Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда + ЗаполнитьЗначенияСвойств(Зависимости.Добавить(), Зависимость); + Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки); + Иначе + Лог.Отладка("Пропущена зависимость разработчика: %1 (УстанавливатьЗависимостиРазработчика: %2, УровеньЗависимости: %3)", + Зависимость.ИмяПакета, УстанавливатьЗависимостиРазработчика, УровеньЗависимости); + КонецЕсли; + КонецЦикла; + УстановленныеПакеты = ПолучитьУстановленныеПакеты(); Для Каждого Зависимость Из Зависимости Цикл From d0f3ba57d7a0b108e8582a271a49d1c3e4f31423 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 16:01:52 +0000 Subject: [PATCH 3/9] Add comprehensive tests for developer dependencies fix Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com> --- tests/dev-dependencies-test.os | 100 +++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 tests/dev-dependencies-test.os diff --git a/tests/dev-dependencies-test.os b/tests/dev-dependencies-test.os new file mode 100644 index 0000000..acd7558 --- /dev/null +++ b/tests/dev-dependencies-test.os @@ -0,0 +1,100 @@ +// Comprehensive test for developer dependencies functionality +// This test verifies the fix for issue where opm install -l --dev was not installing developer dependencies + +#Использовать "/home/runner/work/opm/opm/src/core" +#Использовать "1testrunner" +#Использовать "asserts" + +Процедура ТестДолжен_ФильтроватьЗависимостиПоФлагуРазработчика() Экспорт + + // Создаем тестовый манифест с обычными и dev зависимостями + Манифест = Новый ОписаниеПакета(); + Манифест.Имя("test-package") + .Версия("1.0.0") + .ВерсияСреды("1.9.2") + .ЗависитОт("regular-dep", "1.0.0") + .РазработкаЗависитОт("dev-dep", "1.0.0"); + + // Создаем менеджер установки в локальном режиме + МенеджерУстановки = Новый МенеджерУстановкиПакетов(РежимУстановкиПакетов.Локально); + + // Тест 1: Без флага dev - должна устанавливаться только обычная зависимость + МенеджерУстановки.УстанавливатьЗависимостиРазработчика(Ложь); + + // Имитируем фильтрацию, которая происходит в РазрешитьЗависимостиПакета + ВсеЗависимости = Манифест.Зависимости(); + Утверждения.ПроверитьРавенство(2, ВсеЗависимости.Количество(), "Всего должно быть 2 зависимости"); + + // Фильтруем как в исправленном коде + УстанавливатьЗависимостиРазработчика = Ложь; + УровеньЗависимости = 0; + + ФильтрованныеЗависимости = Новый ТаблицаЗначений; + Для Каждого Колонка Из ВсеЗависимости.Колонки Цикл + ФильтрованныеЗависимости.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения); + КонецЦикла; + + Для Каждого Зависимость Из ВсеЗависимости Цикл + Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда + ЗаполнитьЗначенияСвойств(ФильтрованныеЗависимости.Добавить(), Зависимость); + КонецЕсли; + КонецЦикла; + + Утверждения.ПроверитьРавенство(1, ФильтрованныеЗависимости.Количество(), "Без флага dev должна быть только 1 зависимость"); + Утверждения.ПроверитьРавенство("regular-dep", ФильтрованныеЗависимости[0].ИмяПакета, "Должна остаться только обычная зависимость"); + Утверждения.ПроверитьРавенство(Ложь, ФильтрованныеЗависимости[0].ДляРазработки, "Обычная зависимость должна иметь ДляРазработки = Ложь"); + + // Тест 2: С флагом dev - должны устанавливаться обе зависимости + УстанавливатьЗависимостиРазработчика = Истина; + + ФильтрованныеЗависимости.Очистить(); + + Для Каждого Зависимость Из ВсеЗависимости Цикл + Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда + ЗаполнитьЗначенияСвойств(ФильтрованныеЗависимости.Добавить(), Зависимость); + КонецЕсли; + КонецЦикла; + + Утверждения.ПроверитьРавенство(2, ФильтрованныеЗависимости.Количество(), "С флагом dev должны быть обе зависимости"); + + // Проверяем, что обе зависимости присутствуют + ИменаЗависимостей = Новый Массив; + Для Каждого Зависимость Из ФильтрованныеЗависимости Цикл + ИменаЗависимостей.Добавить(Зависимость.ИмяПакета); + КонецЦикла; + + Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("regular-dep") <> Неопределено, "Должна присутствовать обычная зависимость"); + Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("dev-dep") <> Неопределено, "Должна присутствовать dev зависимость"); + + // Тест 3: Dev зависимости не должны устанавливаться на вложенных уровнях + УровеньЗависимости = 1; // Имитируем транзитивную зависимость + + ФильтрованныеЗависимости.Очистить(); + + Для Каждого Зависимость Из ВсеЗависимости Цикл + Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда + ЗаполнитьЗначенияСвойств(ФильтрованныеЗависимости.Добавить(), Зависимость); + КонецЕсли; + КонецЦикла; + + Утверждения.ПроверитьРавенство(1, ФильтрованныеЗависимости.Количество(), "На уровне 1 dev зависимости не должны устанавливаться"); + Утверждения.ПроверитьРавенство("regular-dep", ФильтрованныеЗависимости[0].ИмяПакета, "На уровне 1 должна остаться только обычная зависимость"); + +КонецПроцедуры + +Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт + + ЮТест = Тестирование; + + Тесты = Новый Массив; + Тесты.Добавить("ТестДолжен_ФильтроватьЗависимостиПоФлагуРазработчика"); + + Возврат Тесты; + +КонецФункции + +Процедура ПередЗапускомТеста() Экспорт +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт +КонецПроцедуры \ No newline at end of file From cb55898a319cfd1820fd4e9374a3ae8424127ef2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 18:20:09 +0000 Subject: [PATCH 4/9] Remove problematic test file and verify fix works correctly Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com> --- tests/dev-dependencies-test.os | 100 --------------------------------- 1 file changed, 100 deletions(-) delete mode 100644 tests/dev-dependencies-test.os diff --git a/tests/dev-dependencies-test.os b/tests/dev-dependencies-test.os deleted file mode 100644 index acd7558..0000000 --- a/tests/dev-dependencies-test.os +++ /dev/null @@ -1,100 +0,0 @@ -// Comprehensive test for developer dependencies functionality -// This test verifies the fix for issue where opm install -l --dev was not installing developer dependencies - -#Использовать "/home/runner/work/opm/opm/src/core" -#Использовать "1testrunner" -#Использовать "asserts" - -Процедура ТестДолжен_ФильтроватьЗависимостиПоФлагуРазработчика() Экспорт - - // Создаем тестовый манифест с обычными и dev зависимостями - Манифест = Новый ОписаниеПакета(); - Манифест.Имя("test-package") - .Версия("1.0.0") - .ВерсияСреды("1.9.2") - .ЗависитОт("regular-dep", "1.0.0") - .РазработкаЗависитОт("dev-dep", "1.0.0"); - - // Создаем менеджер установки в локальном режиме - МенеджерУстановки = Новый МенеджерУстановкиПакетов(РежимУстановкиПакетов.Локально); - - // Тест 1: Без флага dev - должна устанавливаться только обычная зависимость - МенеджерУстановки.УстанавливатьЗависимостиРазработчика(Ложь); - - // Имитируем фильтрацию, которая происходит в РазрешитьЗависимостиПакета - ВсеЗависимости = Манифест.Зависимости(); - Утверждения.ПроверитьРавенство(2, ВсеЗависимости.Количество(), "Всего должно быть 2 зависимости"); - - // Фильтруем как в исправленном коде - УстанавливатьЗависимостиРазработчика = Ложь; - УровеньЗависимости = 0; - - ФильтрованныеЗависимости = Новый ТаблицаЗначений; - Для Каждого Колонка Из ВсеЗависимости.Колонки Цикл - ФильтрованныеЗависимости.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения); - КонецЦикла; - - Для Каждого Зависимость Из ВсеЗависимости Цикл - Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда - ЗаполнитьЗначенияСвойств(ФильтрованныеЗависимости.Добавить(), Зависимость); - КонецЕсли; - КонецЦикла; - - Утверждения.ПроверитьРавенство(1, ФильтрованныеЗависимости.Количество(), "Без флага dev должна быть только 1 зависимость"); - Утверждения.ПроверитьРавенство("regular-dep", ФильтрованныеЗависимости[0].ИмяПакета, "Должна остаться только обычная зависимость"); - Утверждения.ПроверитьРавенство(Ложь, ФильтрованныеЗависимости[0].ДляРазработки, "Обычная зависимость должна иметь ДляРазработки = Ложь"); - - // Тест 2: С флагом dev - должны устанавливаться обе зависимости - УстанавливатьЗависимостиРазработчика = Истина; - - ФильтрованныеЗависимости.Очистить(); - - Для Каждого Зависимость Из ВсеЗависимости Цикл - Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда - ЗаполнитьЗначенияСвойств(ФильтрованныеЗависимости.Добавить(), Зависимость); - КонецЕсли; - КонецЦикла; - - Утверждения.ПроверитьРавенство(2, ФильтрованныеЗависимости.Количество(), "С флагом dev должны быть обе зависимости"); - - // Проверяем, что обе зависимости присутствуют - ИменаЗависимостей = Новый Массив; - Для Каждого Зависимость Из ФильтрованныеЗависимости Цикл - ИменаЗависимостей.Добавить(Зависимость.ИмяПакета); - КонецЦикла; - - Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("regular-dep") <> Неопределено, "Должна присутствовать обычная зависимость"); - Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("dev-dep") <> Неопределено, "Должна присутствовать dev зависимость"); - - // Тест 3: Dev зависимости не должны устанавливаться на вложенных уровнях - УровеньЗависимости = 1; // Имитируем транзитивную зависимость - - ФильтрованныеЗависимости.Очистить(); - - Для Каждого Зависимость Из ВсеЗависимости Цикл - Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда - ЗаполнитьЗначенияСвойств(ФильтрованныеЗависимости.Добавить(), Зависимость); - КонецЕсли; - КонецЦикла; - - Утверждения.ПроверитьРавенство(1, ФильтрованныеЗависимости.Количество(), "На уровне 1 dev зависимости не должны устанавливаться"); - Утверждения.ПроверитьРавенство("regular-dep", ФильтрованныеЗависимости[0].ИмяПакета, "На уровне 1 должна остаться только обычная зависимость"); - -КонецПроцедуры - -Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт - - ЮТест = Тестирование; - - Тесты = Новый Массив; - Тесты.Добавить("ТестДолжен_ФильтроватьЗависимостиПоФлагуРазработчика"); - - Возврат Тесты; - -КонецФункции - -Процедура ПередЗапускомТеста() Экспорт -КонецПроцедуры - -Процедура ПослеЗапускаТеста() Экспорт -КонецПроцедуры \ No newline at end of file From 50104d408a8786b3b5dd1eeaa7640cec7b9b94dc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 18:34:07 +0000 Subject: [PATCH 5/9] =?UTF-8?q?Refactor=20dependency=20filtering=20to=20us?= =?UTF-8?q?e=20=D0=9D=D0=B0=D0=B9=D1=82=D0=B8=D0=A1=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D0=B8()=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com> --- ...20\272\320\265\321\202\320\276\320\262.os" | 56 ++++++++++--------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git "a/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index 645b381..065ae14 100644 --- "a/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -208,20 +208,22 @@ КонецЕсли; // Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика - Зависимости = Новый ТаблицаЗначений; - Для Каждого Колонка Из ВсеЗависимости.Колонки Цикл - Зависимости.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения); - КонецЦикла; + // Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0) + Отбор = Новый Структура(); + Отбор.Вставить("ДляРазработки", Ложь); - Для Каждого Зависимость Из ВсеЗависимости Цикл - // Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0) - Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда - ЗаполнитьЗначенияСвойств(Зависимости.Добавить(), Зависимость); - Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки); - Иначе - Лог.Отладка("Пропущена зависимость разработчика: %1 (УстанавливатьЗависимостиРазработчика: %2, УровеньЗависимости: %3)", - Зависимость.ИмяПакета, УстанавливатьЗависимостиРазработчика, УровеньЗависимости); - КонецЕсли; + Зависимости = ВсеЗависимости.НайтиСтроки(Отбор); + + Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда + Отбор.ДляРазработки = Истина; + ЗависимостиРазработчика = ВсеЗависимости.НайтиСтроки(Отбор); + Для Каждого Зависимость Из ЗависимостиРазработчика Цикл + Зависимости.Добавить(Зависимость); + КонецЦикла; + КонецЕсли; + + Для Каждого Зависимость Из Зависимости Цикл + Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки); КонецЦикла; УстановленныеПакеты = ПолучитьУстановленныеПакеты(); @@ -256,20 +258,22 @@ КонецЕсли; // Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика - Зависимости = Новый ТаблицаЗначений; - Для Каждого Колонка Из ВсеЗависимости.Колонки Цикл - Зависимости.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения); - КонецЦикла; + // Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0) + Отбор = Новый Структура(); + Отбор.Вставить("ДляРазработки", Ложь); - // Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0) - Для Каждого Зависимость Из ВсеЗависимости Цикл - Если Не Зависимость.ДляРазработки ИЛИ (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда - ЗаполнитьЗначенияСвойств(Зависимости.Добавить(), Зависимость); - Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки); - Иначе - Лог.Отладка("Пропущена зависимость разработчика: %1 (УстанавливатьЗависимостиРазработчика: %2, УровеньЗависимости: %3)", - Зависимость.ИмяПакета, УстанавливатьЗависимостиРазработчика, УровеньЗависимости); - КонецЕсли; + Зависимости = ВсеЗависимости.НайтиСтроки(Отбор); + + Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда + Отбор.ДляРазработки = Истина; + ЗависимостиРазработчика = ВсеЗависимости.НайтиСтроки(Отбор); + Для Каждого Зависимость Из ЗависимостиРазработчика Цикл + Зависимости.Добавить(Зависимость); + КонецЦикла; + КонецЕсли; + + Для Каждого Зависимость Из Зависимости Цикл + Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки); КонецЦикла; УстановленныеПакеты = ПолучитьУстановленныеПакеты(); From b54c592583e9d31c1de67660807da1f595cf85ec Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 18:46:02 +0000 Subject: [PATCH 6/9] Add comprehensive tests for developer dependencies functionality Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com> --- features/dev-dependencies.feature | 32 +++++ features/step_definitions/shared.os | 46 ++++++ tests/dev-dependencies-test.os | 212 ++++++++++++++++++++++++++++ 3 files changed, 290 insertions(+) create mode 100644 features/dev-dependencies.feature create mode 100644 tests/dev-dependencies-test.os diff --git a/features/dev-dependencies.feature b/features/dev-dependencies.feature new file mode 100644 index 0000000..a1b4b60 --- /dev/null +++ b/features/dev-dependencies.feature @@ -0,0 +1,32 @@ +# language: ru + +Функциональность: Установка зависимостей разработчика + +Как разработчик + Я хочу иметь возможность устанавливать зависимости разработчика + Чтобы иметь доступ к инструментам тестирования и разработки + +Контекст: Подготовка тестового окружения + Допустим Я очищаю параметры команды "opm" в контексте + И Я устанавливаю путь выполнения команды "opm" к текущей библиотеке + И Я создаю временный каталог и сохраняю его в переменной "РабочийКаталог" + И Я создаю тестовый пакет с зависимостями разработчика в переменной "РабочийКаталог" + +Сценарий: Установка только обычных зависимостей без флага --dev + Допустим Я установил рабочий каталог из переменной "РабочийКаталог" + И Я добавляю параметр "install" для команды "opm" + И Я добавляю параметр "--local" для команды "opm" + Когда Я выполняю команду "opm" + Тогда Код возврата команды "opm" равен 0 + И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules" + И В каталоге из переменной "РабочийКаталог" НЕ создается файл или каталог "oscript_modules/asserts" + И В каталоге из переменной "РабочийКаталог" НЕ создается файл или каталог "oscript_modules/1bdd" + +Сценарий: Установка зависимостей разработчика с флагом --dev + Допустим Я установил рабочий каталог из переменной "РабочийКаталог" + И Я добавляю параметр "install" для команды "opm" + И Я добавляю параметр "--local" для команды "opm" + И Я добавляю параметр "--dev" для команды "opm" + Когда Я выполняю команду "opm" + Тогда Код возврата команды "opm" равен 0 + И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules" \ No newline at end of file diff --git a/features/step_definitions/shared.os b/features/step_definitions/shared.os index de87345..c98bdcf 100644 --- a/features/step_definitions/shared.os +++ b/features/step_definitions/shared.os @@ -11,11 +11,13 @@ ВсеШаги.Добавить("ЯУстанавливаюПутьВыполненияКомандыКТекущейБиблиотеке"); ВсеШаги.Добавить("ВКаталогеИзПеременнойСоздаетсяФайлИлиКаталог"); + ВсеШаги.Добавить("ВКаталогеИзПеременнойНЕСоздаетсяФайлИлиКаталог"); ВсеШаги.Добавить("ЯДобавляюПараметрыДляКоманды"); ВсеШаги.Добавить("ЯДобавляюОпциюДляКомандыИзПеременной"); ВсеШаги.Добавить("ЯДобавляюАргументДляКомандыИзПеременной"); ВсеШаги.Добавить("ЯУстанавливаюПеременнуюОкруженияИзПеременной"); ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной"); + ВсеШаги.Добавить("ЯСоздаюТестовыйПакетСЗависимостямиРазработчикаВПеременной"); Возврат ВсеШаги; КонецФункции @@ -126,3 +128,47 @@ Функция КаталогБиблиотеки() Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", ".."); КонецФункции + +//В каталоге из переменной "РабочийКаталог" НЕ создается файл или каталог "oscript_modules/asserts" +Процедура ВКаталогеИзПеременнойНЕСоздаетсяФайлИлиКаталог(Знач ИмяПеременной, Знач ОтносительныйПуть) Экспорт + + Каталог = БДД.ПолучитьИзКонтекста(ИмяПеременной); + ПолныйПуть = ОбъединитьПути(Каталог, ОтносительныйПуть); + + ФайлИлиКаталог = Новый Файл(ПолныйПуть); + Если ФайлИлиКаталог.Существует() Тогда + ВызватьИсключение СтрШаблон("Файл или каталог <%1> не должен существовать, но он существует", ПолныйПуть); + КонецЕсли; + +КонецПроцедуры + +//Я создаю тестовый пакет с зависимостями разработчика в переменной "РабочийКаталог" +Процедура ЯСоздаюТестовыйПакетСЗависимостямиРазработчикаВПеременной(Знач ИмяПеременной) Экспорт + + КаталогПакета = БДД.ПолучитьИзКонтекста(ИмяПеременной); + + // Создаем packagedef с зависимостями разработчика + СодержимоеPackagedef = + "Описание.Имя(""test-dev-deps"") + | .Версия(""1.0.0"") + | .ВерсияСреды(""1.9.2"") + | .ЗависитОт(""strings"", ""0.5.0"") + | .РазработкаЗависитОт(""asserts"", ""1.4.0"") + | .РазработкаЗависитОт(""1bdd"", ""1.15.1"") + | .ВключитьФайл(""src"");"; + + ФайлPackagedef = ОбъединитьПути(КаталогПакета, "packagedef"); + ЗаписьТекста = Новый ЗаписьТекста(ФайлPackagedef, КодировкаТекста.UTF8); + ЗаписьТекста.Записать(СодержимоеPackagedef); + ЗаписьТекста.Закрыть(); + + // Создаем каталог src с тестовым файлом + КаталогSrc = ОбъединитьПути(КаталогПакета, "src"); + СоздатьКаталог(КаталогSrc); + + ФайлТеста = ОбъединитьПути(КаталогSrc, "test.os"); + ЗаписьТекста = Новый ЗаписьТекста(ФайлТеста, КодировкаТекста.UTF8); + ЗаписьТекста.Записать("Процедура ТестоваяПроцедура() Экспорт" + Символы.ПС + "КонецПроцедуры"); + ЗаписьТекста.Закрыть(); + +КонецПроцедуры diff --git a/tests/dev-dependencies-test.os b/tests/dev-dependencies-test.os new file mode 100644 index 0000000..2cecd3e --- /dev/null +++ b/tests/dev-dependencies-test.os @@ -0,0 +1,212 @@ +#Использовать asserts +#Использовать "../src/core" + +Перем юТест; + +Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт + + юТест = Тестирование; + + Тесты = Новый Массив; + + Тесты.Добавить("ТестДолжен_ФильтроватьЗависимостиБезФлагаРазработчика"); + Тесты.Добавить("ТестДолжен_ВключатьЗависимостиРазработчикаСФлагом"); + Тесты.Добавить("ТестДолжен_ИсключатьЗависимостиРазработчикаНаВложенныхУровнях"); + Тесты.Добавить("ТестДолжен_РаботатьСЛокальнымиЗависимостями"); + + Возврат Тесты; + +КонецФункции + +Процедура ПередЗапускомТеста() Экспорт +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт +КонецПроцедуры + +Функция СоздатьТестовыйМанифест() + + Манифест = Новый ОписаниеПакета(); + Манифест.Имя("test-dev-deps") + .Версия("1.0.0") + .ВерсияСреды("1.9.2") + .ЗависитОт("regular-dep1", "1.0.0") + .ЗависитОт("regular-dep2", "2.0.0") + .РазработкаЗависитОт("dev-dep1", "1.0.0") + .РазработкаЗависитОт("dev-dep2", "2.0.0"); + + Возврат Манифест; + +КонецФункции + +Процедура ТестДолжен_ФильтроватьЗависимостиБезФлагаРазработчика() Экспорт + + // Arrange + Манифест = СоздатьТестовыйМанифест(); + МенеджерУстановки = Новый МенеджерУстановкиПакетов(РежимУстановкиПакетов.Локально); + МенеджерУстановки.УстанавливатьЗависимостиРазработчика(Ложь); + + // Act - имитируем логику фильтрации из РазрешитьЗависимостиПакета + ВсеЗависимости = Манифест.Зависимости(); + УстанавливатьЗависимостиРазработчика = Ложь; + УровеньЗависимости = 0; + + // Применяем логику фильтрации как в исправленном коде + Отбор = Новый Структура(); + Отбор.Вставить("ДляРазработки", Ложь); + + Зависимости = ВсеЗависимости.НайтиСтроки(Отбор); + + Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда + Отбор.ДляРазработки = Истина; + ЗависимостиРазработчика = ВсеЗависимости.НайтиСтроки(Отбор); + Для Каждого Зависимость Из ЗависимостиРазработчика Цикл + Зависимости.Добавить(Зависимость); + КонецЦикла; + КонецЕсли; + + // Assert + Утверждения.ПроверитьРавенство(2, Зависимости.Количество(), "Без флага dev должно быть только 2 обычные зависимости"); + + // Проверяем, что включены только обычные зависимости + ИменаЗависимостей = Новый Массив; + Для Каждого Зависимость Из Зависимости Цикл + ИменаЗависимостей.Добавить(Зависимость.ИмяПакета); + Утверждения.ПроверитьЛожь(Зависимость.ДляРазработки, "Все включенные зависимости должны быть обычными"); + КонецЦикла; + + Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("regular-dep1") <> Неопределено, "Должна присутствовать regular-dep1"); + Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("regular-dep2") <> Неопределено, "Должна присутствовать regular-dep2"); + Утверждения.ПроверитьРавенство(Неопределено, ИменаЗависимостей.Найти("dev-dep1"), "Не должна присутствовать dev-dep1"); + Утверждения.ПроверитьРавенство(Неопределено, ИменаЗависимостей.Найти("dev-dep2"), "Не должна присутствовать dev-dep2"); + +КонецПроцедуры + +Процедура ТестДолжен_ВключатьЗависимостиРазработчикаСФлагом() Экспорт + + // Arrange + Манифест = СоздатьТестовыйМанифест(); + МенеджерУстановки = Новый МенеджерУстановкиПакетов(РежимУстановкиПакетов.Локально); + МенеджерУстановки.УстанавливатьЗависимостиРазработчика(Истина); + + // Act - имитируем логику фильтрации из РазрешитьЗависимостиПакета + ВсеЗависимости = Манифест.Зависимости(); + УстанавливатьЗависимостиРазработчика = Истина; + УровеньЗависимости = 0; + + Отбор = Новый Структура(); + Отбор.Вставить("ДляРазработки", Ложь); + + Зависимости = ВсеЗависимости.НайтиСтроки(Отбор); + + Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда + Отбор.ДляРазработки = Истина; + ЗависимостиРазработчика = ВсеЗависимости.НайтиСтроки(Отбор); + Для Каждого Зависимость Из ЗависимостиРазработчика Цикл + Зависимости.Добавить(Зависимость); + КонецЦикла; + КонецЕсли; + + // Assert + Утверждения.ПроверитьРавенство(4, Зависимости.Количество(), "С флагом dev должны быть все зависимости"); + + // Проверяем, что включены все зависимости + ИменаЗависимостей = Новый Массив; + Для Каждого Зависимость Из Зависимости Цикл + ИменаЗависимостей.Добавить(Зависимость.ИмяПакета); + КонецЦикла; + + Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("regular-dep1") <> Неопределено, "Должна присутствовать regular-dep1"); + Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("regular-dep2") <> Неопределено, "Должна присутствовать regular-dep2"); + Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("dev-dep1") <> Неопределено, "Должна присутствовать dev-dep1"); + Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("dev-dep2") <> Неопределено, "Должна присутствовать dev-dep2"); + +КонецПроцедуры + +Процедура ТестДолжен_ИсключатьЗависимостиРазработчикаНаВложенныхУровнях() Экспорт + + // Arrange + Манифест = СоздатьТестовыйМанифест(); + + // Act - имитируем логику фильтрации на уровне 1 (транзитивные зависимости) + ВсеЗависимости = Манифест.Зависимости(); + УстанавливатьЗависимостиРазработчика = Истина; + УровеньЗависимости = 1; // Транзитивная зависимость + + Отбор = Новый Структура(); + Отбор.Вставить("ДляРазработки", Ложь); + + Зависимости = ВсеЗависимости.НайтиСтроки(Отбор); + + Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда + Отбор.ДляРазработки = Истина; + ЗависимостиРазработчика = ВсеЗависимости.НайтиСтроки(Отбор); + Для Каждого Зависимость Из ЗависимостиРазработчика Цикл + Зависимости.Добавить(Зависимость); + КонецЦикла; + КонецЕсли; + + // Assert + Утверждения.ПроверитьРавенство(2, Зависимости.Количество(), "На уровне 1 dev зависимости не должны устанавливаться"); + + // Проверяем, что включены только обычные зависимости + ИменаЗависимостей = Новый Массив; + Для Каждого Зависимость Из Зависимости Цикл + ИменаЗависимостей.Добавить(Зависимость.ИмяПакета); + Утверждения.ПроверитьЛожь(Зависимость.ДляРазработки, "На уровне 1 должны быть только обычные зависимости"); + КонецЦикла; + + Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("regular-dep1") <> Неопределено, "Должна присутствовать regular-dep1"); + Утверждения.ПроверитьИстину(ИменаЗависимостей.Найти("regular-dep2") <> Неопределено, "Должна присутствовать regular-dep2"); + Утверждения.ПроверитьРавенство(Неопределено, ИменаЗависимостей.Найти("dev-dep1"), "Не должна присутствовать dev-dep1"); + Утверждения.ПроверитьРавенство(Неопределено, ИменаЗависимостей.Найти("dev-dep2"), "Не должна присутствовать dev-dep2"); + +КонецПроцедуры + +Процедура ТестДолжен_РаботатьСЛокальнымиЗависимостями() Экспорт + + // Arrange + Манифест = СоздатьТестовыйМанифест(); + МенеджерУстановки = Новый МенеджерУстановкиПакетов(РежимУстановкиПакетов.Локально); + МенеджерУстановки.УстанавливатьЗависимостиРазработчика(Истина); + + // Act - тестируем логику РазрешитьЗависимостиПакетаЛокально + ВсеЗависимости = Манифест.Зависимости(); + УстанавливатьЗависимостиРазработчика = Истина; + УровеньЗависимости = 0; + + // Применяем ту же логику фильтрации + Отбор = Новый Структура(); + Отбор.Вставить("ДляРазработки", Ложь); + + Зависимости = ВсеЗависимости.НайтиСтроки(Отбор); + + Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда + Отбор.ДляРазработки = Истина; + ЗависимостиРазработчика = ВсеЗависимости.НайтиСтроки(Отбор); + Для Каждого Зависимость Из ЗависимостиРазработчика Цикл + Зависимости.Добавить(Зависимость); + КонецЦикла; + КонецЕсли; + + // Assert + Утверждения.ПроверитьРавенство(4, Зависимости.Количество(), "Локальные зависимости должны включать все зависимости с флагом dev"); + + // Проверяем содержимое + ОбычныеЗависимости = 0; + ЗависимостиРазработчика = 0; + + Для Каждого Зависимость Из Зависимости Цикл + Если Зависимость.ДляРазработки Тогда + ЗависимостиРазработчика = ЗависимостиРазработчика + 1; + Иначе + ОбычныеЗависимости = ОбычныеЗависимости + 1; + КонецЕсли; + КонецЦикла; + + Утверждения.ПроверитьРавенство(2, ОбычныеЗависимости, "Должно быть 2 обычные зависимости"); + Утверждения.ПроверитьРавенство(2, ЗависимостиРазработчика, "Должно быть 2 зависимости разработчика"); + +КонецПроцедуры + +Логирование.ПолучитьЛог("oscript.app.opm").УстановитьУровень(УровниЛога.Отладка); \ No newline at end of file From 3d00169b7efbb872aea2c5be5a48dfe1e7a880b7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 18:53:41 +0000 Subject: [PATCH 7/9] Simplify dependency filtering logic as suggested by @nixel2007 Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com> --- ...20\272\320\265\321\202\320\276\320\262.os" | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git "a/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index 065ae14..a4d8579 100644 --- "a/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -210,18 +210,12 @@ // Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика // Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0) Отбор = Новый Структура(); - Отбор.Вставить("ДляРазработки", Ложь); + Если Не (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда + Отбор.Вставить("ДляРазработки", Ложь); + КонецЕсли; Зависимости = ВсеЗависимости.НайтиСтроки(Отбор); - Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда - Отбор.ДляРазработки = Истина; - ЗависимостиРазработчика = ВсеЗависимости.НайтиСтроки(Отбор); - Для Каждого Зависимость Из ЗависимостиРазработчика Цикл - Зависимости.Добавить(Зависимость); - КонецЦикла; - КонецЕсли; - Для Каждого Зависимость Из Зависимости Цикл Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки); КонецЦикла; @@ -260,18 +254,12 @@ // Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика // Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0) Отбор = Новый Структура(); - Отбор.Вставить("ДляРазработки", Ложь); + Если Не (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда + Отбор.Вставить("ДляРазработки", Ложь); + КонецЕсли; Зависимости = ВсеЗависимости.НайтиСтроки(Отбор); - Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда - Отбор.ДляРазработки = Истина; - ЗависимостиРазработчика = ВсеЗависимости.НайтиСтроки(Отбор); - Для Каждого Зависимость Из ЗависимостиРазработчика Цикл - Зависимости.Добавить(Зависимость); - КонецЦикла; - КонецЕсли; - Для Каждого Зависимость Из Зависимости Цикл Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки); КонецЦикла; From 1a8af67053341e85d64a0b6613079a72b97ef530 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 19:45:05 +0000 Subject: [PATCH 8/9] Remove unnecessary debug logging loops Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com> --- ...37\320\260\320\272\320\265\321\202\320\276\320\262.os" | 8 -------- 1 file changed, 8 deletions(-) diff --git "a/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index a4d8579..f3f30f8 100644 --- "a/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -216,10 +216,6 @@ Зависимости = ВсеЗависимости.НайтиСтроки(Отбор); - Для Каждого Зависимость Из Зависимости Цикл - Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки); - КонецЦикла; - УстановленныеПакеты = ПолучитьУстановленныеПакеты(); Для Каждого Зависимость Из Зависимости Цикл @@ -260,10 +256,6 @@ Зависимости = ВсеЗависимости.НайтиСтроки(Отбор); - Для Каждого Зависимость Из Зависимости Цикл - Лог.Отладка("Включена зависимость: %1 (ДляРазработки: %2)", Зависимость.ИмяПакета, Зависимость.ДляРазработки); - КонецЦикла; - УстановленныеПакеты = ПолучитьУстановленныеПакеты(); Для Каждого Зависимость Из Зависимости Цикл From 64f23d11cb659b2ab845557ff308e0fd24552fe4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Sep 2025 19:51:12 +0000 Subject: [PATCH 9/9] Update version from 1.6.2 to 1.6.3 Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com> --- packagedef | 2 +- ...0\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packagedef b/packagedef index ef6a8ad..dc60b50 100644 --- a/packagedef +++ b/packagedef @@ -13,7 +13,7 @@ Константы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюКонстант); ВерсияПродукта = Константы_ЛокальнаяВерсия.ВерсияПродукта; Иначе - ВерсияПродукта = "1.6.2"; + ВерсияПродукта = "1.6.3"; КонецЕсли; Описание.Имя("opm") diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" index 89dbd99..b35119c 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" @@ -24,5 +24,5 @@ ПутьВЗапасномХранилище = "/download/"; ЛокальныйКаталогУстановкиПакетов = "oscript_modules"; ИмяЛога = "oscript.app.opm"; -ВерсияПродукта = "1.6.2"; +ВерсияПродукта = "1.6.3"; ИмяФайлаНастроек = "opm.cfg";