Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Неверный разбор таблицы данных фичи, если в строка таблицы есть число #115

Closed
artbear opened this issue Mar 19, 2017 · 4 comments · Fixed by #156 or #157

Comments

@artbear
Copy link
Owner

artbear commented Mar 19, 2017

Для сценария

Сценарий: Проверка вывода последней команды с помощью таблицы подстрок
    Когда Я выполняю команду "oscript"
    И я не вижу в консоли вывод
        | Строка 1 |

в шаг будет передана значение 1, а не Строка 1

@artbear artbear modified the milestones: 1.4, 1.5 Mar 19, 2017
@artbear artbear modified the milestones: 1.5, 1.6 Oct 19, 2017
@khorevaa
Copy link

Баг, потверждаю!

@artbear artbear modified the milestones: 1.8.0, next Sep 23, 2018
@kuntashov
Copy link

Также возникает проблема, если в качестве значения ячейки таблицы есть дата внутри строкового литерала, например:

Сценарий: Дата внутри строкового литерала

  Когда я передаю таблицу
    | Строка с датой внутри: 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 / Преобразование к типу 'Дата' не поддерживается}

Ошибки во всех случаях - в регулярках. Исправляю.

@kuntashov
Copy link

@artbear У тебя в есть вот такой сценарий в core/ПередачаПараметров.feature:

Сценарий: Использование параметров ЧислоВнутриСтроки

	Когда я передаю параметр число2
	Тогда я получаю параметр с типом "Строка"

С точки зрения синтаксиса Gherkin'а "число2" - не параметр!
Параметром он был бы, если бы был написан как "число2" (в кавычках).
А так это слово из утверждения, ниакой не параметр.
Как параметры трактуются литералы строки (символы внутри кавычек), числовые литералы и литералы даты.

В целом, мне вот это тоже не понятно:

	//Когда я использую 5 как 5число5
	Рез.Вставить("ЧислоИлиСловоСЧислом", Новый РегулярноеВыражение("([а-яё\w]*\d+[а-яё\w]*)|(-?\d+(,\d)*)+"));

Это активно где-то используется?

Если так можно только префикс/суффикс "число" - то ок, надо именно так и захардкодить в регулярке, но тут у тебя регулярка будет трактовать любую строку, содержащую цифру, как число, отбрасывая символьную часть, это не правильно.

Хотелось бы, чтобы все работало согласно спецификации Gherkin или максимально близко.
Прокомментируй, пожалуйста.

kuntashov added a commit to kuntashov/1bdd that referenced this issue Nov 29, 2020
Исправлена ошибка artbear#115: случай, когда число
ошибочно трактовалось как дата.
@artbear
Copy link
Owner Author

artbear commented Nov 30, 2020

@kuntashov я уже не помню, почему был сделан такой отход от стандарта Геркина (

смутно вспоминается, что хотелось универсально сделать отлов параметрах в шагах вида "Когда я добавляю Номенклатура1 в таблицу" - чтобы легче было писать шаги.

не думаю, что такая багофича где-то активно юзается в боевых шагах из 1бдд.

проверю

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment