/
EvilBeaver
/
OneScript
Обзор
Документация
Войти
/
EvilBeaver
/
OneScript
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
v1.9.4
tests/console.os
150 строк
7 KB
Artem Kuznetsov
test: Убраны лишние кавычки в исполняемой команде и отладочные сообщения.
27 окт 2022, 10:20
27 окт 2022, 10:20
c4f24af
Код
Авторство
О чём код?
Перем юТест; Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт юТест = ЮнитТестирование; ВсеТесты = Новый Массив; ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСтандартныйПотокВводаЭтоПоток"); ВсеТесты.Добавить("ТестДолжен_ПроверитьТаймаутЧтенияСтандартногоПотокВвода"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПередачуДанныхВСкриптЧерезСтандартныйПотокВвода"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПеренаправлениеВывода"); Возврат ВсеТесты; КонецФункции Процедура ТестДолжен_ПроверитьЧтоСтандартныйПотокВводаЭтоПоток() Экспорт ПотокВвода = Консоль.ОткрытьСтандартныйПотокВвода(); юТест.ПроверитьРавенство(Тип("Поток"), ТипЗнч(ПотокВвода), "Ошибка открытия стандартного потока ввода"); КонецПроцедуры Процедура ТестДолжен_ПроверитьТаймаутЧтенияСтандартногоПотокВвода() Экспорт ПутьКОскрипт = ОбъединитьПути(КаталогПрограммы(), "oscript.exe"); #Если Linux Тогда ПутьКОскрипт = "mono " + ПутьКОскрипт; #КонецЕсли КодСкрипта = "ВходящийПоток = Консоль.ОткрытьСтандартныйПотокВвода(); |ВходящийПоток.ТаймаутЧтения = 100; |Чтение = Новый ЧтениеТекста(); |Чтение.Открыть(ВходящийПоток); |Сообщить(СокрЛП(Чтение.Прочитать())); |"; ТекстСкрипта = Новый ТекстовыйДокумент(); ТекстСкрипта.УстановитьТекст(КодСкрипта); ВремФайл = ПолучитьИмяВременногоФайла("os"); ТекстСкрипта.Записать(ВремФайл); ТестовыеДанные = ""; ИсполняемаяКоманда = СтрШаблон("""%1"" ""%2""", ПутьКОскрипт, ВремФайл); #Если Windows Тогда ШаблонЗапуска = "cmd /c ""%1"""; #Иначе ШаблонЗапуска = "sh -c '%1'"; #КонецЕсли ИсполняемаяКоманда = СтрШаблон(ШаблонЗапуска, ИсполняемаяКоманда); Процесс = СоздатьПроцесс(ИсполняемаяКоманда, , Истина); Процесс.Запустить(); МаксимумОжидания = 1000; ИнтервалОжидания = 100; ВсегоОжидание = 0; Пока НЕ Процесс.Завершен Цикл Приостановить(ИнтервалОжидания); ВсегоОжидание = ВсегоОжидание + ИнтервалОжидания; Если ВсегоОжидание >= МаксимумОжидания Тогда Процесс.Завершить(); юТест.ТестПровален("Ошибка чтения пустого стандартного потока ввода. Истекло время ожидания."); КонецЕсли; КонецЦикла; ВыводКоманды = СокрЛП(Процесс.ПотокВывода.Прочитать()); УдалитьФайлы(ВремФайл); юТест.ПроверитьРавенство(ВыводКоманды, ТестовыеДанные, "Ошибка чтения пустого стандартного потока ввода."); КонецПроцедуры Процедура ТестДолжен_ПроверитьПередачуДанныхВСкриптЧерезСтандартныйПотокВвода() Экспорт ПутьКОскрипт = ОбъединитьПути(КаталогПрограммы(), "oscript.exe"); #Если Linux Тогда ПутьКОскрипт = "mono " + ПутьКОскрипт; #КонецЕсли КодСкрипта = "Чтение = Новый ЧтениеТекста(); |Чтение.Открыть(Консоль.ОткрытьСтандартныйПотокВвода()); |Сообщить(СокрЛП(Чтение.Прочитать())); |"; ТекстСкрипта = Новый ТекстовыйДокумент(); ТекстСкрипта.УстановитьТекст(КодСкрипта); ВремФайл = ПолучитьИмяВременногоФайла("os"); ТекстСкрипта.Записать(ВремФайл); ТестовыеДанные = "12346"; ИсполняемаяКоманда = СтрШаблон("echo %1 | %2 %3", ТестовыеДанные, ПутьКОскрипт, ВремФайл); #Если Windows Тогда ШаблонЗапуска = "cmd /c ""%1"""; #Иначе ШаблонЗапуска = "sh -c '%1'"; #КонецЕсли ИсполняемаяКоманда = СтрШаблон(ШаблонЗапуска, ИсполняемаяКоманда); Процесс = СоздатьПроцесс(ИсполняемаяКоманда, , Истина); Процесс.Запустить(); Пока НЕ Процесс.Завершен Цикл Приостановить(100); КонецЦикла; ВыводКоманды = СокрЛП(Процесс.ПотокВывода.Прочитать()); УдалитьФайлы(ВремФайл); юТест.ПроверитьРавенство(ВыводКоманды, ТестовыеДанные, "Ошибка чтения стандартного потока ввода."); КонецПроцедуры Процедура ТестДолжен_ПроверитьПеренаправлениеВывода() Экспорт ВФ = ПолучитьИмяВременногоФайла(); Поток = ФайловыеПотоки.ОткрытьДляЗаписи(ВФ); Консоль.УстановитьПотокВывода(Поток); Попытка Сообщить("Привет мир!"); Исключение // что-то пошло не так Консоль.УстановитьПотокВывода(Консоль.ОткрытьСтандартныйПотокВывода()); ВызватьИсключение; КонецПопытки; Поток.Закрыть(); Консоль.УстановитьПотокВывода(Консоль.ОткрытьСтандартныйПотокВывода()); Чтение = Новый ЧтениеТекста(ВФ, Консоль.КодировкаВыходногоПотока); Текст = Чтение.Прочитать(); Чтение.Закрыть(); УдалитьФайлы(ВФ); юТест.ПроверитьРавенство("Привет мир!", СокрЛП(Текст)); КонецПроцедуры