summaryrefslogtreecommitdiff
path: root/parse_test.go
diff options
context:
space:
mode:
authorbrettlangdon <[email protected]>2016-01-18 13:42:04 -0500
committerbrettlangdon <[email protected]>2016-01-18 13:42:04 -0500
commit8dd29d34bf0186945d53ba1ca0cde2324952a6e9 (patch)
tree8c0aca1232c96f25124120005d7e32ce938a3396 /parse_test.go
parentc9155bb0c3e57557bae7d7c54b60ab8fe2e95211 (diff)
Add support for environment variables
Diffstat (limited to 'parse_test.go')
-rw-r--r--parse_test.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/parse_test.go b/parse_test.go
index 7fca76a..f3e7350 100644
--- a/parse_test.go
+++ b/parse_test.go
@@ -357,3 +357,53 @@ func TestMustParse(t *testing.T) {
assert.Equal(t, "bar", args.Foo)
assert.NotNil(t, parser)
}
+
+func TestEnvironmentVariable(t *testing.T) {
+ var args struct {
+ Foo string `arg:"env"`
+ }
+ os.Setenv("FOO", "bar")
+ os.Args = []string{"example"}
+ MustParse(&args)
+ assert.Equal(t, "bar", args.Foo)
+}
+
+func TestEnvironmentVariableOverrideName(t *testing.T) {
+ var args struct {
+ Foo string `arg:"env:BAZ"`
+ }
+ os.Setenv("BAZ", "bar")
+ os.Args = []string{"example"}
+ MustParse(&args)
+ assert.Equal(t, "bar", args.Foo)
+}
+
+func TestEnvironmentVariableOverrideArgument(t *testing.T) {
+ var args struct {
+ Foo string `arg:"env"`
+ }
+ os.Setenv("FOO", "bar")
+ os.Args = []string{"example", "--foo", "baz"}
+ MustParse(&args)
+ assert.Equal(t, "baz", args.Foo)
+}
+
+func TestEnvironmentVariableError(t *testing.T) {
+ var args struct {
+ Foo int `arg:"env"`
+ }
+ os.Setenv("FOO", "bar")
+ os.Args = []string{"example"}
+ err := Parse(&args)
+ assert.Error(t, err)
+}
+
+func TestEnvironmentVariableRequired(t *testing.T) {
+ var args struct {
+ Foo string `arg:"env,required"`
+ }
+ os.Setenv("FOO", "bar")
+ os.Args = []string{"example"}
+ MustParse(&args)
+ assert.Equal(t, "bar", args.Foo)
+}