Skip to content

Commit 66e9f35

Browse files
Copilotnixel2007
andauthored
Fix opm install -l --dev not installing developer dependencies and bump version to 1.6.3 (#255)
* Initial plan * Fix opm install -l --dev to properly handle developer dependencies Co-authored-by: nixel2007 <[email protected]> * Add comprehensive tests for developer dependencies fix Co-authored-by: nixel2007 <[email protected]> * Remove problematic test file and verify fix works correctly Co-authored-by: nixel2007 <[email protected]> * Refactor dependency filtering to use НайтиСтроки() method Co-authored-by: nixel2007 <[email protected]> * Add comprehensive tests for developer dependencies functionality Co-authored-by: nixel2007 <[email protected]> * Simplify dependency filtering logic as suggested by @nixel2007 Co-authored-by: nixel2007 <[email protected]> * Remove unnecessary debug logging loops Co-authored-by: nixel2007 <[email protected]> * Update version from 1.6.2 to 1.6.3 Co-authored-by: nixel2007 <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: nixel2007 <[email protected]>
1 parent 719f78d commit 66e9f35

File tree

6 files changed

+314
-6
lines changed

6 files changed

+314
-6
lines changed

features/dev-dependencies.feature

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# language: ru
2+
3+
Функциональность: Установка зависимостей разработчика
4+
5+
Как разработчик
6+
Я хочу иметь возможность устанавливать зависимости разработчика
7+
Чтобы иметь доступ к инструментам тестирования и разработки
8+
9+
Контекст: Подготовка тестового окружения
10+
Допустим Я очищаю параметры команды "opm" в контексте
11+
И Я устанавливаю путь выполнения команды "opm" к текущей библиотеке
12+
И Я создаю временный каталог и сохраняю его в переменной "РабочийКаталог"
13+
И Я создаю тестовый пакет с зависимостями разработчика в переменной "РабочийКаталог"
14+
15+
Сценарий: Установка только обычных зависимостей без флага --dev
16+
Допустим Я установил рабочий каталог из переменной "РабочийКаталог"
17+
И Я добавляю параметр "install" для команды "opm"
18+
И Я добавляю параметр "--local" для команды "opm"
19+
Когда Я выполняю команду "opm"
20+
Тогда Код возврата команды "opm" равен 0
21+
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules"
22+
И В каталоге из переменной "РабочийКаталог" НЕ создается файл или каталог "oscript_modules/asserts"
23+
И В каталоге из переменной "РабочийКаталог" НЕ создается файл или каталог "oscript_modules/1bdd"
24+
25+
Сценарий: Установка зависимостей разработчика с флагом --dev
26+
Допустим Я установил рабочий каталог из переменной "РабочийКаталог"
27+
И Я добавляю параметр "install" для команды "opm"
28+
И Я добавляю параметр "--local" для команды "opm"
29+
И Я добавляю параметр "--dev" для команды "opm"
30+
Когда Я выполняю команду "opm"
31+
Тогда Код возврата команды "opm" равен 0
32+
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules"

features/step_definitions/shared.os

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111

1212
ВсеШаги.Добавить("ЯУстанавливаюПутьВыполненияКомандыКТекущейБиблиотеке");
1313
ВсеШаги.Добавить("ВКаталогеИзПеременнойСоздаетсяФайлИлиКаталог");
14+
ВсеШаги.Добавить("ВКаталогеИзПеременнойНЕСоздаетсяФайлИлиКаталог");
1415
ВсеШаги.Добавить("ЯДобавляюПараметрыДляКоманды");
1516
ВсеШаги.Добавить("ЯДобавляюОпциюДляКомандыИзПеременной");
1617
ВсеШаги.Добавить("ЯДобавляюАргументДляКомандыИзПеременной");
1718
ВсеШаги.Добавить("ЯУстанавливаюПеременнуюОкруженияИзПеременной");
1819
ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной");
20+
ВсеШаги.Добавить("ЯСоздаюТестовыйПакетСЗависимостямиРазработчикаВПеременной");
1921

2022
Возврат ВсеШаги;
2123
КонецФункции
@@ -126,3 +128,47 @@
126128
Функция КаталогБиблиотеки()
127129
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..");
128130
КонецФункции
131+
132+
//В каталоге из переменной "РабочийКаталог" НЕ создается файл или каталог "oscript_modules/asserts"
133+
Процедура ВКаталогеИзПеременнойНЕСоздаетсяФайлИлиКаталог(Знач ИмяПеременной, Знач ОтносительныйПуть) Экспорт
134+
135+
Каталог = БДД.ПолучитьИзКонтекста(ИмяПеременной);
136+
ПолныйПуть = ОбъединитьПути(Каталог, ОтносительныйПуть);
137+
138+
ФайлИлиКаталог = Новый Файл(ПолныйПуть);
139+
Если ФайлИлиКаталог.Существует() Тогда
140+
ВызватьИсключение СтрШаблон("Файл или каталог <%1> не должен существовать, но он существует", ПолныйПуть);
141+
КонецЕсли;
142+
143+
КонецПроцедуры
144+
145+
//Я создаю тестовый пакет с зависимостями разработчика в переменной "РабочийКаталог"
146+
Процедура ЯСоздаюТестовыйПакетСЗависимостямиРазработчикаВПеременной(Знач ИмяПеременной) Экспорт
147+
148+
КаталогПакета = БДД.ПолучитьИзКонтекста(ИмяПеременной);
149+
150+
// Создаем packagedef с зависимостями разработчика
151+
СодержимоеPackagedef =
152+
"Описание.Имя(""test-dev-deps"")
153+
| .Версия(""1.0.0"")
154+
| .ВерсияСреды(""1.9.2"")
155+
| .ЗависитОт(""strings"", ""0.5.0"")
156+
| .РазработкаЗависитОт(""asserts"", ""1.4.0"")
157+
| .РазработкаЗависитОт(""1bdd"", ""1.15.1"")
158+
| .ВключитьФайл(""src"");";
159+
160+
ФайлPackagedef = ОбъединитьПути(КаталогПакета, "packagedef");
161+
ЗаписьТекста = Новый ЗаписьТекста(ФайлPackagedef, КодировкаТекста.UTF8);
162+
ЗаписьТекста.Записать(СодержимоеPackagedef);
163+
ЗаписьТекста.Закрыть();
164+
165+
// Создаем каталог src с тестовым файлом
166+
КаталогSrc = ОбъединитьПути(КаталогПакета, "src");
167+
СоздатьКаталог(КаталогSrc);
168+
169+
ФайлТеста = ОбъединитьПути(КаталогSrc, "test.os");
170+
ЗаписьТекста = Новый ЗаписьТекста(ФайлТеста, КодировкаТекста.UTF8);
171+
ЗаписьТекста.Записать("Процедура ТестоваяПроцедура() Экспорт" + Символы.ПС + "КонецПроцедуры");
172+
ЗаписьТекста.Закрыть();
173+
174+
КонецПроцедуры

packagedef

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

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

src/core/Классы/МенеджерУстановкиПакетов.os

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,20 @@
202202
ВызватьИсключение "УровеньЗависимости не может быть меньше нуля";
203203
КонецЕсли;
204204

205-
Зависимости = Манифест.Зависимости();
206-
Если Зависимости.Количество() = 0 Тогда
205+
ВсеЗависимости = Манифест.Зависимости();
206+
Если ВсеЗависимости.Количество() = 0 Тогда
207207
Возврат;
208208
КонецЕсли;
209209

210+
// Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика
211+
// Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0)
212+
Отбор = Новый Структура();
213+
Если Не (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда
214+
Отбор.Вставить("ДляРазработки", Ложь);
215+
КонецЕсли;
216+
217+
Зависимости = ВсеЗависимости.НайтиСтроки(Отбор);
218+
210219
УстановленныеПакеты = ПолучитьУстановленныеПакеты();
211220

212221
Для Каждого Зависимость Из Зависимости Цикл
@@ -233,11 +242,20 @@
233242

234243
Процедура РазрешитьЗависимостиПакетаЛокально(Манифест, ПутьККаталогуЛокальныхЗависимостей, Знач УровеньЗависимости = 0)
235244

236-
Зависимости = Манифест.Зависимости();
237-
Если Зависимости.Количество() = 0 Тогда
245+
ВсеЗависимости = Манифест.Зависимости();
246+
Если ВсеЗависимости.Количество() = 0 Тогда
238247
Возврат;
239248
КонецЕсли;
240249

250+
// Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика
251+
// Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0)
252+
Отбор = Новый Структура();
253+
Если Не (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда
254+
Отбор.Вставить("ДляРазработки", Ложь);
255+
КонецЕсли;
256+
257+
Зависимости = ВсеЗависимости.НайтиСтроки(Отбор);
258+
241259
УстановленныеПакеты = ПолучитьУстановленныеПакеты();
242260

243261
Для Каждого Зависимость Из Зависимости Цикл

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.6.2";
27+
ВерсияПродукта = "1.6.3";
2828
ИмяФайлаНастроек = "opm.cfg";

0 commit comments

Comments
 (0)