summaryrefslogtreecommitdiff
path: root/usage_test.go
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2023-02-08 09:49:03 -0500
committerAlex Flint <[email protected]>2023-02-08 09:49:03 -0500
commitdf28e7154bbab76436bc59e5dc67fb6d6824fc62 (patch)
tree1077d83c624e955733ce4e695465f084f0be9539 /usage_test.go
parent5dbdd5d0c585feef8723223464a9362d635324f6 (diff)
clean up customizable stdout, stderr, and exit in parser config
Diffstat (limited to 'usage_test.go')
-rw-r--r--usage_test.go34
1 files changed, 8 insertions, 26 deletions
diff --git a/usage_test.go b/usage_test.go
index be5894a..69feac2 100644
--- a/usage_test.go
+++ b/usage_test.go
@@ -572,18 +572,9 @@ Options:
}
func TestFail(t *testing.T) {
- originalStderr := stderr
- originalExit := osExit
- defer func() {
- stderr = originalStderr
- osExit = originalExit
- }()
-
- var b bytes.Buffer
- stderr = &b
-
+ var stdout bytes.Buffer
var exitCode int
- osExit = func(code int) { exitCode = code }
+ exit := func(code int) { exitCode = code }
expectedStdout := `
Usage: example [--foo FOO]
@@ -593,27 +584,18 @@ error: something went wrong
var args struct {
Foo int
}
- p, err := NewParser(Config{Program: "example"}, &args)
+ p, err := NewParser(Config{Program: "example", Exit: exit, Out: &stdout}, &args)
require.NoError(t, err)
p.Fail("something went wrong")
- assert.Equal(t, expectedStdout[1:], b.String())
+ assert.Equal(t, expectedStdout[1:], stdout.String())
assert.Equal(t, -1, exitCode)
}
func TestFailSubcommand(t *testing.T) {
- originalStderr := stderr
- originalExit := osExit
- defer func() {
- stderr = originalStderr
- osExit = originalExit
- }()
-
- var b bytes.Buffer
- stderr = &b
-
+ var stdout bytes.Buffer
var exitCode int
- osExit = func(code int) { exitCode = code }
+ exit := func(code int) { exitCode = code }
expectedStdout := `
Usage: example sub
@@ -623,13 +605,13 @@ error: something went wrong
var args struct {
Sub *struct{} `arg:"subcommand"`
}
- p, err := NewParser(Config{Program: "example"}, &args)
+ p, err := NewParser(Config{Program: "example", Exit: exit, Out: &stdout}, &args)
require.NoError(t, err)
err = p.FailSubcommand("something went wrong", "sub")
require.NoError(t, err)
- assert.Equal(t, expectedStdout[1:], b.String())
+ assert.Equal(t, expectedStdout[1:], stdout.String())
assert.Equal(t, -1, exitCode)
}