summaryrefslogtreecommitdiff
path: root/usage_test.go
diff options
context:
space:
mode:
authorIlja Neumann <[email protected]>2023-06-03 12:47:47 +0200
committerIlja Neumann <[email protected]>2023-06-03 12:47:47 +0200
commit18623d869bfb7aa7b87eda2c8dc7d1bf6149f316 (patch)
tree47bc965aac8847cb35791ea5e79871242b9df926 /usage_test.go
parentb928a1839ae3502fc6fef8d7743dd78f2c772c8a (diff)
help,usage and error messages and tests
Diffstat (limited to 'usage_test.go')
-rw-r--r--usage_test.go70
1 files changed, 39 insertions, 31 deletions
diff --git a/usage_test.go b/usage_test.go
index 0debb4a..1a64ad4 100644
--- a/usage_test.go
+++ b/usage_test.go
@@ -56,6 +56,10 @@ Options:
--testenv TESTENV, -a TESTENV [env: TEST_ENV]
--file FILE, -f FILE File with mandatory extension [default: scratch.txt]
--help, -h display this help and exit
+
+Environment variables:
+ API_KEY Required. Only via env-var for security reasons
+ TRACE Optional. Record low-level trace
`
var args struct {
@@ -70,6 +74,8 @@ Options:
Values []float64 `help:"Values"`
Workers int `arg:"-w,env:WORKERS" help:"number of workers to start" default:"10"`
TestEnv string `arg:"-a,env:TEST_ENV"`
+ ApiKey string `arg:"required,-,--,env:API_KEY" help:"Only via env-var for security reasons"`
+ Trace bool `arg:"-,--,env" help:"Record low-level trace"`
File *NameDotName `arg:"-f" help:"File with mandatory extension"`
}
args.Name = "Foo Bar"
@@ -554,12 +560,14 @@ Options:
--help, -h display this help and exit
Environment variables:
- ENVONLY
- CUSTOM
+ ENVONLY Optional.
+ ENVONLY2 Optional.
+ CUSTOM Optional.
`
var args struct {
Short string `arg:"--,-s,env"`
EnvOnly string `arg:"--,env"`
+ EnvOnly2 string `arg:"--,-,env"`
EnvOnlyOverriden string `arg:"--,env:CUSTOM"`
}
@@ -575,6 +583,35 @@ Environment variables:
assert.Equal(t, expectedUsage, strings.TrimSpace(usage.String()))
}
+func TestEnvOnlyArgs(t *testing.T) {
+ expectedUsage := "Usage: example [--arg ARG]"
+
+ expectedHelp := `
+Usage: example [--arg ARG]
+
+Options:
+ --arg ARG, -a ARG [env: MY_ARG]
+ --help, -h display this help and exit
+
+Environment variables:
+ AUTH_KEY Required.
+`
+ var args struct {
+ ArgParam string `arg:"-a,--arg,env:MY_ARG"`
+ AuthKey string `arg:"required,--,env:AUTH_KEY"`
+ }
+ p, err := NewParser(Config{Program: "example"}, &args)
+ assert.NoError(t, err)
+
+ var help bytes.Buffer
+ p.WriteHelp(&help)
+ assert.Equal(t, expectedHelp[1:], help.String())
+
+ var usage bytes.Buffer
+ p.WriteUsage(&usage)
+ assert.Equal(t, expectedUsage, strings.TrimSpace(usage.String()))
+}
+
func TestFail(t *testing.T) {
var stdout bytes.Buffer
var exitCode int
@@ -650,32 +687,3 @@ Options:
p.WriteHelp(&help)
assert.Equal(t, expectedHelp[1:], help.String())
}
-
-func TestFailEnvOnly(t *testing.T) {
- expectedUsage := "Usage: example [--arg ARG]"
-
- expectedHelp := `
-Usage: example [--arg ARG]
-
-Options:
- --arg ARG, -a ARG [env: MY_ARG]
- --help, -h display this help and exit
-
-Environment variables:
- AUTH_KEY
-`
- var args struct {
- ArgParam string `arg:"-a,--arg,env:MY_ARG"`
- AuthKey string `arg:"--,env:AUTH_KEY"`
- }
- p, err := NewParser(Config{Program: "example"}, &args)
- assert.NoError(t, err)
-
- var help bytes.Buffer
- p.WriteHelp(&help)
- assert.Equal(t, expectedHelp[1:], help.String())
-
- var usage bytes.Buffer
- p.WriteUsage(&usage)
- assert.Equal(t, expectedUsage, strings.TrimSpace(usage.String()))
-}