From 20bcafba58315fed54bc4055440b87d74e2d2bb9 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Fri, 10 Feb 2017 18:24:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BC=D0=B3=D0=BD=D0=BE=D0=B2=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=BC=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=BE=D0=BC=20?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=D0=B0=20fix=20#21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\274\320\260\320\275\320\264\321\213.os" | 9 ++++ ...4\320\260\320\275\320\264\321\213.feature" | 17 +++++--- ...20\274\320\260\320\275\320\264\320\260.os" | 42 +++++++++++++------ tasks/{exec-feature.os => test-feature.os} | 0 4 files changed, 50 insertions(+), 18 deletions(-) rename tasks/{exec-feature.os => test-feature.os} (100%) diff --git "a/features/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" "b/features/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" index 919e0c0..5e22647 100644 --- "a/features/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" +++ "b/features/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" @@ -15,6 +15,7 @@ ВсеШаги.Добавить("ЯПолучаюИсключениеПриВыполненииКоманды"); ВсеШаги.Добавить("ЯУстанавливаюОжидаемыйДиапазонКодовВозвратаОтДоДляКоманды"); ВсеШаги.Добавить("ЯУстанавливаюПериодОпросаЗавершенияКомандыВМиллисекунду"); + ВсеШаги.Добавить("ЯСнимаюФлагПоказаНемедленногоВыводаКоманды"); Возврат ВсеШаги; КонецФункции @@ -80,6 +81,14 @@ Команда.УстановитьПериодОпросаЗавершения(ТаймаутВМиллисекундах); КонецПроцедуры +//Я снимаю флаг показа немедленного вывода команды "oscript" +Процедура ЯСнимаюФлагПоказаНемедленногоВыводаКоманды(Знач ИмяИлиТекстКоманды) Экспорт + Команда = ПолучитьКомандуИзКонтекста(ИмяИлиТекстКоманды); + + Команда.ПоказыватьВыводНемедленно(Ложь); +КонецПроцедуры + + // { Служебные функции Процедура ВыполнитьКоманду(Знач ИмяИлиТекстКоманды, Знач ИспользуемКомандныйПроцессор = Истина) diff --git "a/features/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature" "b/features/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature" index ae61a79..757405b 100644 --- "a/features/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature" +++ "b/features/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\232\320\276\320\274\320\260\320\275\320\264\321\213.feature" @@ -48,14 +48,19 @@ Когда Я выполняю команду "oscript" Тогда Код возврата команды "oscript" равен 0 -Сценарий: Проверка неправильного диапазона кодов возврата команды - Когда Я устанавливаю ожидаемый диапазон кодов возврата от 1 до 10 для команды "oscript" - Тогда Я получаю исключение при выполнении команды "oscript" - И Код возврата команды "oscript" равен 0 - Сценарий: Выполнение команды c установленным периодом опроса завершения команды Когда Я устанавливаю период опроса завершения команды "oscript" в 1 миллисекунду - # И Я включаю отладку лога с именем "oscript.lib.commands" И Я выполняю команду "oscript" Тогда Вывод команды "oscript" содержит "1Script Execution Engine" И Код возврата команды "oscript" равен 0 + +Сценарий: Выполнение команды c запретом немедленного вывода команды команды + Когда Я снимаю флаг показа немедленного вывода команды "oscript" + И Я выполняю команду "oscript" + Тогда Вывод команды "oscript" содержит "1Script Execution Engine" + И Код возврата команды "oscript" равен 0 + +Сценарий: Проверка неправильного диапазона кодов возврата команды + Когда Я устанавливаю ожидаемый диапазон кодов возврата от 1 до 10 для команды "oscript" + Тогда Я получаю исключение при выполнении команды "oscript" + И Код возврата команды "oscript" равен 0 diff --git "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\320\260.os" "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\320\260.os" index c9ef450..bfb550c 100644 --- "a/src/\320\232\320\276\320\274\320\260\320\275\320\264\320\260.os" +++ "b/src/\320\232\320\276\320\274\320\260\320\275\320\264\320\260.os" @@ -16,6 +16,7 @@ Перем МинимальныйОжидаемыйКодВозврата; Перем МаксимальныйОжидаемыйКодВозврата; Перем ПериодОпросаВМиллисекундах; +Перем НемедленнныйВывод; Перем ЭтоWindows; Перем Лог; @@ -117,6 +118,17 @@ Возврат КодВозврата; КонецФункции +// Управляет мгновенным выводом лога команды +// +// Параметры: +// НемедленныйПоказ - Булевое +// Ложь: показывает вывод после завершения выполнения команды +// Истина: показывает вывод выполняется почти сразу, после появления очередной сообщений от команды +// +Процедура ПоказыватьВыводНемедленно(Знач НемедленныйПоказ) Экспорт + НемедленнныйВывод = НемедленныйПоказ; +КонецПроцедуры + // Установить ожидаемый код возврата // После исполнения команды будет выброшено исключение, если полученный код возврата не совпадает с ожидаемым // @@ -292,21 +304,26 @@ КонецЕсли; Процесс.Запустить(); - Приостановить(ПериодОпросаВМиллисекундах); - Пока НЕ Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные Цикл - Если ПериодОпросаВМиллисекундах <> 0 Тогда - Приостановить(ПериодОпросаВМиллисекундах); - КонецЕсли; + Если НемедленнныйВывод Тогда + Процесс.ОжидатьЗавершения(); + УстановитьВывод(Процесс.ПотокВывода.Прочитать()); + Иначе + Приостановить(ПериодОпросаВМиллисекундах); + Пока НЕ Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные Цикл + Если ПериодОпросаВМиллисекундах <> 0 Тогда + Приостановить(ПериодОпросаВМиллисекундах); + КонецЕсли; - ОчереднаяСтрокаВывода = Процесс.ПотокВывода.ПрочитатьСтроку(); - Лог.Отладка(" %1", ОчереднаяСтрокаВывода); + ОчереднаяСтрокаВывода = Процесс.ПотокВывода.ПрочитатьСтроку(); + Лог.Отладка(" %1", ОчереднаяСтрокаВывода); - СтрокаВывода = "" + ОчереднаяСтрокаВывода + Символы.ПС; - ЗаписьXML.ЗаписатьБезОбработки(СтрокаВывода); - КонецЦикла; + СтрокаВывода = "" + ОчереднаяСтрокаВывода + Символы.ПС; + ЗаписьXML.ЗаписатьБезОбработки(СтрокаВывода); + КонецЦикла; - РезультатРаботыПроцесса = ЗаписьXML.Закрыть(); - УстановитьВывод(РезультатРаботыПроцесса); + РезультатРаботыПроцесса = ЗаписьXML.Закрыть(); + УстановитьВывод(РезультатРаботыПроцесса); + КонецЕсли; КодВозврата = Процесс.КодВозврата; Если ПроверяемКодВозврата Тогда @@ -350,6 +367,7 @@ ОжидаемыйКодВозврата = 0; ПериодОпросаВМиллисекундах = 100; + НемедленнныйВывод = Истина; КонецПроцедуры diff --git a/tasks/exec-feature.os b/tasks/test-feature.os similarity index 100% rename from tasks/exec-feature.os rename to tasks/test-feature.os