From 26dafa011711ba54bcb273a21f4298cb4de01e4b Mon Sep 17 00:00:00 2001 From: Softonik Date: Wed, 4 Jun 2025 22:53:47 +0300 Subject: [PATCH] =?UTF-8?q?+=D0=94=D0=BB=D1=8F=20=D1=80=D1=83=D1=81=D1=81?= =?UTF-8?q?=D0=BA=D0=B8=D1=85=20=D1=81=D1=86=D0=B5=D0=BD=D0=B0=D1=80=D0=B8?= =?UTF-8?q?=D0=B5=D0=B2=20=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B8=D1=80=D1=83?= =?UTF-8?q?=D1=8E=D1=82=D1=81=D1=8F=20=D1=80=D1=83=D1=81=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/snippets.feature | 40 +++++++++++++++++++ internal/formatters/fmt_base.go | 3 +- internal/formatters/undefined_snippets_gen.go | 2 +- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/features/snippets.feature b/features/snippets.feature index e5119f7..6b678ae 100644 --- a/features/snippets.feature +++ b/features/snippets.feature @@ -153,3 +153,43 @@ Feature: undefined step snippets ctx.Step(`^"([^"]*)", which costs £(\d+)$`, whichCosts) } """ + + Scenario: Для русских сценариев генерируются русские функции + Given a feature "undefined.feature" file: + """ + # language: ru + + Функционал: суперфича + + Сценарий: делает что-то полезное + Дано что-то + Когда я делаю ещё что-то + То получается ещё более что-то + """ + When I run feature suite + Then the following steps should be undefined: + """ + получается ещё более что-то + что-то + я делаю ещё что-то + """ + And the undefined step snippets should be: + """ + func получаетсяЕщёБолееЧтото() error { + return godog.ErrPending + } + + func чтото() error { + return godog.ErrPending + } + + func яДелаюЕщёЧтото() error { + return godog.ErrPending + } + + func InitializeScenario(ctx *godog.ScenarioContext) { + ctx.Step(`^получается ещё более что-то$`, получаетсяЕщёБолееЧтото) + ctx.Step(`^что-то$`, чтото) + ctx.Step(`^я делаю ещё что-то$`, яДелаюЕщёЧтото) + } + """ diff --git a/internal/formatters/fmt_base.go b/internal/formatters/fmt_base.go index 16e7f90..9cd1512 100644 --- a/internal/formatters/fmt_base.go +++ b/internal/formatters/fmt_base.go @@ -238,7 +238,8 @@ func (f *Base) Snippets() string { case i != 0: w = strings.Title(w) case len(w) > 0: - w = string(unicode.ToLower(rune(w[0]))) + w[1:] + r := []rune(w) + w = string(unicode.ToLower(r[0])) + string(r[1:]) } words = append(words, w) } diff --git a/internal/formatters/undefined_snippets_gen.go b/internal/formatters/undefined_snippets_gen.go index ff6cd79..ddbebaf 100644 --- a/internal/formatters/undefined_snippets_gen.go +++ b/internal/formatters/undefined_snippets_gen.go @@ -13,7 +13,7 @@ import ( // some snippet formatting regexps var snippetExprCleanup = regexp.MustCompile(`([\/\[\]\(\)\\^\$\.\|\?\*\+\'])`) var snippetExprQuoted = regexp.MustCompile(`(\W|^)"(?:[^"]*)"(\W|$)`) -var snippetMethodName = regexp.MustCompile(`[^a-zA-Z\_\ ]`) +var snippetMethodName = regexp.MustCompile("[^a-zA-Zа-яА-ЯёЁ\\_\\ ]") var snippetNumbers = regexp.MustCompile(`(\d+)`) var snippetHelperFuncs = template.FuncMap{