From 2714711dd9209a55a1d84e7df7a06712fd20bd08 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Sat, 17 Nov 2018 14:49:43 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B1=D0=BB=D0=B5=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bdd-generate.os | 45 ++++++++--------- src/gherkin-read.os | 91 ++++++++++++++++++----------------- tasks/test.os | 15 +++--- tests/steps-generate-tests.os | 4 +- 4 files changed, 77 insertions(+), 78 deletions(-) diff --git a/src/bdd-generate.os b/src/bdd-generate.os index f1b8dea..6354c77 100644 --- a/src/bdd-generate.os +++ b/src/bdd-generate.os @@ -29,7 +29,7 @@ // возвращает массив созданных файлов шагов Функция СгенерироватьФайлыШагов(Знач ФайлФичи, Знач ФайлБиблиотек = Неопределено, Знач ИскатьВПодкаталогах = Истина) Экспорт НаборБиблиотечныхШагов = ПолучитьНаборБиблиотечныхШагов(ФайлБиблиотек); - Лог.Отладка("Найдено библиотечных шагов: %1 шт.", + Лог.Отладка("Найдено библиотечных шагов: %1 шт.", ?(ЗначениеЗаполнено(НаборБиблиотечныхШагов), НаборБиблиотечныхШагов.Количество(), "0")); РезМассивФайлов = Новый Массив; @@ -48,7 +48,7 @@ ФайлРеализации = СоздатьФайлРеализацииШагов(ФайлФичи, НаборБиблиотечныхШагов); РезМассивФайлов.Добавить(ФайлРеализации); КонецЕсли; - + Возврат РезМассивФайлов; КонецФункции @@ -75,10 +75,10 @@ .ИмеетТип("ДеревоЗначений"); ФайлШагов = ПолучитьФайлШагов(ФайлФичи); - + НаборШаговФичи = Новый Структура; ПолучитьНаборШаговФичи(ДеревоФич.Строки[0], НаборБиблиотечныхШагов, НаборШаговФичи, ФайлШагов); - + Если ЗначениеЗаполнено(НаборШаговФичи) Тогда Если Не ФайлШагов.Существует() Тогда @@ -145,10 +145,10 @@ КонецЕсли; ЗаписатьОписанияШаговВФайлШагов(ОписаниеЗаписываемогоФайла, НаборШаговФичи); - ЗаписатьОписанияХуковВФайлШагов(ЧитательГеркин.ВозможныеХуки().ПередЗапускомСценария, + ЗаписатьОписанияХуковВФайлШагов(ЧитательГеркин.ВозможныеХуки().ПередЗапускомСценария, "Процедура выполняется перед запуском каждого сценария", ОписаниеЗаписываемогоФайла); - - ЗаписатьОписанияХуковВФайлШагов(ЧитательГеркин.ВозможныеХуки().ПослеЗапускаСценария, + + ЗаписатьОписанияХуковВФайлШагов(ЧитательГеркин.ВозможныеХуки().ПослеЗапускаСценария, "Процедура выполняется после завершения каждого сценария", ОписаниеЗаписываемогоФайла); Если Не ЭтоПервичнаяГенерация Тогда @@ -172,7 +172,7 @@ ЗаписатьБуферВФайл(Буфер, НовыйФайл); КопироватьФайл(НовыйФайл.ПолноеИмя, ФайлШагов.ПолноеИмя); - + МоиВременныеФайлы.УдалитьФайл(НовыйФайл.ПолноеИмя); Лог.Информация("Генерация завершена."); @@ -247,7 +247,7 @@ КонецЦикла; ТаблицаМетодов.Индексы.Добавить("НормализованноеИмяМетода"); - + Для каждого Строка Из ТаблицаМетодов Цикл Лог.Отладка("Получили имя экспортного метода в файле шагов <%1>", Строка.ИмяМетода); КонецЦикла; @@ -275,7 +275,7 @@ Если ОписаниеМетода = Неопределено Тогда ВызватьИсключение СтрШаблон("Не найден метод %2 для файла шагов <%1>", ФайлШагов.ПолноеИмя, ИмяСпецМетода); КонецЕсли; - ВывестиВБуферСтрокиТаблицы(Буфер, ТаблицаМодуляШагов, ОписаниеМетода.НомерСтрокиБлокаДоМетода, + ВывестиВБуферСтрокиТаблицы(Буфер, ТаблицаМодуляШагов, ОписаниеМетода.НомерСтрокиБлокаДоМетода, ОписаниеМетода.НомерСтрокиНачала - 1); Иначе Буфер.Добавить("// Метод выдает список шагов, реализованных в данном файле-шагов"); @@ -313,7 +313,7 @@ Если Не ЭтоПервичнаяГенерация Тогда ОписаниеМетода = НаборМетодовМодуляШагов.Найти(АдресХука, "НормализованноеИмяМетода"); Если ОписаниеМетода <> Неопределено Тогда - ВывестиВБуферСтрокиТаблицы(Буфер, ТаблицаМодуляШагов, ОписаниеМетода.НомерСтрокиБлокаДоМетода, + ВывестиВБуферСтрокиТаблицы(Буфер, ТаблицаМодуляШагов, ОписаниеМетода.НомерСтрокиБлокаДоМетода, ОписаниеМетода.НомерСтрокиНачала - 1); Иначе Возврат; @@ -344,24 +344,25 @@ Продолжить; КонецЕсли; - ВывестиВБуферСтрокиТаблицы(Буфер, ТаблицаМодуляШагов, ОписаниеМетода.НомерСтрокиБлокаДоМетода, + ВывестиВБуферСтрокиТаблицы(Буфер, ТаблицаМодуляШагов, ОписаниеМетода.НомерСтрокиБлокаДоМетода, ОписаниеМетода.НомерСтрокиКонец); КонецЦикла; КонецПроцедуры Процедура ЗаписатьОставшеесяТелоВФайл(ТаблицаМодуляШагов, НаборМетодовМодуляШагов, Буфер) - Ожидаем.Что(НаборМетодовМодуляШагов.Количество(), + Ожидаем.Что(НаборМетодовМодуляШагов.Количество(), "Ожидали, что НаборМетодовМодуляШагов имеет количество > 0, а это не так") .Больше(0); ПоследняяСтрока = НаборМетодовМодуляШагов[НаборМетодовМодуляШагов.Количество() - 1]; - ВывестиВБуферСтрокиТаблицы(Буфер, ТаблицаМодуляШагов, ПоследняяСтрока.НомерСтрокиКонец + 1, + ВывестиВБуферСтрокиТаблицы(Буфер, ТаблицаМодуляШагов, ПоследняяСтрока.НомерСтрокиКонец + 1, ТаблицаМодуляШагов.Количество() - 1); КонецПроцедуры Процедура ЗаписатьБуферВФайл(Буфер, ФайлДляЗаписи) + ЗаписьФайла = Новый ЗаписьТекста(ФайлДляЗаписи.ПолноеИмя, "utf-8"); + Попытка - ЗаписьФайла = Новый ЗаписьТекста(ФайлДляЗаписи.ПолноеИмя, "utf-8"); Для каждого Строка Из Буфер Цикл ЗаписьФайла.ЗаписатьСтроку(Строка); @@ -382,15 +383,15 @@ Если Узел.ТипШага = ВозможныеТипыШагов.Шаг Тогда АдресШага = Узел.АдресШага; НормализованныйАдресШага = ЧитательГеркин.НормализоватьАдресШага(АдресШага); - + ОписаниеИсполнителяШагов = Неопределено; - ШагИзБиблиотеки = ЗначениеЗаполнено(НаборБиблиотечныхШагов) + ШагИзБиблиотеки = ЗначениеЗаполнено(НаборБиблиотечныхШагов) И НаборБиблиотечныхШагов.Свойство(НормализованныйАдресШага, ОписаниеИсполнителяШагов); Если ШагИзБиблиотеки Тогда ШагИзБиблиотеки = ОписаниеИсполнителяШагов.Файл.ПолноеИмя <> ФайлШагов.ПолноеИмя; КонецЕсли; - + Если Не ШагИзБиблиотеки И Не НаборШаговФичи.Свойство(НормализованныйАдресШага) Тогда НаборШаговФичи.Вставить(НормализованныйАдресШага, Узел); Лог.Отладка("Нашел адрес шага для вставки в файл шагов: %1, %2, <%3>", @@ -411,7 +412,7 @@ УзелШага = ОписаниеШага.Значение; АдресШага = УзелШага.АдресШага; Буфер.Добавить(Символы.Таб + "ВсеШаги.Добавить(""" + АдресШага + """);"); - Лог.Отладка("ЗаписатьКодОписанияШаговВБуфер - В НаборШаговФичи добавляю шаг с адресом %1, тело %2", + Лог.Отладка("ЗаписатьКодОписанияШаговВБуфер - В НаборШаговФичи добавляю шаг с адресом %1, тело %2", АдресШага, УзелШага.Тело); КонецЦикла; @@ -452,7 +453,7 @@ Буфер.Добавить(СтрокаДляЗаписи); ШаблонЗаписи = "%1ВызватьИсключение Новый ИнформацияОбОшибке(""Шаг <%3> не реализован"", ""%2"");"; - СтрокаДляЗаписи = СтрШаблон(ШаблонЗаписи, Символы.Таб, + СтрокаДляЗаписи = СтрШаблон(ШаблонЗаписи, Символы.Таб, ЧитательГеркин.ПараметрИсключенияДляЕщеНеРеализованногоШага(), ИмяМетода); Лог.Отладка("СтрокаДляЗаписи <%1>", СтрокаДляЗаписи); @@ -516,13 +517,13 @@ Функция СоздатьРегулярныеВыражения() Рез = Новый Структура; - Рез.Вставить("НачалоЭкспортногоМетода", + Рез.Вставить("НачалоЭкспортногоМетода", Новый РегулярноеВыражение("^\s*(Функция|Процедура)\s+([_\w\dа-яё]+)\s*\(.+(Экспорт)+")); Рез.Вставить("КонецМетода", Новый РегулярноеВыражение("^\s*(КонецФункции|КонецПроцедуры)")); ИмяСпецМетода = ЧитательГеркин.НаименованиеФункцииПолученияСпискаШагов(); - Рез.Вставить("ФункцияПолучитьСписокШагов", + Рез.Вставить("ФункцияПолучитьСписокШагов", Новый РегулярноеВыражение(СтрШаблон("^\s*Функция\s+%1\s*\(.+Экспорт", ИмяСпецМетода))); Возврат Новый ФиксированнаяСтруктура(Рез); diff --git a/src/gherkin-read.os b/src/gherkin-read.os index 13df356..86c544d 100644 --- a/src/gherkin-read.os +++ b/src/gherkin-read.os @@ -146,19 +146,19 @@ Рез = Новый Структура; //TODO добавить возможность единого набора хуков "до выполнения" и "после выполнения" шагов различных типов //Например, перед запуском - для сценариев, шагов - Рез.Вставить("ПередЗапускомСценария", + Рез.Вставить("ПередЗапускомСценария", Новый Структура("АдресШага,ТипШага", "ПередЗапускомСценария", ВозможныеТипыШагов.Сценарий)); - Рез.Вставить("ПослеЗапускаСценария", + Рез.Вставить("ПослеЗапускаСценария", Новый Структура("АдресШага,ТипШага", "ПослеЗапускаСценария", ВозможныеТипыШагов.Сценарий)); ВозможныеХуки = Новый ФиксированнаяСтруктура(Рез); КонецЕсли; - Возврат ВозможныеХуки; + Возврат ВозможныеХуки; КонецФункции // ВозможныеХуки() // Создает пустое дерево фич // // Возвращаемое значение: -// ДеревоЗначений - +// ДеревоЗначений - // Функция СоздатьДеревоФич() Экспорт Рез = Новый ДеревоЗначений; @@ -263,15 +263,15 @@ Процедура ПоказатьДеревоВРежимеОтладки(Узел, Знач Отступ = "", Знач ВыводитьШапку = Истина) Экспорт Если ВыводитьШапку Тогда Лог.Отладка(СтроковыеФункции.ДополнитьСлеваМногострочнуюСтроку(" - | ------------------- Текущее дерево ------------------- + | ------------------- Текущее дерево ------------------- |", Отступ)); КонецЕсли; - + Попытка - Лог.Отладка(СтрШаблон("%4 тип шага %1, лексема %2, тело %3, адрес шага %5", + Лог.Отладка(СтрШаблон("%4 тип шага %1, лексема %2, тело %3, адрес шага %5", Узел.ТипШага, Узел.Лексема, Узел.Тело, Отступ, Узел.АдресШага)); Родитель = Узел.Родитель; - Лог.Отладка(СтрШаблон("%4 родитель тип шага %1, лексема %2, тело %3, адрес шага %5", + Лог.Отладка(СтрШаблон("%4 родитель тип шага %1, лексема %2, тело %3, адрес шага %5", Родитель.ТипШага, Родитель.Лексема, Родитель.Тело, Отступ, Родитель.АдресШага)); Исключение // скрываем ошибки @@ -280,10 +280,10 @@ Для каждого Строка Из Узел.Строки Цикл ПоказатьДеревоВРежимеОтладки(Строка, Отступ + " ", Ложь); КонецЦикла; - + Если ВыводитьШапку Тогда Лог.Отладка(СтроковыеФункции.ДополнитьСлеваМногострочнуюСтроку(" - | ------------------- ------------------- + | ------------------- ------------------- |", Отступ)); КонецЕсли; КонецПроцедуры @@ -322,6 +322,7 @@ ПредыдущиеПараметрыЛексемы = Неопределено; ПредыдущаяЛексема = Неопределено; ДлинаСтрокиНачалаМногострочногоТекста = СтрДлина(ВозможныеТипыНачалаСтроки.МногострочныйТекст); + Язык = Неопределено; Пока Истина Цикл ОчереднаяСтрока = ПолучитьОчереднуюСтрокуФичи(Фича); @@ -343,13 +344,13 @@ Лог.Отладка(" Первый символ строки - это метка. Пропускаю строку"); Продолжить; - ИначеЕсли ПервыйСимвол = ВозможныеТипыНачалаСтроки.Таблица + ИначеЕсли ПервыйСимвол = ВозможныеТипыНачалаСтроки.Таблица И НЕ ПредыдущиеПараметрыЛексемы.ДалееБудутДополнительныеСтроки Тогда Лог.Отладка("Очередная строка фичи <%1>", ОчереднаяСтрока); ПредыдущиеПараметрыЛексемы.ЕстьТелоТаблицы = Истина; ПредыдущиеПараметрыЛексемы.ДопТело = ПолучитьТелоТаблицыДанных(Фича, ОчереднаяСтрока); - + Лог.Отладка("Добавляю таблицу данных как часть предыдущей лексемы. Тело <%1>", ПредыдущиеПараметрыЛексемы.ДопТело); Продолжить; @@ -358,7 +359,7 @@ ПредыдущиеПараметрыЛексемы.ЕстьМногострочнаяСтрока = Истина; - ПраваяЧасть = ПредыдущиеПараметрыЛексемы.ПраваяЧасть + + ПраваяЧасть = ПредыдущиеПараметрыЛексемы.ПраваяЧасть + ?(ПустаяСтрока(ПредыдущиеПараметрыЛексемы.ПраваяЧасть), "", Символы.ПС); ПредыдущиеПараметрыЛексемы.ПраваяЧасть = ПраваяЧасть + ПолучитьМногострочныйТекст(Фича); Лог.Отладка("Добавляю многострочный текст как часть предыдущей лексемы. Тело %1", @@ -371,18 +372,18 @@ Ожидаем.Что(Язык, "Ожидали, что язык фичи " + Язык + " будет установлен в тексте фичи, но это не так").Заполнено(); - ИспользоватьНовуюЛексемуКакЧастьПредыдущейЛексемы = ЗначениеЗаполнено(ПредыдущиеПараметрыЛексемы) + ИспользоватьНовуюЛексемуКакЧастьПредыдущейЛексемы = ЗначениеЗаполнено(ПредыдущиеПараметрыЛексемы) И ПредыдущиеПараметрыЛексемы.ДалееБудутДополнительныеСтроки; ПараметрыЛексемы = НайтиЛексему(ОчереднаяСтрока); - Если ЗначениеЗаполнено(ПараметрыЛексемы) И (НЕ ИспользоватьНовуюЛексемуКакЧастьПредыдущейЛексемы + Если ЗначениеЗаполнено(ПараметрыЛексемы) И (НЕ ИспользоватьНовуюЛексемуКакЧастьПредыдущейЛексемы ИЛИ ПараметрыЛексемы.Лексема <> ВозможныеКлючевыеСлова.Описание) Тогда Лог.Отладка("Использую новую лексему как основную"); ПредыдущиеПараметрыЛексемы = ПараметрыЛексемы; НайденныеЛексемы.Добавить(ПараметрыЛексемы); Иначе Лог.Отладка("Добавляю новую лексему как часть предыдущей лексемы"); - ПраваяЧасть = ПредыдущиеПараметрыЛексемы.ПраваяЧасть + + ПраваяЧасть = ПредыдущиеПараметрыЛексемы.ПраваяЧасть + ?(ПустаяСтрока(ПредыдущиеПараметрыЛексемы.ПраваяЧасть), "", Символы.ПС); ПредыдущиеПараметрыЛексемы.ПраваяЧасть = ПраваяЧасть + ОчереднаяСтрока; КонецЕсли; @@ -425,7 +426,7 @@ //ЛОг.Отладка("Пропускаю лексему <"+Лексема+">, т.к. следующий символ <"+Символ+">"); Продолжить; КонецЕсли; - + КонецЕсли; ПраваяЧасть = СокрЛП(Сред(Строка, ДлинаЛексемы + 1)); @@ -439,7 +440,7 @@ Рез.Вставить("ПраваяЧасть", ПраваяЧасть); Рез.Вставить("ДалееБудутДополнительныеСтроки", ДалееБудутДополнительныеСтроки); - лог.Отладка(СтрШаблон("Нашел лексему <%1>, правая часть <%2>, ДалееБудутДополнительныеСтроки %3", + лог.Отладка(СтрШаблон("Нашел лексему <%1>, правая часть <%2>, ДалееБудутДополнительныеСтроки %3", Рез.Лексема, Рез.ПраваяЧасть, ДалееБудутДополнительныеСтроки)); Возврат Рез; КонецЕсли; @@ -521,7 +522,7 @@ НайденныеПараметры = Неопределено; ПараметрыДляТаблицы = Неопределено; ЕстьПараметрыДляТаблицы = Ложь; - ПраваяЧастьСДобавленнымиКлючамиПараметров = ИзвлечьПараметры(ПараметрыОчереднойЛексемы, НайденныеПараметры, + ПраваяЧастьСДобавленнымиКлючамиПараметров = ИзвлечьПараметры(ПараметрыОчереднойЛексемы, НайденныеПараметры, ПараметрыДляТаблицы, ЕстьПараметрыДляТаблицы); Лог.Отладка("ПраваяЧастьСДобавленнымиКлючамиПараметров %1", ПраваяЧастьСДобавленнымиКлючамиПараметров); @@ -547,13 +548,13 @@ НоваяЛексема = НайденныеЛексемы[Индекс].Лексема; НовыйУровеньЛексемы = УровниЛексем[НоваяЛексема]; - Лог.Отладка("Проверяю следующую лексему <%1>, Индекс %2, уровень <%3>, верхний уровень %4", + Лог.Отладка("Проверяю следующую лексему <%1>, Индекс %2, уровень <%3>, верхний уровень %4", НоваяЛексема, Индекс, НовыйУровеньЛексемы, УровеньЛексемы); Если НовыйУровеньЛексемы = УровеньЛексемы Тогда Продолжить; ИначеЕсли НовыйУровеньЛексемы > УровеньЛексемы Тогда // здесь должны быть равнозначные узлы. Например, сценарий/примеры - Лог.Отладка(СтрШаблон("Создаю подчиненный узел дерева фич, лексема %1, Индекс %2, уровень %3", + Лог.Отладка(СтрШаблон("Создаю подчиненный узел дерева фич, лексема %1, Индекс %2, уровень %3", НоваяЛексема, Индекс, НовыйУровеньЛексемы)); ЗаполнитьДеревоФич(НайденныеЛексемы, НоваяСтрока.Строки, Индекс); Иначе @@ -579,7 +580,7 @@ КонецЕсли; УровеньЛексемыРодителя = Родитель.УровеньЛексемы; КонецЕсли; - КонецЦикла; + КонецЦикла; КонецЕсли; КонецЕсли; @@ -630,10 +631,10 @@ Тело = ВыделитьПараметрыДата(Тело, НайденныеПараметры); Лог.Отладка("Тело после выделения параметров-дат %1", Тело); - + Тело = ВыделитьЧисловыеПараметры(Тело, НайденныеПараметры); Лог.Отладка("Тело после выделения параметров-чисел %1", Тело); - + Возврат Тело; КонецФункции // ВыделитьПростыеЗначенияНеСтроки() @@ -784,7 +785,7 @@ Окончание = Группа.Индекс + Группа.Длина; НовоеТело = Лев(НовоеТело, Начало) + ОписаниеПараметра + Сред(НовоеТело, Окончание + 1); - + Лог.Отладка("Тело после выделения параметра (для подстановки из таблицы) %1", НовоеТело); КонецЦикла; @@ -825,7 +826,7 @@ Для к = 0 По ТабИсточник.Количество() - 1 Цикл СтрокаПараметров = ТабИсточник[к]; ДобавитьПараметр(ТабНазначение, СтрокаПараметров.Тип, СтрокаПараметров.Значение, СтрокаПараметров.Начало); - Лог.Отладка("ДобавитьПараметры %1, тип %2, начало %3", + Лог.Отладка("ДобавитьПараметры %1, тип %2, начало %3", СтрокаПараметров.Значение, СтрокаПараметров.Тип, СтрокаПараметров.Начало); КонецЦикла; КонецПроцедуры @@ -852,7 +853,7 @@ ТаблицаСтрокДереваСоСтруктуройСценария = Новый ТаблицаЗначений; ТаблицаСтрокДереваСоСтруктуройСценария.Колонки.Добавить("СтрокаДерева"); ТаблицаСтрокДереваСоСтруктуройСценария.Колонки.Добавить("НачальныйНомерСтроки"); - + Для Счетчик = 0 По СтрокиДерева.Количество() - 1 Цикл СтрокаДерева = СтрокиДерева[Счетчик]; Если СтрокаДерева.ТипШага = ВозможныеТипыШагов.СтруктураСценария Тогда @@ -892,14 +893,14 @@ Возврат Узел; КонецЕсли; КонецЦикла; - ВызватьИсключение СтрШаблон("Ошибка формата файла-фичи - Для структуры сценария не удалось найти примеры. + ВызватьИсключение СтрШаблон("Ошибка формата файла-фичи - Для структуры сценария не удалось найти примеры. |Название структуры сценария %1", ИсходныйУзел.Тело); КонецФункции // НайтиШагПримеры(Строка) Функция ПолучитьТаблицу(Знач ТекстТаблицы) ЧислоСтрок = СтрЧислоСтрок(ТекстТаблицы); - + ОписаниеОшибки = "Количество строк из таблицы должно быть больше 0, а это не так. Текст %1"; Ожидаем.Что(ЧислоСтрок, СтрШаблон(ОписаниеОшибки, ТекстТаблицы)).Больше(0); @@ -949,7 +950,7 @@ ЗначениеПараметра = НайденныеПараметры[0].Значение; КонецЕсли; - Лог.Отладка("номер строки %3, значение из колонки %1 (для подстановки из таблицы) <%2>", + Лог.Отладка("номер строки %3, значение из колонки %1 (для подстановки из таблицы) <%2>", к, ЗначениеПараметра, НомерСтроки - 1); НоваяСтрока[к] = ЗначениеПараметра; КонецЦикла; @@ -986,18 +987,18 @@ Возврат РезМассив; КонецФункции // ПолучитьНаборИзСтрокиТаблицы() -Функция СоздатьНовыеСтрокиСценариевСПараметрамиИзПримеров(СтрокиДерева, Знач СчетчикСтрокиВДереве, +Функция СоздатьНовыеСтрокиСценариевСПараметрамиИзПримеров(СтрокиДерева, Знач СчетчикСтрокиВДереве, Знач СтрокаДерева, Знач ТаблицаПримеров) МассивНовыхСтрок = Новый Массив; Для каждого СтрокаТаблицыПримеров Из ТаблицаПримеров Цикл НоваяСтрокаДерева = СтрокиДерева.Вставить(СчетчикСтрокиВДереве); СчетчикСтрокиВДереве = СчетчикСтрокиВДереве + 1; - + СкопироватьДерево(НоваяСтрокаДерева, СтрокаДерева); НоваяСтрокаДерева.ТипШага = ВозможныеТипыШагов.Сценарий; НоваяСтрокаДерева.Лексема = ВозможныеКлючевыеСлова.Сценарий; - Лог.Отладка("Заменяю структуру сценария на узел, в котором тип шага %1, лексема <%2>, тело <%3>", + Лог.Отладка("Заменяю структуру сценария на узел, в котором тип шага %1, лексема <%2>, тело <%3>", НоваяСтрокаДерева.ТипШага, НоваяСтрокаДерева.Лексема, НоваяСтрокаДерева.Тело); МассивНовыхСтрок.Добавить(НоваяСтрокаДерева); @@ -1007,7 +1008,7 @@ Возврат МассивНовыхСтрок; КонецФункции // СоздатьНовыеСтрокиСценариевСПараметрамиИзПримеров(Строка, УзелПримеры) -Процедура ЗаменитьПараметрыУзлаНаПараметрыИзСтрокиПримеров(СтрокаДерева, Знач СтрокаТаблицыПримеров, +Процедура ЗаменитьПараметрыУзлаНаПараметрыИзСтрокиПримеров(СтрокаДерева, Знач СтрокаТаблицыПримеров, Знач КолонкиТаблицыПримеров) Если СтрокаДерева.ЕстьПараметрыДляТаблицы Тогда ЗначенияПараметров = Новый Соответствие; @@ -1016,7 +1017,7 @@ ИмяПараметра = Колонка.Заголовок; ЗначенияПараметров.Вставить(ИмяПараметра, СтрокаТаблицыПримеров[ИмяКолонки]); - Лог.Отладка("представление колонки <%3>, значение колонки <%2>, ИмяКолонки из таблицы <%1>, + Лог.Отладка("представление колонки <%3>, значение колонки <%2>, ИмяКолонки из таблицы <%1>, |тело узла - %4 ", ИмяКолонки, СтрокаТаблицыПримеров[ИмяКолонки], ИмяПараметра, СтрокаДерева.Тело); КонецЦикла; @@ -1027,10 +1028,10 @@ ИмяПараметра = Параметр.Значение; Параметр.Значение = ЗначенияПараметров[ИмяПараметра]; - СтрокаДерева.Тело = СтрЗаменить(СтрокаДерева.Тело, + СтрокаДерева.Тело = СтрЗаменить(СтрокаДерева.Тело, "<" + ИмяПараметра + ">", "<" + Параметр.Значение + ">"); - Лог.Отладка("ИмяПараметра из таблицы <%1>, новое значение <%2>, ЗначенияПараметров[ИмяПараметра] <%3>, + Лог.Отладка("ИмяПараметра из таблицы <%1>, новое значение <%2>, ЗначенияПараметров[ИмяПараметра] <%3>, |тело узла - %4, тип %5 ", ИмяПараметра, Параметр.Значение, ЗначенияПараметров[ИмяПараметра], СтрокаДерева.Тело, Параметр.Тип); КонецЦикла; @@ -1040,12 +1041,12 @@ КонецЦикла; КонецПроцедуры -Процедура ВставитьУзлыКонтекстовВУзлыСценариевПодчиненныхКонтексту(СтрокиДерева, Знач СчетчикСтрокиВДереве = 0, +Процедура ВставитьУзлыКонтекстовВУзлыСценариевПодчиненныхКонтексту(СтрокиДерева, Знач СчетчикСтрокиВДереве = 0, Знач УзелКонтекста = Неопределено) Для Счетчик = СчетчикСтрокиВДереве По СтрокиДерева.Количество() - 1 Цикл - + СтрокаДерева = СтрокиДерева[Счетчик]; - Лог.Отладка(" Лексема <%1>, Тело <%2>, уровень <%3>, уровень() %4", + Лог.Отладка(" Лексема <%1>, Тело <%2>, уровень <%3>, уровень() %4", СтрокаДерева.Лексема, СтрокаДерева.Тело, СтрокаДерева.УровеньЛексемы, СтрокаДерева.Уровень()); Если СтрокаДерева.Уровень() > 1 Тогда Прервать; @@ -1064,10 +1065,10 @@ ВставитьУзелКонтекста(МассивСтрокДляВставкиКонтекста, УзелКонтекста); КонецЕсли; КонецЕсли; - + КонецЕсли; КонецЦикла; - + Для каждого СтрокаДерева Из СтрокиДерева Цикл ВставитьУзлыКонтекстовВУзлыСценариевПодчиненныхКонтексту(СтрокаДерева.Строки); КонецЦикла; @@ -1128,7 +1129,7 @@ КонецЕсли; КонецЦикла; КонецЕсли; - Если ОчереднаяСтрока = Неопределено + Если ОчереднаяСтрока = Неопределено или Лев(СокрЛ(ОчереднаяСтрока), ДлинаСтрокиНачалаМногострочногоТекста) = ВозможныеТипыНачалаСтроки.МногострочныйТекст Тогда Прервать; КонецЕсли; @@ -1141,7 +1142,7 @@ Если Прав(МногострочнаяСтрока, 1) = Символы.ПС Тогда МногострочнаяСтрока = Сред(МногострочнаяСтрока, 1, СтрДлина(МногострочнаяСтрока) - 1); КонецЕсли; - МногострочнаяСтрока = ВозможныеТипыНачалаСтроки.МногострочныйТекст + Символы.ПС + МногострочнаяСтрока + МногострочнаяСтрока = ВозможныеТипыНачалаСтроки.МногострочныйТекст + Символы.ПС + МногострочнаяСтрока + Символы.ПС + ВозможныеТипыНачалаСтроки.МногострочныйТекст; Возврат МногострочнаяСтрока; КонецФункции // ПолучитьМногострочныйТекст() @@ -1340,7 +1341,7 @@ Соответствие.Вставить("/", "_"); Соответствие.Вставить("\", "_"); Соответствие.Вставить(":", "_"); - Соответствие.Вставить("-", "_"); + Соответствие.Вставить("-", "_"); Соответствие.Вставить("+", "_"); Соответствие.Вставить("=", "_"); Соответствие.Вставить("№", "_"); diff --git a/tasks/test.os b/tasks/test.os index 93ab660..5fdc0d6 100644 --- a/tasks/test.os +++ b/tasks/test.os @@ -1,14 +1,13 @@ #Использовать ".." -// #Использовать 1bdd #Использовать 1testrunner Функция ПрогнатьТесты() - + Тестер = Новый Тестер; ПутьКТестам = "tests"; ПутьКОтчетуJUnit = "."; - + ПутьКОтчетуJUnit = Новый Файл(ПутьКОтчетуJUnit).ПолноеИмя; РезультатТестирования = Тестер.ТестироватьКаталог( @@ -17,13 +16,11 @@ ); Успешно = РезультатТестирования = 0; - + Возврат Успешно; КонецФункции // ПрогнатьТесты() Функция ПрогнатьФичи(Знач ПутьФич = "features", Знач ПутьОтчетаJUnit = "./bdd-log.xml") - - // ПутьОтчетаJUnit = "./bdd-log.xml"; КаталогФич = ОбъединитьПути(".", ПутьФич); @@ -35,9 +32,9 @@ СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся; Если РезультатыВыполнения.Строки.Количество() > 0 Тогда - + СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); - + ИсполнительБДД.ВывестиИтоговыеРезультатыВыполнения(РезультатыВыполнения, Файл_КаталогФич.ЭтоКаталог()); КонецЕсли; @@ -88,6 +85,6 @@ Сообщить(СтрШаблон("Результат прогона библиотечных фич <%1> |", БиблиотечныеФичиПрошли)); -Если НЕ ТестыПрошли Или НЕ ФичиПрошли или НЕ БиблиотечныеФичиПрошли Тогда +Если НЕ ТестыПрошли Или НЕ ФичиПрошли Или НЕ БиблиотечныеФичиПрошли Тогда ВызватьИсключение "Тестирование завершилось неудачно!"; КонецЕсли; diff --git a/tests/steps-generate-tests.os b/tests/steps-generate-tests.os index 21d4559..78539f9 100644 --- a/tests/steps-generate-tests.os +++ b/tests/steps-generate-tests.os @@ -159,7 +159,7 @@ //////////////////////////////////////////////////////////////////// // Программный интерфейс -Функция Инициализация() +Процедура Инициализация() Лог = Логирование.ПолучитьЛог("bdd-gen-tests"); Лог.УстановитьУровень(УровниЛога.Отладка); @@ -167,7 +167,7 @@ ГенераторШагов = Новый ГенераторШагов; ИсполнительБДД = Новый ИсполнительБДД; -КонецФункции +КонецПроцедуры /////////////////////////////////////////////////////////////////// // Точка входа From 65ad9830c32952ad675e6a94b0bc44d0e6f1979b Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Wed, 20 Feb 2019 14:09:33 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=D1=8B=20<=D0=9A=D0=B0=D1=82=D0=B0?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=D0=9F=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= =?UTF-8?q?=D0=9F=D1=80=D1=8F=D0=BC=D1=8B=D0=B5=D0=A1=D0=BB=D0=B5=D1=88?= =?UTF-8?q?=D0=B8>=20=D0=B8=20<=D0=A0=D0=B0=D0=B1=D0=BE=D1=87=D0=B8=D0=B9?= =?UTF-8?q?=D0=9A=D0=B0=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=D0=9F=D1=80=D1=8F?= =?UTF-8?q?=D0=BC=D1=8B=D0=B5=D0=A1=D0=BB=D0=B5=D1=88=D0=B8>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...77\320\265\321\200\320\260\321\206\320\270\320\270.os" | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git "a/features/lib/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.os" "b/features/lib/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.os" index 44f2a96..9999293 100644 --- "a/features/lib/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.os" +++ "b/features/lib/step_definitions/\320\244\320\260\320\271\320\273\320\276\320\262\321\213\320\265\320\236\320\277\320\265\321\200\320\260\321\206\320\270\320\270.os" @@ -522,6 +522,9 @@ Рез = СтрЗаменить(Рез, "<КаталогПроектаДвойныеСлеши>", ЗаменитьСлешиНаДвойныеСлеши(КаталогПроекта)); Рез = СтрЗаменить(Рез, "<РабочийКаталогДвойныеСлеши>", ЗаменитьСлешиНаДвойныеСлеши(РабочийКаталог)); + + Рез = СтрЗаменить(Рез, "<КаталогПроектаПрямыеСлеши>", ЗаменитьСлешиНаПрямыеСлеши(КаталогПроекта)); + Рез = СтрЗаменить(Рез, "<РабочийКаталогПрямыеСлеши>", ЗаменитьСлешиНаПрямыеСлеши(РабочийКаталог)); Возврат Рез; КонецФункции @@ -529,6 +532,11 @@ Рез = СтрЗаменить(Строка, "\", "\\"); Возврат Рез; КонецФункции + +Функция ЗаменитьСлешиНаПрямыеСлеши(Знач Строка) + Рез = СтрЗаменить(Строка, "\", "/"); + Возврат Рез; +КонецФункции //} Лог = Логирование.ПолучитьЛог("bdd.tests"); From 64a169beacffe609777cb7718471780d6ec95a35 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Wed, 20 Feb 2019 14:11:33 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=A3=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BD=D0=BE=D0=BC=D0=B5=D1=80=20=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=B8=D0=B8=201.9.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...275\321\201\321\202\320\260\320\275\321\202\321\213_1bdd.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213_1bdd.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213_1bdd.os" index 25eca05..e043086 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213_1bdd.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213_1bdd.os" @@ -2,4 +2,4 @@ /////////////////////////////////////////////////////////////// -ВерсияПродукта = "1.8.0"; +ВерсияПродукта = "1.9.0";