Skip to content
32 changes: 32 additions & 0 deletions features/dev-dependencies.feature
Original file line number Diff line number Diff line change
@@ -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"
46 changes: 46 additions & 0 deletions features/step_definitions/shared.os
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,13 @@

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

Возврат ВсеШаги;
КонецФункции
Expand Down Expand Up @@ -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);
ЗаписьТекста.Записать("Процедура ТестоваяПроцедура() Экспорт" + Символы.ПС + "КонецПроцедуры");
ЗаписьТекста.Закрыть();

КонецПроцедуры
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
Константы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюКонстант);
ВерсияПродукта = Константы_ЛокальнаяВерсия.ВерсияПродукта;
Иначе
ВерсияПродукта = "1.6.2";
ВерсияПродукта = "1.6.3";
КонецЕсли;

Описание.Имя("opm")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,11 +202,20 @@
ВызватьИсключение "УровеньЗависимости не может быть меньше нуля";
КонецЕсли;

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

// Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика
// Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0)
Отбор = Новый Структура();
Если Не (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда
Отбор.Вставить("ДляРазработки", Ложь);
КонецЕсли;

Зависимости = ВсеЗависимости.НайтиСтроки(Отбор);

УстановленныеПакеты = ПолучитьУстановленныеПакеты();

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

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

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

// Фильтруем зависимости в зависимости от флага УстанавливатьЗависимостиРазработчика
// Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0)
Отбор = Новый Структура();
Если Не (УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0) Тогда
Отбор.Вставить("ДляРазработки", Ложь);
КонецЕсли;

Зависимости = ВсеЗависимости.НайтиСтроки(Отбор);

УстановленныеПакеты = ПолучитьУстановленныеПакеты();

Для Каждого Зависимость Из Зависимости Цикл
Expand Down
2 changes: 1 addition & 1 deletion src/core/Модули/КонстантыOpm.os
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@
ПутьВЗапасномХранилище = "/download/";
ЛокальныйКаталогУстановкиПакетов = "oscript_modules";
ИмяЛога = "oscript.app.opm";
ВерсияПродукта = "1.6.2";
ВерсияПродукта = "1.6.3";
ИмяФайлаНастроек = "opm.cfg";
Loading
Loading