@@ -246,24 +246,28 @@ func TestConnectCommand(t *testing.T) {
246246
247247func TestErrorCommand (t * testing.T ) {
248248 s , buf := setupSqlCmdWithMemoryOutput (t )
249+ defer s .SetError (nil )
249250 defer buf .Close ()
250251 file , err := os .CreateTemp ("" , "sqlcmderr" )
251252 assert .NoError (t , err , "os.CreateTemp" )
252253 defer os .Remove (file .Name ())
253254 fileName := file .Name ()
254255 _ = file .Close ()
255256 err = errorCommand (s , []string {"" }, 1 )
256- assert .EqualError (t , err , InvalidCommandError ("OUT " , 1 ).Error (), "errorCommand with empty file name" )
257+ assert .EqualError (t , err , InvalidCommandError ("ERROR " , 1 ).Error (), "errorCommand with empty file name" )
257258 err = errorCommand (s , []string {fileName }, 1 )
258259 assert .NoError (t , err , "errorCommand" )
259260 // Only some error kinds go to the error output
260261 err = runSqlCmd (t , s , []string {"print N'message'" , "RAISERROR(N'Error', 16, 1)" , "SELECT 1" , ":SETVAR 1" , "GO" })
261262 assert .NoError (t , err , "runSqlCmd" )
262- s .SetError (nil )
263263 errText , err := os .ReadFile (file .Name ())
264264 if assert .NoError (t , err , "ReadFile" ) {
265265 assert .Regexp (t , "Msg 50000, Level 16, State 1, Server .*, Line 2" + SqlcmdEol + "Error" + SqlcmdEol , string (errText ), "Error file contents: " + string (errText ))
266266 }
267+ s .vars .Set ("myvar" , "stdout" )
268+ err = errorCommand (s , []string {"$(myvar)" }, 1 )
269+ assert .NoError (t , err , "errorCommand with a variable" )
270+ assert .Equal (t , os .Stdout , s .err , "error set to stdout using a variable" )
267271}
268272
269273func TestOnErrorCommand (t * testing.T ) {
@@ -320,6 +324,11 @@ func TestResolveArgumentVariables(t *testing.T) {
320324 if assert .ErrorContains (t , err , UndefinedVariable ("var2" ).Error (), "fail on unresolved variable" ) {
321325 assert .Empty (t , actual , "fail on unresolved variable" )
322326 }
327+ s .Connect .DisableVariableSubstitution = true
328+ input := "$(var1) notvar"
329+ actual , err = resolveArgumentVariables (s , []rune (input ), true )
330+ assert .NoError (t , err )
331+ assert .Equal (t , input , actual , "resolveArgumentVariables when DisableVariableSubstitution is false" )
323332}
324333
325334func TestExecCommand (t * testing.T ) {
0 commit comments