diff --git a/src/cmd/opm.os b/src/cmd/opm.os index dc91f2d..37ed044 100644 --- a/src/cmd/opm.os +++ b/src/cmd/opm.os @@ -18,6 +18,8 @@ Процедура ВыполнитьПриложение() + ПараметрыПриложенияOpm.ПроверитьАргументыКоманднойСтроки(АргументыКоманднойСтроки); + Приложение = Новый КонсольноеПриложение("opm", НСтр("ru='Пакетный менеджер для OneScript';en='Package manager for OneScript'")); Приложение.Версия("v version", КонстантыOpm.ВерсияПродукта); diff --git "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" index 4545a45..034828c 100644 --- "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" +++ "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217Opm.os" @@ -1,6 +1,16 @@ Перем Лог; +Процедура ПроверитьАргументыКоманднойСтроки(Знач АргументыЗапуска) Экспорт + + Для Каждого АргументЗапуска Из АргументыЗапуска Цикл + Если АргументЗапуска = "-all" Тогда + ВызватьИсключение "Комбинация опций -all не поддерживается. Используйте либо --all (все пакеты) либо -al (--all --local - все пакеты в локальный каталог)."; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + Функция ИмяЛогаСистемы() Экспорт Возврат "oscript.app.opm"; КонецФункции diff --git a/tests/cli-args-test.os b/tests/cli-args-test.os new file mode 100644 index 0000000..23d216f --- /dev/null +++ b/tests/cli-args-test.os @@ -0,0 +1,59 @@ +#Использовать asserts +#Использовать "../src/cmd" + +Перем юТест; + +Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт + + юТест = Тестирование; + + ИменаТестов = Новый Массив; + ИменаТестов.Добавить("ТестДолжен_ЗапретитьОпциюМинусAll"); + ИменаТестов.Добавить("ТестДолжен_РазрешитьОпциюДвойнойМинусAll"); + + Возврат ИменаТестов; + +КонецФункции + +Процедура ПередЗапускомТеста() Экспорт +КонецПроцедуры + +Процедура ПослеЗапускаТеста() Экспорт +КонецПроцедуры + +Процедура ТестДолжен_ЗапретитьОпциюМинусAll() Экспорт + + Попытка + ПараметрыПриложенияOpm.ПроверитьАргументыКоманднойСтроки(СоздатьАргументыЗапуска("install", "-all")); + Исключение + ОписаниеОшибки = ИнформацияОбОшибке().Описание; + Если СтрНайти(ОписаниеОшибки, "-all") > 0 И СтрНайти(ОписаниеОшибки, "--all") > 0 Тогда + Возврат; + КонецЕсли; + ВызватьИсключение; + КонецПопытки; + + юТест.ПрерватьТест("Ожидали, что для -all будет выброшено исключение"); + +КонецПроцедуры + +Процедура ТестДолжен_РазрешитьОпциюДвойнойМинусAll() Экспорт + + АргументыЗапуска = СоздатьАргументыЗапуска("install", "--all"); + + ПараметрыПриложенияOpm.ПроверитьАргументыКоманднойСтроки(АргументыЗапуска); + + Утверждения.ПроверитьРавенство(2, АргументыЗапуска.Количество()); + Утверждения.ПроверитьРавенство("--all", АргументыЗапуска[1]); + +КонецПроцедуры + +Функция СоздатьАргументыЗапуска(Знач ПервыйАргумент, Знач ВторойАргумент) + + АргументыЗапуска = Новый Массив; + АргументыЗапуска.Добавить(ПервыйАргумент); + АргументыЗапуска.Добавить(ВторойАргумент); + + Возврат АргументыЗапуска; + +КонецФункции