summaryrefslogtreecommitdiff
path: root/parse_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 /parse_test.go
parent5dbdd5d0c585feef8723223464a9362d635324f6 (diff)
clean up customizable stdout, stderr, and exit in parser config
Diffstat (limited to 'parse_test.go')
-rw-r--r--parse_test.go69
1 files changed, 22 insertions, 47 deletions
diff --git a/parse_test.go b/parse_test.go
index 64119a8..d368b17 100644
--- a/parse_test.go
+++ b/parse_test.go
@@ -885,26 +885,18 @@ func TestParserMustParse(t *testing.T) {
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
- originalExit := osExit
- originalStdout := stdout
- defer func() {
- osExit = originalExit
- stdout = originalStdout
- }()
+ var exitCode int
+ var stdout bytes.Buffer
+ exit := func(code int) { exitCode = code }
- var exitCode *int
- osExit = func(code int) { exitCode = &code }
- var b bytes.Buffer
- stdout = &b
-
- p, err := NewParser(Config{}, &tt.args)
+ p, err := NewParser(Config{Exit: exit, Out: &stdout}, &tt.args)
require.NoError(t, err)
assert.NotNil(t, p)
p.MustParse(tt.cmdLine)
assert.NotNil(t, exitCode)
- assert.Equal(t, tt.code, *exitCode)
- assert.Contains(t, b.String(), tt.output)
+ assert.Equal(t, tt.code, exitCode)
+ assert.Contains(t, stdout.String(), tt.output)
})
}
}
@@ -1484,70 +1476,53 @@ func TestUnexportedFieldsSkipped(t *testing.T) {
}
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 stdout bytes.Buffer
+ exit := func(code int) { exitCode = code }
var args struct {
CannotParse struct{}
}
- parser := MustParse(&args)
+ parser := mustParse(Config{Out: &stdout, Exit: exit}, &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 exitCode int
+ var stdout bytes.Buffer
+ exit := func(code int) { exitCode = code }
var args struct{}
- parser := MustParse(&args)
+ parser := mustParse(Config{Out: &stdout, Exit: exit}, &args)
assert.NotNil(t, parser)
- require.NotNil(t, exitCode)
- assert.Equal(t, 0, *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 exitCode int
+ var stdout bytes.Buffer
+ exit := func(code int) { exitCode = code }
- var b bytes.Buffer
- stdout = &b
+ os.Args = []string{"someprogram", "--version"}
var args versioned
- parser := MustParse(&args)
+ parser := mustParse(Config{Out: &stdout, Exit: exit}, &args)
require.NotNil(t, parser)
- require.NotNil(t, exitCode)
- assert.Equal(t, 0, *exitCode)
- assert.Equal(t, "example 3.2.1\n", b.String())
+ assert.Equal(t, 0, exitCode)
+ assert.Equal(t, "example 3.2.1\n", stdout.String())
}
type mapWithUnmarshalText struct {