diff --git a/cmd/test.go b/cmd/test.go index 007535ed21..66e4035661 100644 --- a/cmd/test.go +++ b/cmd/test.go @@ -116,6 +116,12 @@ The optional "gobench" output format conforms to the Go Benchmark Data Format. if len(args) == 0 { return fmt.Errorf("specify at least one file") } + + // If an --explain flag was set, turn on verbose output + if testParams.explain.IsSet() { + testParams.verbose = true + } + return nil }, diff --git a/util/enumflag.go b/util/enumflag.go index 02a06a53fc..4796f02696 100644 --- a/util/enumflag.go +++ b/util/enumflag.go @@ -41,6 +41,11 @@ func (f *EnumFlag) String() string { return f.vs[f.i] } +// IsSet will return true if the EnumFlag has been set. +func (f *EnumFlag) IsSet() bool { + return f.i != -1 +} + // Set sets the enum value. If s is not a valid enum value, an error is // returned. func (f *EnumFlag) Set(s string) error { diff --git a/util/enumflag_test.go b/util/enumflag_test.go index b48a389d2a..569486954c 100644 --- a/util/enumflag_test.go +++ b/util/enumflag_test.go @@ -17,6 +17,10 @@ func TestEnumFlag(t *testing.T) { t.Fatalf("Expected default value to be foo but got: %v", flag.String()) } + if flag.IsSet() { + t.Fatalf("Expected IsSet() to be false") + } + if err := flag.Set("bar"); err != nil { t.Fatalf("Unexpected error on set: %v", err) } @@ -25,6 +29,10 @@ func TestEnumFlag(t *testing.T) { t.Fatalf("Expected value to be bar but got: %v", flag.String()) } + if !flag.IsSet() { + t.Fatalf("Expected IsSet() to be true") + } + if !strings.Contains(flag.Type(), "foo,bar,baz") { t.Fatalf("Expected flag type to contain foo,bar,baz but got: %v", flag.Type()) }