@@ -12,6 +12,22 @@ import (
1212 "github.com/spf13/cobra"
1313)
1414
15+ type testErrorWithExitCode interface {
16+ error
17+ ExitCode () int
18+ }
19+
20+ func requireErrorWithExitCode (t * testing.T , err error ) testErrorWithExitCode {
21+ t .Helper ()
22+
23+ errWithExitCode , ok := errors.AsType [testErrorWithExitCode ](err )
24+ if ! ok {
25+ t .Fatal ("expected error with exit code" )
26+ }
27+
28+ return errWithExitCode
29+ }
30+
1531func newTestRootCmd (args []string ) (rootCmd * cobra.Command ) {
1632 root := CreateRootCommand ("v0.0.0-test" , "" )
1733 root .SetArgs (args )
@@ -91,12 +107,9 @@ func TestRootCmdWithConfig(t *testing.T) {
91107 t .Fatal ("expected unknown command error" )
92108 }
93109
94- var exitCoder interface { ExitCode () int }
95- if ! errors .As (err , & exitCoder ) {
96- t .Fatal ("expected error with exit code" )
97- }
110+ errWithExitCode := requireErrorWithExitCode (t , err )
98111
99- if exitCode := exitCoder .ExitCode (); exitCode != 2 {
112+ if exitCode := errWithExitCode .ExitCode (); exitCode != 2 {
100113 t .Fatalf ("expected exit code 2, got %d" , exitCode )
101114 }
102115
@@ -121,12 +134,9 @@ func TestRootCmdWithConfig(t *testing.T) {
121134 t .Fatal ("expected unknown command error" )
122135 }
123136
124- var exitCoder interface { ExitCode () int }
125- if ! errors .As (err , & exitCoder ) {
126- t .Fatal ("expected error with exit code" )
127- }
137+ errWithExitCode := requireErrorWithExitCode (t , err )
128138
129- if exitCode := exitCoder .ExitCode (); exitCode != 2 {
139+ if exitCode := errWithExitCode .ExitCode (); exitCode != 2 {
130140 t .Fatalf ("expected exit code 2, got %d" , exitCode )
131141 }
132142
@@ -247,12 +257,9 @@ func TestSelfCmd(t *testing.T) {
247257 t .Fatal ("expected unknown command error" )
248258 }
249259
250- var exitCoder interface { ExitCode () int }
251- if ! errors .As (err , & exitCoder ) {
252- t .Fatal ("expected error with exit code" )
253- }
260+ errWithExitCode := requireErrorWithExitCode (t , err )
254261
255- if exitCode := exitCoder .ExitCode (); exitCode != 2 {
262+ if exitCode := errWithExitCode .ExitCode (); exitCode != 2 {
256263 t .Fatalf ("expected exit code 2, got %d" , exitCode )
257264 }
258265
@@ -283,12 +290,9 @@ func TestSelfCmd(t *testing.T) {
283290 t .Fatal ("expected unknown command error" )
284291 }
285292
286- var exitCoder interface { ExitCode () int }
287- if ! errors .As (err , & exitCoder ) {
288- t .Fatal ("expected error with exit code" )
289- }
293+ errWithExitCode := requireErrorWithExitCode (t , err )
290294
291- if exitCode := exitCoder .ExitCode (); exitCode != 2 {
295+ if exitCode := errWithExitCode .ExitCode (); exitCode != 2 {
292296 t .Fatalf ("expected exit code 2, got %d" , exitCode )
293297 }
294298
0 commit comments