summaryrefslogtreecommitdiff
path: root/compflag/compflag_test.go
diff options
context:
space:
mode:
authorEyal Posener <[email protected]>2019-11-27 21:33:55 +0200
committerEyal Posener <[email protected]>2019-11-27 21:33:55 +0200
commit85f1fe4e1db7dcf16589bba19ba7807b60740d45 (patch)
tree12583ca2ebd1d9fa67489bb2eabea5497e27e49b /compflag/compflag_test.go
parent8a431c416eef27c58cc8309a305418ee3e9a7880 (diff)
Add duration flag
Diffstat (limited to 'compflag/compflag_test.go')
-rw-r--r--compflag/compflag_test.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/compflag/compflag_test.go b/compflag/compflag_test.go
index 73dc2c1..9d062e2 100644
--- a/compflag/compflag_test.go
+++ b/compflag/compflag_test.go
@@ -3,6 +3,7 @@ package compflag
import (
"flag"
"testing"
+ "time"
"github.com/posener/complete/v2"
"github.com/posener/complete/v2/predict"
@@ -104,3 +105,47 @@ func TestInt(t *testing.T) {
complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=1", []string{"1"})
})
}
+
+func TestDuration(t *testing.T) {
+ t.Parallel()
+
+ t.Run("options invalid not checked", func(t *testing.T) {
+ var cmd FlagSet
+ value := cmd.Duration("a", 0, "", predict.OptValues("1s", "1m"))
+ err := cmd.Parse([]string{"-a", "1h"})
+ assert.NoError(t, err)
+ assert.Equal(t, time.Hour, *value)
+ })
+
+ t.Run("options valid checked", func(t *testing.T) {
+ var cmd FlagSet
+ value := cmd.Duration("a", 0, "", predict.OptValues("1s", "1m"), predict.OptCheck())
+ err := cmd.Parse([]string{"-a", "1m"})
+ assert.NoError(t, err)
+ assert.Equal(t, time.Minute, *value)
+ })
+
+ t.Run("options invalid checked", func(t *testing.T) {
+ var cmd FlagSet
+ _ = cmd.Duration("a", 0, "", predict.OptValues("1s", "1m"), predict.OptCheck())
+ err := cmd.Parse([]string{"-a", "1h"})
+ assert.Error(t, err)
+ })
+
+ t.Run("options invalid duration value", func(t *testing.T) {
+ var cmd FlagSet
+ _ = cmd.Duration("a", 0, "", predict.OptValues("1h", "1m", "1"), predict.OptCheck())
+ err := cmd.Parse([]string{"-a", "1"})
+ assert.Error(t, err)
+ })
+
+ t.Run("complete", func(t *testing.T) {
+ var cmd FlagSet
+ _ = cmd.Duration("a", 0, "", predict.OptValues("1s", "1m"))
+ complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a ", []string{"1s", "1m"})
+ complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=", []string{"1s", "1m"})
+ complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a 1", []string{"1s", "1m"})
+ complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=1", []string{"1s", "1m"})
+ complete.Test(t, complete.FlagSet((*flag.FlagSet)(&cmd)), "-a=1m", []string{"1m"})
+ })
+}