summaryrefslogtreecommitdiff
path: root/parse_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'parse_test.go')
-rw-r--r--parse_test.go45
1 files changed, 39 insertions, 6 deletions
diff --git a/parse_test.go b/parse_test.go
index 9aad2e3..00b0875 100644
--- a/parse_test.go
+++ b/parse_test.go
@@ -371,7 +371,7 @@ func TestNonsenseKey(t *testing.T) {
assert.Error(t, err)
}
-func TestMissingValue(t *testing.T) {
+func TestMissingValueAtEnd(t *testing.T) {
var args struct {
Foo string
}
@@ -379,6 +379,24 @@ func TestMissingValue(t *testing.T) {
assert.Error(t, err)
}
+func TestMissingValueInMIddle(t *testing.T) {
+ var args struct {
+ Foo string
+ Bar string
+ }
+ err := parse("--foo --bar=abc", &args)
+ assert.Error(t, err)
+}
+
+func TestNegativeValue(t *testing.T) {
+ var args struct {
+ Foo int
+ }
+ err := parse("--foo -123", &args)
+ require.NoError(t, err)
+ assert.Equal(t, -123, args.Foo)
+}
+
func TestInvalidInt(t *testing.T) {
var args struct {
Foo int
@@ -462,11 +480,10 @@ func TestPanicOnNonPointer(t *testing.T) {
})
}
-func TestPanicOnNonStruct(t *testing.T) {
+func TestErrorOnNonStruct(t *testing.T) {
var args string
- assert.Panics(t, func() {
- _ = parse("", &args)
- })
+ err := parse("", &args)
+ assert.Error(t, err)
}
func TestUnsupportedType(t *testing.T) {
@@ -540,6 +557,15 @@ func TestEnvironmentVariable(t *testing.T) {
assert.Equal(t, "bar", args.Foo)
}
+func TestEnvironmentVariableNotPresent(t *testing.T) {
+ var args struct {
+ NotPresent string `arg:"env"`
+ }
+ os.Args = []string{"example"}
+ MustParse(&args)
+ assert.Equal(t, "", args.NotPresent)
+}
+
func TestEnvironmentVariableOverrideName(t *testing.T) {
var args struct {
Foo string `arg:"env:BAZ"`
@@ -584,7 +610,7 @@ func TestEnvironmentVariableSliceArgumentString(t *testing.T) {
var args struct {
Foo []string `arg:"env"`
}
- setenv(t, "FOO", "bar,\"baz, qux\"")
+ setenv(t, "FOO", `bar,"baz, qux"`)
MustParse(&args)
assert.Equal(t, []string{"bar", "baz, qux"}, args.Foo)
}
@@ -985,3 +1011,10 @@ func TestReuseParser(t *testing.T) {
err = p.Parse([]string{})
assert.Error(t, err)
}
+
+func TestVersion(t *testing.T) {
+ var args struct{}
+ err := parse("--version", &args)
+ assert.Equal(t, ErrVersion, err)
+
+}