aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEthan P. <[email protected]>2025-04-21 21:28:13 -0700
committerEthan P. <[email protected]>2025-04-21 21:44:31 -0700
commite9268909c269ea54836435ff420ce0d5d59324ac (patch)
tree11277985fbde7e7706b5dc0b95a1fd96dd05c31d
parent19c9c4072e41218b18b93dbfc3798c18835d2fd5 (diff)
test: Commonly-returned error messages
Add tests to ensure invalid arguments and unknown flag error messages don't change.
-rw-r--r--flag_test.go59
1 files changed, 57 insertions, 2 deletions
diff --git a/flag_test.go b/flag_test.go
index 0dbe874..aa2f434 100644
--- a/flag_test.go
+++ b/flag_test.go
@@ -103,9 +103,14 @@ func TestEverything(t *testing.T) {
func TestUsage(t *testing.T) {
called := false
ResetForTesting(func() { called = true })
- if GetCommandLine().Parse([]string{"--x"}) == nil {
+ err := GetCommandLine().Parse([]string{"--x"})
+ expectedErr := "unknown flag: --x"
+ if err == nil {
t.Error("parse did not fail for unknown flag")
}
+ if err.Error() != expectedErr {
+ t.Errorf("expected error %q, got %q", expectedErr, err.Error())
+ }
if called {
t.Error("did call Usage while using ContinueOnError")
}
@@ -131,9 +136,14 @@ func TestAddFlagSet(t *testing.T) {
func TestAnnotation(t *testing.T) {
f := NewFlagSet("shorthand", ContinueOnError)
- if err := f.SetAnnotation("missing-flag", "key", nil); err == nil {
+ err := f.SetAnnotation("missing-flag", "key", nil)
+ expectedErr := "no such flag -missing-flag"
+ if err == nil {
t.Errorf("Expected error setting annotation on non-existent flag")
}
+ if err.Error() != expectedErr {
+ t.Errorf("expected error %q, got %q", expectedErr, err.Error())
+ }
f.StringP("stringa", "a", "", "string value")
if err := f.SetAnnotation("stringa", "key", nil); err != nil {
@@ -349,6 +359,33 @@ func testParse(f *FlagSet, t *testing.T) {
} else if f.Args()[0] != extra {
t.Errorf("expected argument %q got %q", extra, f.Args()[0])
}
+ // Test unknown
+ err := f.Parse([]string{"--unknown"})
+ expectedErr := "unknown flag: --unknown"
+ if err == nil {
+ t.Error("parse did not fail for unknown flag")
+ }
+ if err.Error() != expectedErr {
+ t.Errorf("expected error %q, got %q", expectedErr, err.Error())
+ }
+ // Test invalid
+ err = f.Parse([]string{"--bool=abcdefg"})
+ expectedErr = `invalid argument "abcdefg" for "--bool" flag: strconv.ParseBool: parsing "abcdefg": invalid syntax`
+ if err == nil {
+ t.Error("parse did not fail for invalid argument")
+ }
+ if err.Error() != expectedErr {
+ t.Errorf("expected error %q, got %q", expectedErr, err.Error())
+ }
+ // Test required
+ err = f.Parse([]string{"--int"})
+ expectedErr = `flag needs an argument: --int`
+ if err == nil {
+ t.Error("parse did not fail for missing argument")
+ }
+ if err.Error() != expectedErr {
+ t.Errorf("expected error %q, got %q", expectedErr, err.Error())
+ }
}
func testParseAll(f *FlagSet, t *testing.T) {
@@ -538,6 +575,24 @@ func TestShorthand(t *testing.T) {
if f.ArgsLenAtDash() != 1 {
t.Errorf("expected argsLenAtDash %d got %d", f.ArgsLenAtDash(), 1)
}
+ // Test unknown
+ err := f.Parse([]string{"-ukn"})
+ expectedErr := "unknown shorthand flag: 'u' in -ukn"
+ if err == nil {
+ t.Error("parse did not fail for unknown shorthand flag")
+ }
+ if err.Error() != expectedErr {
+ t.Errorf("expected error %q, got %q", expectedErr, err.Error())
+ }
+ // Test required
+ err = f.Parse([]string{"-as"})
+ expectedErr = `flag needs an argument: 's' in -s`
+ if err == nil {
+ t.Error("parse did not fail for missing argument")
+ }
+ if err.Error() != expectedErr {
+ t.Errorf("expected error %q, got %q", expectedErr, err.Error())
+ }
}
func TestShorthandLookup(t *testing.T) {