Skip to content

Commit e915b54

Browse files
fix: ListLocalServers returns error instead of writing to os.Stderr
1 parent 5be11cb commit e915b54

4 files changed

Lines changed: 13 additions & 5 deletions

File tree

cmd/sqlcmd/sqlcmd.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,9 @@ func Execute(version string) {
232232
fmt.Println()
233233
fmt.Println(localizer.Sprintf("Servers:"))
234234
}
235-
sqlcmd.ListLocalServers(os.Stdout)
235+
if err := sqlcmd.ListLocalServers(os.Stdout); err != nil {
236+
fmt.Fprintln(os.Stderr, err)
237+
}
236238
os.Exit(0)
237239
}
238240
if len(argss) > 0 {

pkg/sqlcmd/commands.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,9 @@ func serverlistCommand(s *Sqlcmd, args []string, line uint) error {
661661
if len(args) > 0 && strings.TrimSpace(args[0]) != "" {
662662
return InvalidCommandError("SERVERLIST", line)
663663
}
664-
ListLocalServers(s.GetOutput())
664+
if err := ListLocalServers(s.GetOutput()); err != nil {
665+
_, _ = fmt.Fprintln(s.GetError(), err)
666+
}
665667
return nil
666668
}
667669

pkg/sqlcmd/serverlist.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@ import (
1919

2020
// ListLocalServers queries the SQL Browser service for available SQL Server instances
2121
// and writes the results to the provided writer.
22-
func ListLocalServers(w io.Writer) {
22+
func ListLocalServers(w io.Writer) error {
2323
instances, err := GetLocalServerInstances()
2424
if err != nil {
25-
fmt.Fprintln(os.Stderr, err)
25+
return err
2626
}
2727
for _, s := range instances {
2828
_, _ = fmt.Fprintf(w, " %s\n", s)
2929
}
30+
return nil
3031
}
3132

3233
// GetLocalServerInstances queries the SQL Browser service and returns a list of

pkg/sqlcmd/serverlist_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ func TestListLocalServers(t *testing.T) {
1414
// Test that ListLocalServers writes to the provided writer without error
1515
// Note: actual server discovery depends on SQL Browser service availability
1616
var buf bytes.Buffer
17-
ListLocalServers(&buf)
17+
err := ListLocalServers(&buf)
18+
if err != nil {
19+
t.Logf("ListLocalServers returned error (expected in some environments): %v", err)
20+
}
1821
// We can't assert specific content since it depends on environment,
1922
// but we verify it doesn't panic and writes valid output
2023
t.Logf("ListLocalServers output: %q", buf.String())

0 commit comments

Comments
 (0)