aboutsummaryrefslogtreecommitdiff
path: root/golangflag_test.go
diff options
context:
space:
mode:
authorEric Paris <[email protected]>2015-08-15 17:26:19 -0400
committerEric Paris <[email protected]>2015-08-16 22:44:51 -0700
commita92a28762fe6384a3defc625cc4247e3a367c0b4 (patch)
treec38896247d608fef7d1fecc89f6bf64c1bf10e4a /golangflag_test.go
parent11251d78bb57ed618b8d4a1ee039affca6d64fb9 (diff)
Add functions to support golang flags in pflags
They aren't "perfect". spf13/pflag chose to use an explicit `Type` in the value. golang has nothing of the sort and has a rather crazy IsBoolFlag() bit of nonsense for the one case that really makes sense to have the explicit `Type`. Probably because adding interfaces really screws people up. So supporting golang flags in pflags isn't super super simple, we need to figure out how to handle our `Type` given only the information available in a golang flag. This does it as best we can with `reflect`.
Diffstat (limited to 'golangflag_test.go')
-rw-r--r--golangflag_test.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/golangflag_test.go b/golangflag_test.go
new file mode 100644
index 0000000..77e2d7d
--- /dev/null
+++ b/golangflag_test.go
@@ -0,0 +1,39 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package pflag
+
+import (
+ goflag "flag"
+ "testing"
+)
+
+func TestGoflags(t *testing.T) {
+ goflag.String("stringFlag", "stringFlag", "stringFlag")
+ goflag.Bool("boolFlag", false, "boolFlag")
+
+ f := NewFlagSet("test", ContinueOnError)
+
+ f.AddGoFlagSet(goflag.CommandLine)
+ err := f.Parse([]string{"--stringFlag=bob", "--boolFlag"})
+ if err != nil {
+ t.Fatal("expected no error; get", err)
+ }
+
+ getString, err := f.GetString("stringFlag")
+ if err != nil {
+ t.Fatal("expected no error; get", err)
+ }
+ if getString != "bob" {
+ t.Fatalf("expected getString=bob but got getString=%s", getString)
+ }
+
+ getBool, err := f.GetBool("boolFlag")
+ if err != nil {
+ t.Fatal("expected no error; get", err)
+ }
+ if getBool != true {
+ t.Fatalf("expected getBool=true but got getBool=%v", getBool)
+ }
+}