Skip to content

Commit

Permalink
Merge branch 'release/1.7.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Jul 24, 2018
2 parents cf5a977 + 56d9c2a commit b0116ab
Show file tree
Hide file tree
Showing 8 changed files with 126 additions and 3 deletions.
33 changes: 33 additions & 0 deletions features/lib/step_definitions/ВыполнениеКоманд.os
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
ВсеШаги.Добавить("ЯВижуВКонсолиСтрокуПодобно");
ВсеШаги.Добавить("ЯНеВижуВКонсолиСтрокуПодобно");
ВсеШаги.Добавить("КодВозвратаРавен");
ВсеШаги.Добавить("ЯЗавершаюРаботуПриложения");

Возврат ВсеШаги;
КонецФункции
Expand Down Expand Up @@ -182,6 +183,11 @@
Ожидаем.Что(Команда.ПолучитьКодВозврата(), "Код возврата").Равно(ОжидаемыйКодВозврата);
КонецПроцедуры

//я завершаю работу приложения "crserver"
Процедура ЯЗавершаюРаботуПриложения(Знач ИмяИсполняемогоФайла) Экспорт
УбитьПриложение(ИмяИсполняемогоФайла);
КонецПроцедуры

// { Служебные функции
Функция ПолучитьКомандуИзКонтекста(Знач ИмяКоманды)
КлючКонтекста = КлючКоманды(ИмяКоманды);
Expand All @@ -202,9 +208,12 @@

Процедура ПроверитьВыводКомандыНаВхождение(Знач Команда, Знач ОжидаемыйВыводКомандыИлиТаблицаЗначений)
ВыводКоманды = Команда.ПолучитьВывод();
ВыводКоманды = ЗаменитьШаблоныВПараметрахКоманды(ВыводКоманды);

ТипПараметра = ТипЗнч(ОжидаемыйВыводКомандыИлиТаблицаЗначений);
Если ТипПараметра = Тип("Строка") Тогда
ОжидаемыйВыводКомандыИлиТаблицаЗначений = ЗаменитьШаблоныВПараметрахКоманды(ОжидаемыйВыводКомандыИлиТаблицаЗначений);

Ожидаем.Что(ВыводКоманды).Содержит(ОжидаемыйВыводКомандыИлиТаблицаЗначений);

ИначеЕсли ТипПараметра = Тип("ТаблицаЗначений") Тогда
Expand All @@ -214,9 +223,12 @@

Процедура ПроверитьВыводКомандыНаОтсутствие(Знач Команда, Знач ОжидаемыйВыводКомандыИлиТаблицаЗначений)
ВыводКоманды = Команда.ПолучитьВывод();
ВыводКоманды = ЗаменитьШаблоныВПараметрахКоманды(ВыводКоманды);

ТипПараметра = ТипЗнч(ОжидаемыйВыводКомандыИлиТаблицаЗначений);
Если ТипПараметра = Тип("Строка") Тогда
ОжидаемыйВыводКомандыИлиТаблицаЗначений = ЗаменитьШаблоныВПараметрахКоманды(ОжидаемыйВыводКомандыИлиТаблицаЗначений);

Ожидаем.Что(ВыводКоманды).Не_().Содержит(ОжидаемыйВыводКомандыИлиТаблицаЗначений);

ИначеЕсли ТипПараметра = Тип("ТаблицаЗначений") Тогда
Expand All @@ -229,6 +241,8 @@
СтрокаРасхождений = "";
Для каждого ЧтоИщем Из ТаблицаИскомыхПодстрок Цикл
СтрокаЧтоИщем = ЧтоИщем[0];
СтрокаЧтоИщем = ЗаменитьШаблоныВПараметрахКоманды(СтрокаЧтоИщем);

Если Найти(СтрокаГдеИщем, СтрокаЧтоИщем) = 0 Тогда
СтрокаРасхождений = СтрШаблон("%1%3 Не найдена подстрока <%2>", СтрокаРасхождений, СтрокаЧтоИщем,
Символы.ПС);
Expand All @@ -246,6 +260,8 @@
СтрокаРасхождений = "";
Для каждого ЧтоИщем Из ТаблицаИскомыхПодстрок Цикл
СтрокаЧтоИщем = ЧтоИщем[0];
СтрокаЧтоИщем = ЗаменитьШаблоныВПараметрахКоманды(СтрокаЧтоИщем);

Если Найти(СтрокаГдеИщем, СтрокаЧтоИщем) <> 0 Тогда
СтрокаРасхождений = СтрШаблон("%1%3 Найдена подстрока <%2>", СтрокаРасхождений, СтрокаЧтоИщем,
Символы.ПС);
Expand Down Expand Up @@ -333,6 +349,23 @@
Возврат Ложь;
КонецФункции // ЗаданПараметрСтатистикиДляКомандыОСкрипт()

Процедура УбитьПриложение(Знач ИмяИсполняемогоФайла) Экспорт

Перем ЭтоWindows;

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;

Если ЭтоWindows Тогда
СтрокаКоманды = "TASKKILL /F /IM %1";
Иначе
СтрокаКоманды = "pkill %1";
КонецЕсли;
СтрокаКоманды = СтрШаблон(СтрокаКоманды, ИмяИсполняемогоФайла);
КодВозврата = -1;
ЗапуститьПриложение(СтрокаКоманды, , Истина, КодВозврата);
КонецПроцедуры

//}

Лог = Логирование.ПолучитьЛог("bdd");
31 changes: 31 additions & 0 deletions features/lib/step_definitions/Пауза.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd

Перем БДД; //контекст фреймворка 1bdd

// Метод выдает список шагов, реализованных в данном файле-шагов
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
БДД = КонтекстФреймворкаBDD;

ВсеШаги = Новый Массив;

ВсеШаги.Добавить("Пауза");

Возврат ВсеШаги;
КонецФункции

// Реализация шагов

// Процедура выполняется перед запуском каждого сценария
Процедура ПередЗапускомСценария(Знач Узел) Экспорт

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

// Процедура выполняется после завершения каждого сценария
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт

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

//Пауза 1
Процедура Пауза(Знач КоличествоСекунд) Экспорт
Приостановить(КоличествоСекунд * 1000);
КонецПроцедуры
43 changes: 43 additions & 0 deletions features/lib/step_definitions/ФайловыеОперации.os
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
ВсеШаги.Добавить("ФайлВРабочемКаталогеНеСодержит");
ВсеШаги.Добавить("ФайлСодержит");
ВсеШаги.Добавить("ФайлНеСодержит");
ВсеШаги.Добавить("ЯУдаляюФайл");

Возврат ВсеШаги;
КонецФункции
Expand Down Expand Up @@ -193,6 +194,8 @@
ИсходныйКаталог = ТекущийКаталог();
КонецЕсли;
Лог.Отладка("Установили ИсходныйКаталог %1", ИсходныйКаталог);

ПутьФайла = ЗаменитьШаблоныВПараметрахКоманды(ПутьФайла);

РегулярноеВыражение = Новый РегулярноеВыражение("[\*,\?]");
ПутьБезРегулярок = Не РегулярноеВыражение.Совпадает(ПутьФайла);
Expand Down Expand Up @@ -287,28 +290,45 @@

//Файл "folder0/file01.txt" в рабочем каталоге содержит "Текст файла"
Процедура ФайлВРабочемКаталогеСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт
ПутьФайла = ЗаменитьШаблоныВПараметрахКоманды(ПутьФайла);

Файл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьФайла));
ПроверитьСодержимоеФайла(Файл, ЧтоИщем);
КонецПроцедуры

//Файл "folder0/file01.txt" в рабочем каталоге не содержит "Не существующий текст"
Процедура ФайлВРабочемКаталогеНеСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт
ПутьФайла = ЗаменитьШаблоныВПараметрахКоманды(ПутьФайла);

Файл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьФайла));
ПроверитьОтсутствиеВФайле(Файл, ЧтоИщем);
КонецПроцедуры

//Файл "folder0/file01.txt" содержит "Текст файла"
Процедура ФайлСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт
ПутьФайла = ЗаменитьШаблоныВПараметрахКоманды(ПутьФайла);

Файл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла));
ПроверитьСодержимоеФайла(Файл, ЧтоИщем);
КонецПроцедуры

//Файл "folder0/file01.txt" не содержит "Не существующий текст"
Процедура ФайлНеСодержит(Знач ПутьФайла, Знач ЧтоИщем) Экспорт
ПутьФайла = ЗаменитьШаблоныВПараметрахКоманды(ПутьФайла);

Файл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла));
ПроверитьОтсутствиеВФайле(Файл, ЧтоИщем);
КонецПроцедуры

//я удаляю файл "<КаталогПроекта>/apache/apache_VDC.conf"
Процедура ЯУдаляюФайл(Знач ПутьФайла) Экспорт
ПутьФайла = ЗаменитьШаблоныВПараметрахКоманды(ПутьФайла);
ПутьФайла = ОбъединитьПути(ТекущийКаталог(), ПутьФайла);
Файл = Новый Файл(ПутьФайла);
Если Файл.Существует() Тогда
УдалитьФайлы(ПутьФайла);
КонецЕсли;
КонецПроцедуры

//{ Служебные методы
Функция РабочийКаталог()
Expand Down Expand Up @@ -341,16 +361,39 @@

Процедура ПроверитьСодержимоеФайла(Знач Файл, Знач ЧтоИщем)
ТекстФайла = ПрочитатьТекстФайла(Файл);
ТекстФайла = ЗаменитьШаблоныВПараметрахКоманды(ТекстФайла);
ЧтоИщем = ЗаменитьШаблоныВПараметрахКоманды(ЧтоИщем);

ОписаниеОшибки = СтрШаблон("Ожидали, что файл <%1> содержит `<%2>`, а это не так!", Файл.ПолноеИмя, ЧтоИщем);
Ожидаем.Что(ТекстФайла, ОписаниеОшибки).Содержит(ЧтоИщем);
КонецПроцедуры

Процедура ПроверитьОтсутствиеВФайле(Знач Файл, Знач ЧтоИщем)
ТекстФайла = ПрочитатьТекстФайла(Файл);
ТекстФайла = ЗаменитьШаблоныВПараметрахКоманды(ТекстФайла);
ЧтоИщем = ЗаменитьШаблоныВПараметрахКоманды(ЧтоИщем);

ОписаниеОшибки = СтрШаблон("Ожидали, что файл <%1> не содержит `<%2>`, а это не так!", Файл.ПолноеИмя, ЧтоИщем);
Ожидаем.Что(ТекстФайла, ОписаниеОшибки).Не_().Содержит(ЧтоИщем);
КонецПроцедуры

// TODO исключить дублирование ЗаменитьШаблоныВПараметрахКоманды из 1bdd
Функция ЗаменитьШаблоныВПараметрахКоманды(Знач ПараметрыКоманды)
КаталогПроекта = БДД.КаталогПроверяемогоПроекта();
РабочийКаталог = РабочийКаталог();

Рез = СтрЗаменить(ПараметрыКоманды, "<КаталогПроекта>", КаталогПроекта);
Рез = СтрЗаменить(Рез, "<РабочийКаталог>", РабочийКаталог);

Рез = СтрЗаменить(Рез, "<КаталогПроектаДвойныеСлеши>", ЗаменитьСлешиНаДвойныеСлеши(КаталогПроекта));
Рез = СтрЗаменить(Рез, "<РабочийКаталогДвойныеСлеши>", ЗаменитьСлешиНаДвойныеСлеши(РабочийКаталог));
Возврат Рез;
КонецФункции

Функция ЗаменитьСлешиНаДвойныеСлеши(Знач Строка)
Рез = СтрЗаменить(Строка, "\", "\\");
Возврат Рез;
КонецФункции
//}

Лог = Логирование.ПолучитьЛог("bdd");
3 changes: 3 additions & 0 deletions features/lib/ВыполнениеКоманд.feature
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,6 @@
Сценарий: Получение кода возврата последней команды
Когда Я выполняю команду "oscript"
Тогда Код возврата равен 0

Сценарий: Завершение приложения
Когда я завершаю работу приложения "НесуществующееПриложение13874.exe"
9 changes: 9 additions & 0 deletions features/lib/Пауза.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# language: ru

Функционал: Приостановка выполнения
Как Пользователь
Я хочу иметь возможность временно останавливать выполнение фич
Чтобы я мог дождаться выполнения внешних команд/задач

Сценарий: Приостановка выполнения
Когда Пауза 1
2 changes: 2 additions & 0 deletions features/lib/ФайловыеОперации.feature
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,5 @@
Когда Я установил рабочий каталог как текущий каталог
Тогда Файл "folder0/file01.txt" содержит "Текст файла"
И Файл "folder0/file01.txt" не содержит "Не существующий текст"
И я удаляю файл "folder0/file01.txt"
И Файл "folder0/file01.txt" не существует
6 changes: 4 additions & 2 deletions src/bdd-exec.os
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#Использовать logos
#Использовать asserts
#Использовать strings
#Использовать fs

Перем Лог;
Перем ЧитательГеркин;
Expand Down Expand Up @@ -69,7 +70,7 @@
// Возвращаемое значение:
// Строка -
// либо каталог, в который входит каталог features, если в полном пути текущего каталога есть features,
// либо текущий каталог, если нету
// либо текущий каталог, если нет
//
// Например, если файл фичи находится по пути `c:\projects\myproject\features\core\my.feature`,
// вернется значение `c:\projects\myproject\`
Expand All @@ -81,7 +82,8 @@
Если Поз > 0 Тогда
Рез = Лев(ПутьКаталога, Поз - 1);
КонецЕсли;
Возврат ОбъединитьПути(ПервичныйТекущийКаталог, Рез);
Рез = ФС.ПолныйПуть( ОбъединитьПути(ПервичныйТекущийКаталог, Рез) );
Возврат Рез;
КонецФункции // КаталогПроверяемогоПроекта()
//}

Expand Down
2 changes: 1 addition & 1 deletion src/Модули/Константы_1bdd.os
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

///////////////////////////////////////////////////////////////

ВерсияПродукта = "1.6.1";
ВерсияПродукта = "1.7.0";

0 comments on commit b0116ab

Please sign in to comment.