From 75a5e0bb056a1752efb075fef21e5786a1f9db9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tighearn=C3=A1n=20Carroll?= Date: Wed, 19 Apr 2023 19:56:18 +0100 Subject: [PATCH 1/8] don't compile regex on create --- go/gherkin_test.go | 31 +++++++++++++++++++++++++++++++ go/matcher.go | 8 ++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 go/gherkin_test.go diff --git a/go/gherkin_test.go b/go/gherkin_test.go new file mode 100644 index 000000000..6bba2cdab --- /dev/null +++ b/go/gherkin_test.go @@ -0,0 +1,31 @@ +package gherkin_test + +import ( + "bytes" + "io" + "testing" + + gherkin "github.com/cucumber/gherkin/go/v26" + "github.com/gofrs/uuid" +) + +func Benchmark_ParseGherkinDocumentForLanguage(b *testing.B) { + eatGodogContents := ` +Feature: eat godogs + In order to be happy + As a hungry gopher + I need to be able to eat godogs + Scenario: Eat 5 out of 12 + Given there are 12 godogs + When I eat 5 + Then there should be 7 remaining` + + r := bytes.NewReader([]byte(eatGodogContents)) + buf := new(bytes.Buffer) + newIDFunc := func() string { + return uuid.Must(uuid.NewV4()).String() + } + for i := 0; i < b.N; i++ { + gherkin.ParseGherkinDocumentForLanguage(io.TeeReader(r, buf), gherkin.DefaultDialect, newIDFunc) + } +} diff --git a/go/matcher.go b/go/matcher.go index fda4e6852..b09006287 100644 --- a/go/matcher.go +++ b/go/matcher.go @@ -19,6 +19,10 @@ const ( DocstringAlternativeSeparator = "```" ) +var ( + defaultLanguagePattern = regexp.MustCompile("^\\s*#\\s*language\\s*:\\s*([a-zA-Z\\-_]+)\\s*$") +) + type matcher struct { gdp DialectProvider defaultLang string @@ -35,7 +39,7 @@ func NewMatcher(gdp DialectProvider) Matcher { defaultLang: DefaultDialect, lang: DefaultDialect, dialect: gdp.GetDialect(DefaultDialect), - languagePattern: regexp.MustCompile("^\\s*#\\s*language\\s*:\\s*([a-zA-Z\\-_]+)\\s*$"), + languagePattern: defaultLanguagePattern, } } @@ -45,7 +49,7 @@ func NewLanguageMatcher(gdp DialectProvider, language string) Matcher { defaultLang: language, lang: language, dialect: gdp.GetDialect(language), - languagePattern: regexp.MustCompile("^\\s*#\\s*language\\s*:\\s*([a-zA-Z\\-_]+)\\s*$"), + languagePattern: defaultLanguagePattern, } } From 21927398a96f206390bb9abd8bd9dbb6353d1d12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tighearn=C3=A1n=20Carroll?= Date: Wed, 19 Apr 2023 20:49:31 +0100 Subject: [PATCH 2/8] remove regex from matcher and add benchmarks --- go/matcher.go | 5 ++--- go/matcher_test.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 go/matcher_test.go diff --git a/go/matcher.go b/go/matcher.go index b09006287..249eb8873 100644 --- a/go/matcher.go +++ b/go/matcher.go @@ -99,8 +99,7 @@ func (m *matcher) MatchTagLine(line *Line) (ok bool, token *Token, err error) { if !line.StartsWith(TagPrefix) { return } - commentDelimiter := regexp.MustCompile(`\s+` + CommentPrefix) - uncommentedLine := commentDelimiter.Split(line.TrimmedLineText, 2)[0] + uncommentedLine := strings.SplitN(line.TrimmedLineText, CommentPrefix, 2)[0] var tags []*LineSpan var column = line.Indent() + 1 @@ -112,7 +111,7 @@ func (m *matcher) MatchTagLine(line *Line) (ok bool, token *Token, err error) { if len(txt) == 0 { continue } - if !regexp.MustCompile(`^\S+$`).MatchString(txt) { + if strings.ContainsAny(txt, "\t\n\f\r ") { location := &Location{line.LineNumber, column} msg := "A tag may not contain whitespace" err = &parseError{msg, location} diff --git a/go/matcher_test.go b/go/matcher_test.go new file mode 100644 index 000000000..2a0e6dd4c --- /dev/null +++ b/go/matcher_test.go @@ -0,0 +1,35 @@ +package gherkin_test + +import ( + "testing" + + gherkin "github.com/cucumber/gherkin/go/v26" + "github.com/gofrs/uuid" +) + +func BenchmarkMatcher_MatchTagLine(b *testing.B) { + builder := gherkin.NewAstBuilder(func() string { + return uuid.Must(uuid.NewV4()).String() + }) + parser := gherkin.NewParser(builder) + parser.StopAtFirstError(false) + matcher := gherkin.NewLanguageMatcher(gherkin.DialectsBuiltin(), gherkin.DefaultDialect) + + lines := []gherkin.Line{{ + LineText: " @hello # there", + AtEof: false, + LineNumber: 0, + TrimmedLineText: "@hello # there", + }, { + LineText: " @yes # there", + AtEof: false, + LineNumber: 0, + TrimmedLineText: "@yes # there", + }} + + for i := 0; i < b.N; i++ { + for _, line := range lines { + matcher.MatchTagLine(&line) + } + } +} From 0f25d37aebbb43cf34b8a5150e98b0a8eb986d57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tighearn=C3=A1n=20Carroll?= Date: Wed, 19 Apr 2023 20:49:39 +0100 Subject: [PATCH 3/8] go.mod fun --- go/go.mod | 3 +-- go/go.sum | 5 ----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/go/go.mod b/go/go.mod index a5e67b16a..af95ab3be 100644 --- a/go/go.mod +++ b/go/go.mod @@ -2,13 +2,12 @@ module github.com/cucumber/gherkin/go/v26 require ( github.com/cucumber/messages/go/v21 v21.0.1 - github.com/cucumber/messages/go/v22 v22.0.0 + github.com/gofrs/uuid v4.3.1+incompatible github.com/stretchr/testify v1.8.2 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/gofrs/uuid v4.3.1+incompatible // indirect github.com/pmezard/go-difflib v1.0.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go/go.sum b/go/go.sum index f63f7fe8c..4df150bfa 100644 --- a/go/go.sum +++ b/go/go.sum @@ -1,11 +1,8 @@ github.com/cucumber/messages/go/v21 v21.0.1 h1:wzA0LxwjlWQYZd32VTlAVDTkW6inOFmSM+RuOwHZiMI= github.com/cucumber/messages/go/v21 v21.0.1/go.mod h1:zheH/2HS9JLVFukdrsPWoPdmUtmYQAQPLk7w5vWsk5s= -github.com/cucumber/messages/go/v22 v22.0.0/go.mod h1:aZipXTKc0JnjCsXrJnuZpWhtay93k7Rn3Dee7iyPJjs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= -github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.3.1+incompatible h1:0/KbAdpx3UXAx1kEOWHJeOkpbgRFGHVgv+CFIY7dBJI= github.com/gofrs/uuid v4.3.1+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -15,8 +12,6 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= From 5b07ef65842033b2a232e18c651f2841d1c17ac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tighearn=C3=A1n=20Carroll?= Date: Thu, 20 Apr 2023 00:01:49 +0100 Subject: [PATCH 4/8] bringing back regex for comment delim --- go/matcher.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/go/matcher.go b/go/matcher.go index 249eb8873..184886814 100644 --- a/go/matcher.go +++ b/go/matcher.go @@ -20,7 +20,8 @@ const ( ) var ( - defaultLanguagePattern = regexp.MustCompile("^\\s*#\\s*language\\s*:\\s*([a-zA-Z\\-_]+)\\s*$") + defaultLanguagePattern = regexp.MustCompile("^\\s*#\\s*language\\s*:\\s*([a-zA-Z\\-_]+)\\s*$") + commentDelimiterPattern = regexp.MustCompile(`\s+` + CommentPrefix) ) type matcher struct { @@ -99,7 +100,7 @@ func (m *matcher) MatchTagLine(line *Line) (ok bool, token *Token, err error) { if !line.StartsWith(TagPrefix) { return } - uncommentedLine := strings.SplitN(line.TrimmedLineText, CommentPrefix, 2)[0] + uncommentedLine := commentDelimiterPattern.Split(line.TrimmedLineText, 2)[0] var tags []*LineSpan var column = line.Indent() + 1 From 5c97eb603bd04111077d730edb4a37db9fbfc125 Mon Sep 17 00:00:00 2001 From: "M.P. Korstanje" Date: Thu, 10 Aug 2023 20:44:25 +0200 Subject: [PATCH 5/8] Remove performance test --- go/gherkin_test.go | 31 ------------------------------- go/go.mod | 4 ++-- go/go.sum | 11 +++++++++-- 3 files changed, 11 insertions(+), 35 deletions(-) delete mode 100644 go/gherkin_test.go diff --git a/go/gherkin_test.go b/go/gherkin_test.go deleted file mode 100644 index 6bba2cdab..000000000 --- a/go/gherkin_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package gherkin_test - -import ( - "bytes" - "io" - "testing" - - gherkin "github.com/cucumber/gherkin/go/v26" - "github.com/gofrs/uuid" -) - -func Benchmark_ParseGherkinDocumentForLanguage(b *testing.B) { - eatGodogContents := ` -Feature: eat godogs - In order to be happy - As a hungry gopher - I need to be able to eat godogs - Scenario: Eat 5 out of 12 - Given there are 12 godogs - When I eat 5 - Then there should be 7 remaining` - - r := bytes.NewReader([]byte(eatGodogContents)) - buf := new(bytes.Buffer) - newIDFunc := func() string { - return uuid.Must(uuid.NewV4()).String() - } - for i := 0; i < b.N; i++ { - gherkin.ParseGherkinDocumentForLanguage(io.TeeReader(r, buf), gherkin.DefaultDialect, newIDFunc) - } -} diff --git a/go/go.mod b/go/go.mod index c1244a367..25a814e99 100644 --- a/go/go.mod +++ b/go/go.mod @@ -1,9 +1,9 @@ module github.com/cucumber/gherkin/go/v26 require ( - github.com/gofrs/uuid v4.3.1+incompatible github.com/cucumber/messages/go/v22 v22.0.0 - github.com/stretchr/testify v1.8.4 + github.com/gofrs/uuid v4.3.1+incompatible + github.com/stretchr/testify v1.8.2 ) require ( diff --git a/go/go.sum b/go/go.sum index c133feed7..4da9bd688 100644 --- a/go/go.sum +++ b/go/go.sum @@ -1,14 +1,21 @@ github.com/cucumber/messages/go/v22 v22.0.0 h1:hk3ITpEWQ+KWDe619zYcqtaLOfcu9jgClSeps3DlNWI= github.com/cucumber/messages/go/v22 v22.0.0/go.mod h1:aZipXTKc0JnjCsXrJnuZpWhtay93k7Rn3Dee7iyPJjs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/gofrs/uuid v4.3.1+incompatible h1:0/KbAdpx3UXAx1kEOWHJeOkpbgRFGHVgv+CFIY7dBJI= github.com/gofrs/uuid v4.3.1+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 7d6b47c12d1fc0a421490a04b9cc626230284f7e Mon Sep 17 00:00:00 2001 From: "M.P. Korstanje" Date: Thu, 10 Aug 2023 20:48:15 +0200 Subject: [PATCH 6/8] Remove performance test --- go/go.mod | 2 +- go/matcher_test.go | 35 ----------------------------------- 2 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 go/matcher_test.go diff --git a/go/go.mod b/go/go.mod index 25a814e99..34dd2e65e 100644 --- a/go/go.mod +++ b/go/go.mod @@ -2,12 +2,12 @@ module github.com/cucumber/gherkin/go/v26 require ( github.com/cucumber/messages/go/v22 v22.0.0 - github.com/gofrs/uuid v4.3.1+incompatible github.com/stretchr/testify v1.8.2 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect + github.com/gofrs/uuid v4.3.1+incompatible // indirect github.com/pmezard/go-difflib v1.0.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go/matcher_test.go b/go/matcher_test.go deleted file mode 100644 index 2a0e6dd4c..000000000 --- a/go/matcher_test.go +++ /dev/null @@ -1,35 +0,0 @@ -package gherkin_test - -import ( - "testing" - - gherkin "github.com/cucumber/gherkin/go/v26" - "github.com/gofrs/uuid" -) - -func BenchmarkMatcher_MatchTagLine(b *testing.B) { - builder := gherkin.NewAstBuilder(func() string { - return uuid.Must(uuid.NewV4()).String() - }) - parser := gherkin.NewParser(builder) - parser.StopAtFirstError(false) - matcher := gherkin.NewLanguageMatcher(gherkin.DialectsBuiltin(), gherkin.DefaultDialect) - - lines := []gherkin.Line{{ - LineText: " @hello # there", - AtEof: false, - LineNumber: 0, - TrimmedLineText: "@hello # there", - }, { - LineText: " @yes # there", - AtEof: false, - LineNumber: 0, - TrimmedLineText: "@yes # there", - }} - - for i := 0; i < b.N; i++ { - for _, line := range lines { - matcher.MatchTagLine(&line) - } - } -} From c18e50c05f8127689aeb7d07000bc1b1ccb7280c Mon Sep 17 00:00:00 2001 From: "M.P. Korstanje" Date: Thu, 10 Aug 2023 20:49:09 +0200 Subject: [PATCH 7/8] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1466fd99e..ddebe49ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ This document is formatted according to the principles of [Keep A CHANGELOG](htt ## [Unreleased] ### Changed - [Go] Upgraded messages to v22 +- [Go] Improve performance - don't compile regex on matcher create ### Added - (i18n) Add Malayalam localization From 2153dec1fc5dc746ebefb59efd27e94aabe2f754 Mon Sep 17 00:00:00 2001 From: "M.P. Korstanje" Date: Thu, 10 Aug 2023 20:50:09 +0200 Subject: [PATCH 8/8] Reduce diff --- go/go.mod | 2 +- go/go.sum | 11 ++--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/go/go.mod b/go/go.mod index 34dd2e65e..0cbd847cc 100644 --- a/go/go.mod +++ b/go/go.mod @@ -2,7 +2,7 @@ module github.com/cucumber/gherkin/go/v26 require ( github.com/cucumber/messages/go/v22 v22.0.0 - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.4 ) require ( diff --git a/go/go.sum b/go/go.sum index 4da9bd688..c133feed7 100644 --- a/go/go.sum +++ b/go/go.sum @@ -1,21 +1,14 @@ github.com/cucumber/messages/go/v22 v22.0.0 h1:hk3ITpEWQ+KWDe619zYcqtaLOfcu9jgClSeps3DlNWI= github.com/cucumber/messages/go/v22 v22.0.0/go.mod h1:aZipXTKc0JnjCsXrJnuZpWhtay93k7Rn3Dee7iyPJjs= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/gofrs/uuid v4.3.1+incompatible h1:0/KbAdpx3UXAx1kEOWHJeOkpbgRFGHVgv+CFIY7dBJI= github.com/gofrs/uuid v4.3.1+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=