diff options
| author | Alex Flint <[email protected]> | 2021-04-19 21:03:43 -0700 |
|---|---|---|
| committer | Alex Flint <[email protected]> | 2021-04-19 21:03:43 -0700 |
| commit | fe4a138ac8c39cb00bbee7279a0957897ab88fae (patch) | |
| tree | 02b48894c636a05751125c495d8325dd2f92fe4f /parse_test.go | |
| parent | 6a01a15f75472271568c732c1191e9d33a5fc54c (diff) | |
test coverage 100% !!
Diffstat (limited to 'parse_test.go')
| -rw-r--r-- | parse_test.go | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/parse_test.go b/parse_test.go index d03cbfd..b190e83 100644 --- a/parse_test.go +++ b/parse_test.go @@ -1,6 +1,7 @@ package arg import ( + "bytes" "net" "net/mail" "os" @@ -461,7 +462,7 @@ func TestMissingValueAtEnd(t *testing.T) { assert.Error(t, err) } -func TestMissingValueInMIddle(t *testing.T) { +func TestMissingValueInMiddle(t *testing.T) { var args struct { Foo string Bar string @@ -546,6 +547,14 @@ func TestNoMoreOptions(t *testing.T) { assert.Equal(t, []string{"abc", "--foo", "xyz"}, args.Bar) } +func TestNoMoreOptionsBeforeHelp(t *testing.T) { + var args struct { + Foo int + } + err := parse("not_an_integer -- --help", &args) + assert.NotEqual(t, ErrHelp, err) +} + func TestHelpFlag(t *testing.T) { var args struct { Foo string @@ -1299,3 +1308,70 @@ func TestUnexportedFieldsSkipped(t *testing.T) { _, err := NewParser(Config{}, &args) require.NoError(t, err) } + +func TestMustParseInvalidParser(t *testing.T) { + originalExit := osExit + originalStdout := stdout + defer func() { + osExit = originalExit + stdout = originalStdout + }() + + var exitCode int + osExit = func(code int) { exitCode = code } + stdout = &bytes.Buffer{} + + var args struct { + CannotParse struct{} + } + parser := MustParse(&args) + assert.Nil(t, parser) + assert.Equal(t, -1, exitCode) +} + +func TestMustParsePrintsHelp(t *testing.T) { + originalExit := osExit + originalStdout := stdout + originalArgs := os.Args + defer func() { + osExit = originalExit + stdout = originalStdout + os.Args = originalArgs + }() + + var exitCode *int + osExit = func(code int) { exitCode = &code } + os.Args = []string{"someprogram", "--help"} + stdout = &bytes.Buffer{} + + var args struct{} + parser := MustParse(&args) + assert.NotNil(t, parser) + require.NotNil(t, exitCode) + assert.Equal(t, 0, *exitCode) +} + +func TestMustParsePrintsVersion(t *testing.T) { + originalExit := osExit + originalStdout := stdout + originalArgs := os.Args + defer func() { + osExit = originalExit + stdout = originalStdout + os.Args = originalArgs + }() + + var exitCode *int + osExit = func(code int) { exitCode = &code } + os.Args = []string{"someprogram", "--version"} + + var b bytes.Buffer + stdout = &b + + var args versioned + parser := MustParse(&args) + require.NotNil(t, parser) + require.NotNil(t, exitCode) + assert.Equal(t, 0, *exitCode) + assert.Equal(t, "example 3.2.1\n", b.String()) +} |
