@@ -246,24 +246,28 @@ func TestConnectCommand(t *testing.T) {
246
246
247
247
func TestErrorCommand (t * testing.T ) {
248
248
s , buf := setupSqlCmdWithMemoryOutput (t )
249
+ defer s .SetError (nil )
249
250
defer buf .Close ()
250
251
file , err := os .CreateTemp ("" , "sqlcmderr" )
251
252
assert .NoError (t , err , "os.CreateTemp" )
252
253
defer os .Remove (file .Name ())
253
254
fileName := file .Name ()
254
255
_ = file .Close ()
255
256
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" )
257
258
err = errorCommand (s , []string {fileName }, 1 )
258
259
assert .NoError (t , err , "errorCommand" )
259
260
// Only some error kinds go to the error output
260
261
err = runSqlCmd (t , s , []string {"print N'message'" , "RAISERROR(N'Error', 16, 1)" , "SELECT 1" , ":SETVAR 1" , "GO" })
261
262
assert .NoError (t , err , "runSqlCmd" )
262
- s .SetError (nil )
263
263
errText , err := os .ReadFile (file .Name ())
264
264
if assert .NoError (t , err , "ReadFile" ) {
265
265
assert .Regexp (t , "Msg 50000, Level 16, State 1, Server .*, Line 2" + SqlcmdEol + "Error" + SqlcmdEol , string (errText ), "Error file contents: " + string (errText ))
266
266
}
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" )
267
271
}
268
272
269
273
func TestOnErrorCommand (t * testing.T ) {
@@ -320,6 +324,11 @@ func TestResolveArgumentVariables(t *testing.T) {
320
324
if assert .ErrorContains (t , err , UndefinedVariable ("var2" ).Error (), "fail on unresolved variable" ) {
321
325
assert .Empty (t , actual , "fail on unresolved variable" )
322
326
}
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" )
323
332
}
324
333
325
334
func TestExecCommand (t * testing.T ) {
0 commit comments