diff options
| author | Eric Paris <[email protected]> | 2015-08-15 17:26:19 -0400 |
|---|---|---|
| committer | Eric Paris <[email protected]> | 2015-08-16 22:44:51 -0700 |
| commit | a92a28762fe6384a3defc625cc4247e3a367c0b4 (patch) | |
| tree | c38896247d608fef7d1fecc89f6bf64c1bf10e4a /golangflag_test.go | |
| parent | 11251d78bb57ed618b8d4a1ee039affca6d64fb9 (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.go | 39 |
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) + } +} |
