Skip to content

Commit 8c3953b

Browse files
committed
Finish 0.9.7
2 parents 98c75eb + 58c3d2c commit 8c3953b

File tree

3 files changed

+69
-3
lines changed

3 files changed

+69
-3
lines changed

Diff for: packagedef

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//
55

66
Описание.Имя("cli")
7-
.Версия("0.9.6")
7+
.Версия("0.9.7")
88
.Автор("Khorev Aleksey")
99
.АдресАвтора("khorevaa@gmail.com")
1010
.Описание("Данный пакет облегчает создание консольных приложений на Oscript")

Diff for: src/core/Классы/cmd/ПараметрКоманды.os

+5-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373

7474
ОпределенныйТип = ВстроенныеТипы[Строка(ТипЗначенияПоУмолчанию)];
7575

76-
ТипЗначенияПараметра = ?(ОпределенныйТип = Неопределено, Новый ТипСтрока, ОпределенныйТип);
76+
ТипЗначенияПараметра = ?(ОпределенныйТип = Неопределено, Новый ТипСтрока, Новый (ОпределенныйТип));
7777

7878
УстановленаПользователем = Ложь;
7979
УстановленаИзПеременнойОкружения = Ложь;
@@ -564,6 +564,10 @@
564564

565565
ВстроенныеТипы = Новый Соответствие;
566566

567+
ВстроенныеТипы.Вставить("Булево", Тип("ТипБулево"));
568+
ВстроенныеТипы.Вставить("Число", Тип("ТипЧисло"));
569+
ВстроенныеТипы.Вставить("Строка", Тип("ТипСтрока"));
570+
567571
ВстроенныеТипы.Вставить("ТипБулево", Тип("ТипБулево"));
568572
ВстроенныеТипы.Вставить("ТипЧисло", Тип("ТипЧисло"));
569573
ВстроенныеТипы.Вставить("ТипДатаВремя", Тип("ТипДатаВремя"));

Diff for: tests/КомандаПриложения_test.os

+63-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
// ИменаТестов.Добавить("ТестДолжен_ПроверитьПолучениеЗначенияАргументаПоИмени");
2020
// ИменаТестов.Добавить("ТестДолжен_ПроверитьПолучениеЗначенияОпцииПоИмени");
2121

22-
// ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуЗначенийОпций");
22+
ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуЗначенийОпций");
2323
// ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуМножественныхЗначенийОпций");
2424
// ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуЗначенийАргументов");
2525
// ИменаТестов.Добавить("ТестДолжен_ПроверитьУстановкуМножественныхАргументовОпций");
@@ -79,6 +79,37 @@
7979

8080

8181

82+
КонецПроцедуры
83+
84+
Процедура ТестДолжен_ПроверитьУстановкуЗначенийОпций() Экспорт
85+
86+
Спек = "";
87+
ИмяПроцедурыОбъекта = "КомандаПростыеОпции";
88+
89+
ТестовыеСлучаи = Новый Массив;
90+
91+
ТестовыеСлучаи.Добавить(ТестовыйСлучай("--bool", Спек, "Истина;;0"));
92+
ТестовыеСлучаи.Добавить(ТестовыйСлучай("--string Строка", Спек, "Ложь;Строка;0"));
93+
ТестовыеСлучаи.Добавить(ТестовыйСлучай("--int 42", Спек, "Ложь;;42"));
94+
ТестовыеСлучаи.Добавить(ТестовыйСлучай("--string Строка --bool", Спек, "Истина;Строка;0"));
95+
ТестовыеСлучаи.Добавить(ТестовыйСлучай("--int 42 --bool", Спек, "Истина;;42"));
96+
97+
Для каждого Тест Из ТестовыеСлучаи Цикл
98+
99+
Команда = ВыполнитьКомандаПриложения(Тест.Спек, ИмяПроцедурыОбъекта, Тест.Аргументы);
100+
101+
ЗначениеБулева = Команда.ЗначениеОпции("bool");
102+
ЗначениеСтрока = Команда.ЗначениеОпции("string");
103+
ЗначениеЧисло = Команда.ЗначениеОпции("int");
104+
105+
МассивРезультата = СтрРазделить(Тест.Результат, ";", Истина);
106+
107+
Утверждения.ПроверитьРавенство(ЗначениеБулева, Булево(МассивРезультата[0]), "Результаты должны совпадать" + СтрСоединить(Тест.Аргументы));
108+
Утверждения.ПроверитьРавенство(ЗначениеСтрока, Строка(МассивРезультата[1]), "Результаты должны совпадать" + СтрСоединить(Тест.Аргументы));
109+
Утверждения.ПроверитьРавенство(ЗначениеЧисло, Число(МассивРезультата[2]), "Результаты должны совпадать" + СтрСоединить(Тест.Аргументы));
110+
111+
КонецЦикла;
112+
82113
КонецПроцедуры
83114

84115
Функция АргументыИзСтроки(СтрокаАргументов)
@@ -123,6 +154,30 @@
123154

124155
КонецФункции
125156

157+
Функция ВыполнитьКомандаПриложения(Спек, ИмяПроцедурыОбъекта, Аргументы)
158+
159+
Команда = Новый КомандаПриложения("test", "Тестовая команда", ЭтотОбъект);
160+
161+
ПараметрыВыполнения = Новый Массив;
162+
ПараметрыВыполнения.Добавить(Команда);
163+
164+
ОписаниеКоманды = Делегаты.Создать(ЭтотОбъект, ИмяПроцедурыОбъекта);
165+
ОписаниеКоманды.Исполнить(ПараметрыВыполнения);
166+
167+
Команда.Спек = Спек;
168+
169+
Команда.НачалоЗапуска();
170+
Попытка
171+
Команда.Запуск(Аргументы);
172+
Исключение
173+
Сообщить(ОписаниеОшибки());
174+
Возврат Команда;
175+
КонецПопытки;
176+
177+
Возврат Команда;
178+
179+
КонецФункции
180+
126181
Процедура КомандаСкоростьРаботуКомандыПриложения(Знач ВыполняемаяКоманда) Экспорт
127182

128183
login = ВыполняемаяКоманда.Опция("login", "", "Login for credential, e.g. username or email.").ТСтрока();
@@ -150,6 +205,13 @@
150205

151206
КонецПроцедуры
152207

208+
Процедура КомандаПростыеОпции(Знач ВыполняемаяКоманда) Экспорт
209+
210+
ВыполняемаяКоманда.Опция("bool", Ложь, "Login for credential, e.g. username or email.");
211+
ВыполняемаяКоманда.Опция("string", "", "Realm for credential, e.g. website or WiFi AP name.");
212+
ВыполняемаяКоманда.Опция("int", 0, "Note for credential.");
213+
214+
КонецПроцедуры
153215

154216

155217
Лог = Логирование.ПолучитьЛог("oscript.lib.cli_command");

0 commit comments

Comments
 (0)