@@ -246,6 +246,69 @@ func TestValidateFlags(t *testing.T) {
246246 }
247247}
248248
249+ func TestErrorsToStderrDefaultValue (t * testing.T ) {
250+ // Test that -r without a value defaults to 0 (ODBC sqlcmd compatibility)
251+ arguments := & SQLCmdArguments {}
252+ cmd := & cobra.Command {
253+ Use : "testCommand" ,
254+ PreRunE : func (cmd * cobra.Command , argss []string ) error {
255+ SetScreenWidthFlags (arguments , cmd )
256+ return nil
257+ },
258+ Run : func (cmd * cobra.Command , argss []string ) {
259+ },
260+ SilenceErrors : true ,
261+ SilenceUsage : true ,
262+ }
263+ setFlags (cmd , arguments )
264+ // Test -r alone (bare flag)
265+ cmd .SetArgs (convertOsArgs ([]string {"-r" }))
266+ err := cmd .Execute ()
267+ assert .NoError (t , err , "-r should not error" )
268+ assert .NotNil (t , arguments .ErrorsToStderr , "ErrorsToStderr should be set when using -r alone" )
269+ assert .Equal (t , 0 , * arguments .ErrorsToStderr , "-r alone should default to 0" )
270+
271+ // Test -r0 explicit
272+ arguments = & SQLCmdArguments {}
273+ cmd2 := & cobra.Command {
274+ Use : "testCommand" ,
275+ PreRunE : func (cmd * cobra.Command , argss []string ) error {
276+ SetScreenWidthFlags (arguments , cmd )
277+ return nil
278+ },
279+ Run : func (cmd * cobra.Command , argss []string ) {
280+ },
281+ SilenceErrors : true ,
282+ SilenceUsage : true ,
283+ }
284+ setFlags (cmd2 , arguments )
285+ cmd2 .SetArgs ([]string {"-r0" })
286+ err = cmd2 .Execute ()
287+ assert .NoError (t , err , "-r0 should not error" )
288+ assert .NotNil (t , arguments .ErrorsToStderr , "ErrorsToStderr should be set" )
289+ assert .Equal (t , 0 , * arguments .ErrorsToStderr , "-r0 should set value to 0" )
290+
291+ // Test -r1 explicit
292+ arguments = & SQLCmdArguments {}
293+ cmd3 := & cobra.Command {
294+ Use : "testCommand" ,
295+ PreRunE : func (cmd * cobra.Command , argss []string ) error {
296+ SetScreenWidthFlags (arguments , cmd )
297+ return nil
298+ },
299+ Run : func (cmd * cobra.Command , argss []string ) {
300+ },
301+ SilenceErrors : true ,
302+ SilenceUsage : true ,
303+ }
304+ setFlags (cmd3 , arguments )
305+ cmd3 .SetArgs ([]string {"-r1" })
306+ err = cmd3 .Execute ()
307+ assert .NoError (t , err , "-r1 should not error" )
308+ assert .NotNil (t , arguments .ErrorsToStderr , "ErrorsToStderr should be set" )
309+ assert .Equal (t , 1 , * arguments .ErrorsToStderr , "-r1 should set value to 1" )
310+ }
311+
249312// Simulate main() using files
250313func TestRunInputFiles (t * testing.T ) {
251314 o , err := os .CreateTemp ("" , "sqlcmdmain" )
0 commit comments