Skip to content

Commit

Permalink
Merge branch 'feature/steps-duplicate-for-gen-87' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Oct 5, 2016
2 parents f9a24c0 + fdc7e07 commit 9d36795
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 24 deletions.
12 changes: 11 additions & 1 deletion src/bdd-exec.os
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,17 @@
МассивПараметров.Добавить(ЭтотОбъект);
Попытка
МассивОписанийШагов = Рефлектор.ВызватьМетод(ИсполнительШагов, ИмяМетода, МассивПараметров);
Возврат МассивОписанийШагов;

РезМассивОписанийШагов = Новый Массив;
Для каждого АдресШага Из МассивОписанийШагов Цикл
Если Рефлектор.МетодСуществует(ИсполнительШагов, АдресШага) Тогда
РезМассивОписанийШагов.Добавить(АдресШага);
Иначе
Лог.Предупреждение("Пропускаю использование метода шага %1, т.к. в модуле шага нет реализации этого метода, хотя в методе ""%2"" шаг %1 указан.",
АдресШага, ИмяМетода);
КонецЕсли;
КонецЦикла;
Возврат РезМассивОписанийШагов;

Исключение
КонецПопытки;
Expand Down
35 changes: 12 additions & 23 deletions src/bdd-generate.os
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,9 @@
Ожидаем.Что(ДеревоФич, "Ожидали, что дерево фич будет передано как дерево значений, а это не так").ИмеетТип("ДеревоЗначений");

ФайлШагов = ПолучитьФайлШагов(ФайлФичи);
ИсключитьФайлШаговИзБиблиотечныхШагов(НаборБиблиотечныхШагов, ФайлШагов);

НаборШаговФичи = Новый Структура;
ПолучитьНаборШаговФичи(ДеревоФич.Строки[0], НаборБиблиотечныхШагов, НаборШаговФичи);
ПолучитьНаборШаговФичи(ДеревоФич.Строки[0], НаборБиблиотечныхШагов, НаборШаговФичи, ФайлШагов);

Если ЗначениеЗаполнено(НаборШаговФичи) Тогда

Expand All @@ -98,22 +97,6 @@
Возврат Набор;
КонецФункции // ПолучитьНабор()

Процедура ИсключитьФайлШаговИзБиблиотечныхШагов(НаборБиблиотечныхШагов, Знач ФайлШагов)
Если ЗначениеЗаполнено(НаборБиблиотечныхШагов) Тогда
ПолныйПутьФайлаШагов = ФайлШагов.ПолноеИмя;
НаборДляУдаления = Новый Структура;
Для каждого КлючЗначение Из НаборБиблиотечныхШагов Цикл
ОписаниеШага = КлючЗначение.Значение;
Если ОписаниеШага.Файл.ПолноеИмя = ПолныйПутьФайлаШагов Тогда
НаборДляУдаления.Вставить(КлючЗначение.Ключ);
КонецЕсли;
КонецЦикла;
Для каждого КлючЗначение Из НаборДляУдаления Цикл
НаборБиблиотечныхШагов.Удалить(КлючЗначение.Ключ);
КонецЦикла;
КонецЕсли;
КонецПроцедуры

Процедура ПодготовитьКаталогФайловШагов(Знач ФайлФичи, Знач ФайлШагов)
КаталогШагов = Новый Файл(ФайлШагов.Путь);
Если Не КаталогШагов.Существует() Тогда
Expand Down Expand Up @@ -296,9 +279,9 @@
Буфер.Добавить("");
Буфер.Добавить(Символы.Таб + "Возврат ВсеШаги;");
Буфер.Добавить("КонецФункции");
Буфер.Добавить("");

Если ЭтоПервичнаяГенерация Тогда
Буфер.Добавить("");
Буфер.Добавить("// Реализация шагов");
Буфер.Добавить("");
КонецЕсли;
Expand Down Expand Up @@ -372,21 +355,27 @@
КонецПопытки;
КонецПроцедуры

Процедура ПолучитьНаборШаговФичи(Знач Узел, Знач НаборБиблиотечныхШагов, НаборШаговФичи)
Процедура ПолучитьНаборШаговФичи(Знач Узел, Знач НаборБиблиотечныхШагов, НаборШаговФичи, Знач ФайлШагов)
Лог.Отладка("ПолучитьНаборШаговФичи Обхожу узел "+Узел.ТипШага+", "+Узел.Лексема+", <"+Узел.Тело+">, АдресШага "+Узел.АдресШага);

Если Узел.ТипШага = ВозможныеТипыШагов.Шаг Тогда
АдресШага = Узел.АдресШага;
НормализованныйАдресШага = ЧитательГеркин.НормализоватьАдресШага(АдресШага);
ШагНеИзБиблиотеки = Не ЗначениеЗаполнено(НаборБиблиотечныхШагов) ИЛИ Не НаборБиблиотечныхШагов.Свойство(НормализованныйАдресШага);
Если ШагНеИзБиблиотеки И Не НаборШаговФичи.Свойство(НормализованныйАдресШага) Тогда

ОписаниеИсполнителяШагов = Неопределено;
ШагИзБиблиотеки = ЗначениеЗаполнено(НаборБиблиотечныхШагов) И НаборБиблиотечныхШагов.Свойство(НормализованныйАдресШага, ОписаниеИсполнителяШагов);
Если ШагИзБиблиотеки Тогда
ШагИзБиблиотеки = ОписаниеИсполнителяШагов.Файл.ПолноеИмя <> ФайлШагов.ПолноеИмя;
КонецЕсли;

Если Не ШагИзБиблиотеки И Не НаборШаговФичи.Свойство(НормализованныйАдресШага) Тогда
НаборШаговФичи.Вставить(НормализованныйАдресШага, Узел);
Лог.Отладка("Нашел адрес шага для вставки в файл шагов: "+АдресШага+", "+Узел.Лексема+", <"+Узел.Тело+">");
КонецЕсли;
КонецЕсли;

Для Каждого СтрокаДерева Из Узел.Строки Цикл
ПолучитьНаборШаговФичи(СтрокаДерева, НаборБиблиотечныхШагов, НаборШаговФичи);
ПолучитьНаборШаговФичи(СтрокаДерева, НаборБиблиотечныхШагов, НаборШаговФичи, ФайлШагов);
КонецЦикла;

КонецПроцедуры // ПолучитьНаборШаговФичи(РезультатыРазбора)
Expand Down

0 comments on commit 9d36795

Please sign in to comment.