|
8 | 8 | "strings" |
9 | 9 | "testing" |
10 | 10 |
|
| 11 | + mssql "github.com/microsoft/go-mssqldb" |
11 | 12 | "github.com/microsoft/go-sqlcmd/internal/color" |
12 | 13 | "github.com/stretchr/testify/assert" |
13 | 14 | ) |
@@ -162,3 +163,42 @@ func TestFormatterXmlMode(t *testing.T) { |
162 | 163 | assert.NoError(t, err, "runSqlCmd returned error") |
163 | 164 | assert.Equal(t, `<sys.databases name="master"/>`+SqlcmdEol, buf.buf.String()) |
164 | 165 | } |
| 166 | + |
| 167 | +func TestAddErrorStripsMssqlPrefixByDefault(t *testing.T) { |
| 168 | + out, errOut := new(strings.Builder), new(strings.Builder) |
| 169 | + vars := InitializeVariables(false) |
| 170 | + f := NewSQLCmdDefaultFormatter(vars, false, ControlIgnore) |
| 171 | + f.BeginBatch("", vars, out, errOut) |
| 172 | + |
| 173 | + f.AddError(mssql.Error{Number: 50000, State: 1, Class: 16, Message: "Something failed", ServerName: "server", LineNo: 7}) |
| 174 | + |
| 175 | + got := errOut.String() |
| 176 | + assert.Contains(t, got, "Msg 50000, Level 16, State 1, Server server, Line 7") |
| 177 | + assert.Contains(t, got, "Something failed") |
| 178 | + assert.NotContains(t, got, "mssql:") |
| 179 | +} |
| 180 | + |
| 181 | +func TestAddErrorWithRawErrorsKeepsMssqlPrefix(t *testing.T) { |
| 182 | + out, errOut := new(strings.Builder), new(strings.Builder) |
| 183 | + vars := InitializeVariables(false) |
| 184 | + f := NewSQLCmdDefaultFormatter(vars, false, ControlIgnore, WithRawErrors(true)) |
| 185 | + f.BeginBatch("", vars, out, errOut) |
| 186 | + |
| 187 | + f.AddError(mssql.Error{Number: 50000, State: 1, Class: 16, Message: "Something failed", ServerName: "server", LineNo: 7}) |
| 188 | + |
| 189 | + got := errOut.String() |
| 190 | + assert.Contains(t, got, "Msg 50000, Level 16, State 1, Server server, Line 7") |
| 191 | + assert.Contains(t, got, "mssql: Something failed") |
| 192 | +} |
| 193 | + |
| 194 | +func TestAddErrorWithRawErrorsAppliesToAsciiFormatter(t *testing.T) { |
| 195 | + out, errOut := new(strings.Builder), new(strings.Builder) |
| 196 | + vars := InitializeVariables(false) |
| 197 | + vars.Set(SQLCMDFORMAT, "ascii") |
| 198 | + f := NewSQLCmdDefaultFormatter(vars, false, ControlIgnore, WithRawErrors(true)) |
| 199 | + f.BeginBatch("", vars, out, errOut) |
| 200 | + |
| 201 | + f.AddError(mssql.Error{Number: 50000, State: 1, Class: 16, Message: "Something failed", ServerName: "server", LineNo: 7}) |
| 202 | + |
| 203 | + assert.Contains(t, errOut.String(), "mssql: Something failed", "ascii formatter must honor WithRawErrors") |
| 204 | +} |
0 commit comments