summaryrefslogtreecommitdiff
path: root/parse_test.go
diff options
context:
space:
mode:
authorHugo Hromic <[email protected]>2023-07-14 20:12:47 +0100
committerHugo Hromic <[email protected]>2023-07-14 20:12:52 +0100
commitc73f38cd547cccc7930cf2e302c835e3f424ffd4 (patch)
treeeafc87355350d43926401b91abe98d4d2e1d4ec1 /parse_test.go
parent463902ef7d1219df0c6306a3838f4e003da92f91 (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.go48
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) {