diff --git a/packagedef b/packagedef index 943d160..2744d12 100644 --- a/packagedef +++ b/packagedef @@ -4,7 +4,7 @@ // Описание.Имя("cli") - .Версия("0.9.6") + .Версия("0.9.7") .Автор("Khorev Aleksey") .АдресАвтора("khorevaa@gmail.com") .Описание("Данный пакет облегчает создание консольных приложений на Oscript") diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" index 79339e6..a119d8a 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" @@ -73,7 +73,7 @@ ОпределенныйТип = ВстроенныеТипы[Строка(ТипЗначенияПоУмолчанию)]; - ТипЗначенияПараметра = ?(ОпределенныйТип = Неопределено, Новый ТипСтрока, ОпределенныйТип); + ТипЗначенияПараметра = ?(ОпределенныйТип = Неопределено, Новый ТипСтрока, Новый (ОпределенныйТип)); УстановленаПользователем = Ложь; УстановленаИзПеременнойОкружения = Ложь; @@ -564,6 +564,10 @@ ВстроенныеТипы = Новый Соответствие; + ВстроенныеТипы.Вставить("Булево", Тип("ТипБулево")); + ВстроенныеТипы.Вставить("Число", Тип("ТипЧисло")); + ВстроенныеТипы.Вставить("Строка", Тип("ТипСтрока")); + ВстроенныеТипы.Вставить("ТипБулево", Тип("ТипБулево")); ВстроенныеТипы.Вставить("ТипЧисло", Тип("ТипЧисло")); ВстроенныеТипы.Вставить("ТипДатаВремя", Тип("ТипДатаВремя")); diff --git "a/tests/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217_test.os" "b/tests/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217_test.os" index c6c4f38..35fa222 100644 --- "a/tests/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217_test.os" +++ "b/tests/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217_test.os" @@ -19,7 +19,7 @@ // ИменаТестов.Добавить("ТестДолжен_ПроверитьПолучениеЗначенияАргументаПоИмени"); // ИменаТестов.Добавить("ТестДолжен_ПроверитьПолучениеЗначенияОпцииПоИмени"); - // ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуЗначенийОпций"); + ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуЗначенийОпций"); // ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуМножественныхЗначенийОпций"); // ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуЗначенийАргументов"); // ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуМножественныхАргументовОпций"); @@ -79,6 +79,37 @@ +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьУстановкуЗначенийОпций() Экспорт + + Спек = ""; + ИмяПроцедурыОбъекта = "КомандаПростыеОпции"; + + ТестовыеСлучаи = Новый Массив; + + ТестовыеСлучаи.Добавить(ТестовыйСлучай("--bool", Спек, "Истина;;0")); + ТестовыеСлучаи.Добавить(ТестовыйСлучай("--string Строка", Спек, "Ложь;Строка;0")); + ТестовыеСлучаи.Добавить(ТестовыйСлучай("--int 42", Спек, "Ложь;;42")); + ТестовыеСлучаи.Добавить(ТестовыйСлучай("--string Строка --bool", Спек, "Истина;Строка;0")); + ТестовыеСлучаи.Добавить(ТестовыйСлучай("--int 42 --bool", Спек, "Истина;;42")); + + Для каждого Тест Из ТестовыеСлучаи Цикл + + Команда = ВыполнитьКомандаПриложения(Тест.Спек, ИмяПроцедурыОбъекта, Тест.Аргументы); + + ЗначениеБулева = Команда.ЗначениеОпции("bool"); + ЗначениеСтрока = Команда.ЗначениеОпции("string"); + ЗначениеЧисло = Команда.ЗначениеОпции("int"); + + МассивРезультата = СтрРазделить(Тест.Результат, ";", Истина); + + Утверждения.ПроверитьРавенство(ЗначениеБулева, Булево(МассивРезультата[0]), "Результаты должны совпадать" + СтрСоединить(Тест.Аргументы)); + Утверждения.ПроверитьРавенство(ЗначениеСтрока, Строка(МассивРезультата[1]), "Результаты должны совпадать" + СтрСоединить(Тест.Аргументы)); + Утверждения.ПроверитьРавенство(ЗначениеЧисло, Число(МассивРезультата[2]), "Результаты должны совпадать" + СтрСоединить(Тест.Аргументы)); + + КонецЦикла; + КонецПроцедуры Функция АргументыИзСтроки(СтрокаАргументов) @@ -123,6 +154,30 @@ КонецФункции +Функция ВыполнитьКомандаПриложения(Спек, ИмяПроцедурыОбъекта, Аргументы) + + Команда = Новый КомандаПриложения("test", "Тестовая команда", ЭтотОбъект); + + ПараметрыВыполнения = Новый Массив; + ПараметрыВыполнения.Добавить(Команда); + + ОписаниеКоманды = Делегаты.Создать(ЭтотОбъект, ИмяПроцедурыОбъекта); + ОписаниеКоманды.Исполнить(ПараметрыВыполнения); + + Команда.Спек = Спек; + + Команда.НачалоЗапуска(); + Попытка + Команда.Запуск(Аргументы); + Исключение + Сообщить(ОписаниеОшибки()); + Возврат Команда; + КонецПопытки; + + Возврат Команда; + +КонецФункции + Процедура КомандаСкоростьРаботуКомандыПриложения(Знач ВыполняемаяКоманда) Экспорт login = ВыполняемаяКоманда.Опция("login", "", "Login for credential, e.g. username or email.").ТСтрока(); @@ -150,6 +205,13 @@ КонецПроцедуры +Процедура КомандаПростыеОпции(Знач ВыполняемаяКоманда) Экспорт + + ВыполняемаяКоманда.Опция("bool", Ложь, "Login for credential, e.g. username or email."); + ВыполняемаяКоманда.Опция("string", "", "Realm for credential, e.g. website or WiFi AP name."); + ВыполняемаяКоманда.Опция("int", 0, "Note for credential."); + +КонецПроцедуры Лог = Логирование.ПолучитьЛог("oscript.lib.cli_command");