Skip to content

Commit 066593e

Browse files
committed
Update the logs tests to match the actual behaviour of the command
Signed-off-by: Richard Wall <[email protected]>
1 parent 21f7a0d commit 066593e

File tree

1 file changed

+23
-29
lines changed

1 file changed

+23
-29
lines changed

pkg/logs/logs_test.go

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"context"
66
"errors"
77
"fmt"
8+
"io"
89
"log"
910
"log/slog"
1011
"os"
@@ -34,12 +35,24 @@ import (
3435
func TestLogs(t *testing.T) {
3536
if flags, found := os.LookupEnv("GO_CHILD_FLAG"); found {
3637
if _, found := os.LookupEnv("GO_CHILD_SKIP_INITIALIZE"); !found {
37-
fs := pflag.NewFlagSet("test-logs", pflag.ExitOnError)
38+
fs := pflag.NewFlagSet("test-logs", pflag.ContinueOnError)
39+
fs.SetOutput(io.Discard)
3840
logs.AddFlags(fs)
39-
fs.Parse(strings.Split(flags, " "))
41+
if err := fs.Parse(strings.Split(flags, " ")); err != nil {
42+
exitCode := 0
43+
if errors.Is(err, pflag.ErrHelp) {
44+
fmt.Fprint(os.Stdout, fs.FlagUsages())
45+
os.Exit(exitCode)
46+
} else {
47+
exitCode := 1
48+
klog.ErrorS(err, "Exiting due to error", "exit-code", exitCode)
49+
klog.FlushAndExit(time.Second, exitCode)
50+
}
51+
}
4052
if err := logs.Initialize(); err != nil {
41-
fmt.Fprintln(os.Stderr, err.Error())
42-
klog.FlushAndExit(time.Second, 2)
53+
exitCode := 1
54+
klog.ErrorS(err, "Exiting due to error", "exit-code", exitCode)
55+
klog.FlushAndExit(time.Second, exitCode)
4356
}
4457
}
4558

@@ -67,14 +80,9 @@ func TestLogs(t *testing.T) {
6780
expectStderr string
6881
}{
6982
{
70-
name: "help",
71-
flags: "-h",
72-
expectError: true,
83+
name: "help",
84+
flags: "-h",
7385
expectStdout: `
74-
pflag: help requested
75-
`,
76-
expectStderr: `
77-
Usage of test-logs:
7886
-v, --log-level Level number for the log level verbosity
7987
--logging-format string Sets the log format. Permitted formats: "json", "text". (default "text")
8088
--vmodule pattern=N,... comma-separated list of pattern=N settings for file-filtered logging (only works for text log format)
@@ -84,38 +92,24 @@ Usage of test-logs:
8492
name: "unrecognized-flag",
8593
flags: "--foo",
8694
expectError: true,
87-
expectStdout: `
88-
unknown flag: --foo
89-
`,
9095
expectStderr: `
91-
unknown flag: --foo
92-
Usage of test-logs:
93-
-v, --log-level Level number for the log level verbosity
94-
--logging-format string Sets the log format. Permitted formats: "json", "text". (default "text")
95-
--vmodule pattern=N,... comma-separated list of pattern=N settings for file-filtered logging (only works for text log format)
96+
E0000 00:00:00.000000 00000 logs_test.go:000] "Exiting due to error" err="unknown flag: --foo" exit-code=1
9697
`,
9798
},
9899
{
99100
name: "v-long-form-not-available",
100101
flags: "--v=3",
101102
expectError: true,
102-
expectStdout: `
103-
unknown flag: --v
104-
`,
105103
expectStderr: `
106-
unknown flag: --v
107-
Usage of test-logs:
108-
-v, --log-level Level number for the log level verbosity
109-
--logging-format string Sets the log format. Permitted formats: "json", "text". (default "text")
110-
--vmodule pattern=N,... comma-separated list of pattern=N settings for file-filtered logging (only works for text log format)
104+
E0000 00:00:00.000000 00000 logs_test.go:000] "Exiting due to error" err="unknown flag: --v" exit-code=1
111105
`,
112106
},
113107
{
114108
name: "logging-format-unrecognized",
115109
flags: "--logging-format=foo",
116110
expectError: true,
117111
expectStderr: `
118-
Error in logging configuration: format: Invalid value: "foo": Unsupported log format
112+
E0000 00:00:00.000000 00000 logs_test.go:000] "Exiting due to error" err="Error in logging configuration: format: Invalid value: \"foo\": Unsupported log format" exit-code=1
119113
`,
120114
},
121115
{
@@ -301,7 +295,7 @@ E0000 00:00:00.000000 00000 logs_test.go:000] "Contextual error" err="fake-err
301295
if test.expectError {
302296
var target *exec.ExitError
303297
require.ErrorAs(t, err, &target)
304-
require.Equal(t, 2, target.ExitCode(), "Flag parsing failures should always result in exit code 2")
298+
require.Equal(t, 1, target.ExitCode(), "Flag parsing failures should always result in exit code 1")
305299
t.Logf("ERROR: %v", err)
306300
} else {
307301
require.NoError(t, err)

0 commit comments

Comments
 (0)