Closed artbear closed 3 years ago
Баг, потверждаю!
Также возникает проблема, если в качестве значения ячейки таблицы есть дата внутри строкового литерала, например:
Сценарий: Дата внутри строкового литерала
Когда я передаю таблицу
| Строка с датой внутри: 29.11.2020 |
Тогда в таблице в ячейке "0,0" значение имеет тип "Строка"
и в таблице в ячейке "0,0" указано значение "Строка с датой внутри: 29.11.2020"
Такой сценарий падает, т.к. в шаг будет передана дата "29.11.2020", а не строка "Строка с датой внутри: 29.11.2020"
И третий случай с ошибкой, когда число длинное:
Сценарий: Числа, которые ошибочно трактуются как дата
Когда я передаю таблицу
| 00000001 |
| 1234567890 |
Тогда в таблице в ячейке "0:0" значение имеет тип "Число"
и в таблице в ячейке "0:0" указано значение 1
Тогда в таблице в ячейке "1:0" значение имеет тип "Число"
и в таблице в ячейке "1:0" указано значение 1234567890
Данный сценарий в падает с исключением
ОШИБКА - {Модуль /usr/share/oscript/lib/1bdd/src/gherkin-read.os / Ошибка в строке: 754 / Преобразование к типу 'Дата' не поддерживается}
Ошибки во всех случаях - в регулярках. Исправляю.
@artbear У тебя в есть вот такой сценарий в core/ПередачаПараметров.feature
:
Сценарий: Использование параметров ЧислоВнутриСтроки
Когда я передаю параметр число2
Тогда я получаю параметр с типом "Строка"
С точки зрения синтаксиса Gherkin'а "число2" - не параметр!
Параметром он был бы, если бы был написан как "число2"
(в кавычках).
А так это слово из утверждения, ниакой не параметр.
Как параметры трактуются литералы строки (символы внутри кавычек), числовые литералы и литералы даты.
В целом, мне вот это тоже не понятно:
//Когда я использую 5 как 5число5
Рез.Вставить("ЧислоИлиСловоСЧислом", Новый РегулярноеВыражение("([а-яё\w]*\d+[а-яё\w]*)|(-?\d+(,\d)*)+"));
Это активно где-то используется?
Если так можно только префикс/суффикс "число" - то ок, надо именно так и захардкодить в регулярке, но тут у тебя регулярка будет трактовать любую строку, содержащую цифру, как число, отбрасывая символьную часть, это не правильно.
Хотелось бы, чтобы все работало согласно спецификации Gherkin или максимально близко. Прокомментируй, пожалуйста.
@kuntashov я уже не помню, почему был сделан такой отход от стандарта Геркина (
смутно вспоминается, что хотелось универсально сделать отлов параметрах в шагах вида "Когда я добавляю Номенклатура1 в таблицу" - чтобы легче было писать шаги.
не думаю, что такая багофича где-то активно юзается в боевых шагах из 1бдд.
проверю
Для сценария
в шаг будет передана значение 1, а не
Строка 1