Skip to content

Commit

Permalink
Рефакторинг кода выполнения процесса #26
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Mar 19, 2017
1 parent dbfbca1 commit fcf5233
Showing 1 changed file with 45 additions and 30 deletions.
75 changes: 45 additions & 30 deletions src/Команда.os
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,28 @@
// Число - Код возврата приложения
//
Функция ЗапуститьИПодождать()

СтрокаЗапуска = СформироватьСтрокуЗапускаПроцесса();

ПерехватыватьПотоки = Истина;

Если КодировкаВывода = Неопределено Тогда
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки);
Иначе
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки, КодировкаВывода);
КонецЕсли;
Процесс.Запустить();

ПолучитьВыводПокаПроцессИсполняется(Процесс);

КодВозврата = Процесс.КодВозврата;
ПроверитьКодВозврата(КодВозврата);

Возврат КодВозврата;

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

Функция СформироватьСтрокуЗапускаПроцесса()
Перем ПутьПриложения;

ПутьПриложения = Приложение;
Expand Down Expand Up @@ -293,19 +315,14 @@

СтрокаЗапуска = СтрШаблон(ШаблонЗапуска, СтрокаЗапуска);
КонецЕсли;


Возврат СтрокаЗапуска;
КонецФункции // СформироватьСтрокуЗапускаПроцесса()

Процедура ПолучитьВыводПокаПроцессИсполняется(Процесс)
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();

ПерехватыватьПотоки = Истина;

Если КодировкаВывода = Неопределено Тогда
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки);
Иначе
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки, КодировкаВывода);
КонецЕсли;
Процесс.Запустить();

Если ПериодОпросаВМиллисекундах <> 0 Тогда
Приостановить(ПериодОпросаВМиллисекундах);
КонецЕсли;
Expand All @@ -331,26 +348,7 @@
Лог.Отладка("Длина вывода %1, количество строк %2", СтрДлина(РезультатРаботыПроцесса), СтрЧислоСтрок(РезультатРаботыПроцесса));

УстановитьВывод(РезультатРаботыПроцесса);

КодВозврата = Процесс.КодВозврата;
Если ПроверяемКодВозврата Тогда
Если КодВозврата < МинимальныйОжидаемыйКодВозврата или КодВозврата > МаксимальныйОжидаемыйКодВозврата Тогда
Если МинимальныйОжидаемыйКодВозврата <> МаксимальныйОжидаемыйКодВозврата Тогда
ТекстОшибки = СтрШаблон("Ожидали, что код возврата <%1> команды <%2> совпадет с ожидаемым диапазоном <%3>-<%4>, а это не так",
КодВозврата, Приложение, МинимальныйОжидаемыйКодВозврата, МаксимальныйОжидаемыйКодВозврата);
Иначе
ТекстОшибки = СтрШаблон("Ожидали, что код возврата <%1> команды <%2> совпадет с ожидаемым <%3>, а это не так",
КодВозврата, Приложение, МинимальныйОжидаемыйКодВозврата);
КонецЕсли;
Ожидаем.Что(КодВозврата, ТекстОшибки).
БольшеИлиРавно(МинимальныйОжидаемыйКодВозврата).
МеньшеИлиРавно(МаксимальныйОжидаемыйКодВозврата);
КонецЕсли;
КонецЕсли;

Возврат Процесс.КодВозврата;

КонецФункции
КонецПроцедуры

Функция ОбработатьОчереднуюСтрокуВывода(ПотокПроцесса, ЗаписьXML, Знач ПрефиксДляОтладки)
Рез = "";
Expand All @@ -370,6 +368,23 @@
Возврат Рез;
КонецФункции

Процедура ПроверитьКодВозврата(Знач КодВозврата)
Если ПроверяемКодВозврата Тогда
Если КодВозврата < МинимальныйОжидаемыйКодВозврата или КодВозврата > МаксимальныйОжидаемыйКодВозврата Тогда
Если МинимальныйОжидаемыйКодВозврата <> МаксимальныйОжидаемыйКодВозврата Тогда
ТекстОшибки = СтрШаблон("Ожидали, что код возврата <%1> команды <%2> совпадет с ожидаемым диапазоном <%3>-<%4>, а это не так",
КодВозврата, Приложение, МинимальныйОжидаемыйКодВозврата, МаксимальныйОжидаемыйКодВозврата);
Иначе
ТекстОшибки = СтрШаблон("Ожидали, что код возврата <%1> команды <%2> совпадет с ожидаемым <%3>, а это не так",
КодВозврата, Приложение, МинимальныйОжидаемыйКодВозврата);
КонецЕсли;
Ожидаем.Что(КодВозврата, ТекстОшибки).
БольшеИлиРавно(МинимальныйОжидаемыйКодВозврата).
МеньшеИлиРавно(МаксимальныйОжидаемыйКодВозврата);
КонецЕсли;
КонецЕсли;
КонецПроцедуры

// Инициализация работы библиотеки.
// Задает минимальные настройки.
//
Expand Down

0 comments on commit fcf5233

Please sign in to comment.