From a92a28762fe6384a3defc625cc4247e3a367c0b4 Mon Sep 17 00:00:00 2001 From: Eric Paris Date: Sat, 15 Aug 2015 17:26:19 -0400 Subject: 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`. --- golangflag_test.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 golangflag_test.go (limited to 'golangflag_test.go') 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) + } +} -- cgit v1.2.3