diff options
| author | Alex Flint <[email protected]> | 2023-02-08 09:49:03 -0500 |
|---|---|---|
| committer | Alex Flint <[email protected]> | 2023-02-08 09:49:03 -0500 |
| commit | df28e7154bbab76436bc59e5dc67fb6d6824fc62 (patch) | |
| tree | 1077d83c624e955733ce4e695465f084f0be9539 /parse_test.go | |
| parent | 5dbdd5d0c585feef8723223464a9362d635324f6 (diff) | |
clean up customizable stdout, stderr, and exit in parser config
Diffstat (limited to 'parse_test.go')
| -rw-r--r-- | parse_test.go | 69 |
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 { |
