From 924e8b881f6dd3e851b0f68e6c7d64cd383d8808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Tue, 11 Aug 2020 17:30:24 +0200 Subject: [PATCH] Fix parsing boolean flags with explicit values Fixes #2590 --- utils/args_parser.go | 1 + utils/args_parser_test.go | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/utils/args_parser.go b/utils/args_parser.go index 089cc270..b0fb8d02 100644 --- a/utils/args_parser.go +++ b/utils/args_parser.go @@ -102,6 +102,7 @@ func (p *ArgsParser) Parse(args []string) ([]string, error) { } } else if strings.HasPrefix(arg, "--") { flagName = arg + flagValue = "" eq := strings.IndexByte(arg, '=') hasFlagValue = eq >= 0 if hasFlagValue { diff --git a/utils/args_parser_test.go b/utils/args_parser_test.go index f38e9e9e..b7689fd5 100644 --- a/utils/args_parser_test.go +++ b/utils/args_parser_test.go @@ -118,6 +118,18 @@ func TestArgsParser_BoolValue(t *testing.T) { equal(t, "yes pls", p.Value("--draft")) } +func TestArgsParser_BoolValue_multiple(t *testing.T) { + p := NewArgsParser() + p.RegisterBool("--draft") + p.RegisterBool("--prerelease") + args := []string{"--draft=false", "--prerelease"} + rest, err := p.Parse(args) + equal(t, nil, err) + equal(t, []string{}, rest) + equal(t, false, p.Bool("--draft")) + equal(t, true, p.Bool("--prerelease")) +} + func TestArgsParser_Shorthand(t *testing.T) { p := NewArgsParser() p.RegisterValue("--origin", "-o") -- GitLab