summaryrefslogtreecommitdiff
path: root/parse_test.go
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2021-04-19 21:03:43 -0700
committerAlex Flint <[email protected]>2021-04-19 21:03:43 -0700
commitfe4a138ac8c39cb00bbee7279a0957897ab88fae (patch)
tree02b48894c636a05751125c495d8325dd2f92fe4f /parse_test.go
parent6a01a15f75472271568c732c1191e9d33a5fc54c (diff)
test coverage 100% !!
Diffstat (limited to 'parse_test.go')
-rw-r--r--parse_test.go78
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())
+}