diff options
| author | Hugo Hromic <[email protected]> | 2023-07-14 20:12:47 +0100 |
|---|---|---|
| committer | Hugo Hromic <[email protected]> | 2023-07-14 20:12:52 +0100 |
| commit | c73f38cd547cccc7930cf2e302c835e3f424ffd4 (patch) | |
| tree | eafc87355350d43926401b91abe98d4d2e1d4ec1 /parse_test.go | |
| parent | 463902ef7d1219df0c6306a3838f4e003da92f91 (diff) | |
Improve handling of version flag
* Only use/show builtin `--version` flag if args are versioned with a non-empty `Version()`
* If args define a `--version` flag, honor it and disable/hide the builtin version flag
* Only return `ErrVersion` when using the builtin version flag
Diffstat (limited to 'parse_test.go')
| -rw-r--r-- | parse_test.go | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/parse_test.go b/parse_test.go index 77a034f..06e7a76 100644 --- a/parse_test.go +++ b/parse_test.go @@ -1380,11 +1380,55 @@ func TestReuseParser(t *testing.T) { assert.Error(t, err) } -func TestVersion(t *testing.T) { +func TestNoVersion(t *testing.T) { var args struct{} - err := parse("--version", &args) + + p, err := NewParser(Config{}, &args) + require.NoError(t, err) + + err = p.Parse([]string{"--version"}) + assert.Error(t, err) + assert.NotEqual(t, ErrVersion, err) +} + +func TestBuiltinVersion(t *testing.T) { + var args struct{} + + p, err := NewParser(Config{}, &args) + require.NoError(t, err) + + p.version = "example 3.2.1" + + err = p.Parse([]string{"--version"}) assert.Equal(t, ErrVersion, err) +} +func TestArgsVersion(t *testing.T) { + var args struct { + Version bool `arg:"--version"` + } + + p, err := NewParser(Config{}, &args) + require.NoError(t, err) + + err = p.Parse([]string{"--version"}) + require.NoError(t, err) + require.Equal(t, args.Version, true) +} + +func TestArgsAndBuiltinVersion(t *testing.T) { + var args struct { + Version bool `arg:"--version"` + } + + p, err := NewParser(Config{}, &args) + require.NoError(t, err) + + p.version = "example 3.2.1" + + err = p.Parse([]string{"--version"}) + require.NoError(t, err) + require.Equal(t, args.Version, true) } func TestMultipleTerminates(t *testing.T) { |
