Skip to content

Commit 43b589f

Browse files
committed
Review comments.
1 parent 4977a6a commit 43b589f

File tree

1 file changed

+22
-31
lines changed

1 file changed

+22
-31
lines changed

src/runtime/signal_windows_test.go

Lines changed: 22 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -105,46 +105,37 @@ func TestCtrlHandler(t *testing.T) {
105105
outReader := bufio.NewReader(outPipe)
106106

107107
// in a new command window
108-
const CREATE_NEW_CONSOLE = 0x00000010
108+
const _CREATE_NEW_CONSOLE = 0x00000010
109109
cmd.SysProcAttr = &syscall.SysProcAttr{
110-
CreationFlags: CREATE_NEW_CONSOLE,
110+
CreationFlags: _CREATE_NEW_CONSOLE,
111111
}
112112
if err := cmd.Start(); err != nil {
113113
t.Fatalf("Start failed: %v", err)
114114
}
115+
defer func() {
116+
cmd.Process.Kill()
117+
cmd.Wait()
118+
}()
115119

116-
errCh := make(chan error, 1)
117-
go func() {
118-
// wait for child to be ready to receive signals
119-
if line, err := outReader.ReadString('\n'); err != nil {
120-
errCh <- fmt.Errorf("could not read stdout: %w", err)
121-
return
122-
} else if strings.TrimSpace(line) != "ready" {
123-
errCh <- fmt.Errorf("unexpected message: %v", line)
124-
return
125-
}
126-
127-
// gracefully kill pid, this closes the command window
128-
if err := exec.Command("taskkill.exe", "/pid", strconv.Itoa(cmd.Process.Pid)).Run(); err != nil {
129-
errCh <- fmt.Errorf("failed to kill: %w", err)
130-
return
131-
}
132-
133-
// check child received, handled SIGTERM
134-
if line, err := outReader.ReadString('\n'); err != nil {
135-
errCh <- fmt.Errorf("could not read stdout: %w", err)
136-
return
137-
} else if expected, got := syscall.SIGTERM.String(), strings.TrimSpace(line); expected != got {
138-
errCh <- fmt.Errorf("Expected '%s' got: %s", expected, got)
139-
return
140-
}
120+
// wait for child to be ready to receive signals
121+
if line, err := outReader.ReadString('\n'); err != nil {
122+
t.Fatalf("could not read stdout: %v", err)
123+
} else if strings.TrimSpace(line) != "ready" {
124+
t.Fatalf("unexpected message: %s", line)
125+
}
141126

142-
errCh <- nil
143-
}()
127+
// gracefully kill pid, this closes the command window
128+
if err := exec.Command("taskkill.exe", "/pid", strconv.Itoa(cmd.Process.Pid)).Run(); err != nil {
129+
t.Fatalf("failed to kill: %v", err)
130+
}
144131

145-
if err := <-errCh; err != nil {
146-
t.Fatal(err)
132+
// check child received, handled SIGTERM
133+
if line, err := outReader.ReadString('\n'); err != nil {
134+
t.Fatalf("could not read stdout: %v", err)
135+
} else if expected, got := syscall.SIGTERM.String(), strings.TrimSpace(line); expected != got {
136+
t.Fatalf("Expected '%s' got: %s", expected, got)
147137
}
138+
148139
// check child exited gracefully, did not timeout
149140
if err := cmd.Wait(); err != nil {
150141
t.Fatalf("Program exited with error: %v\n%s", err, &stderr)

0 commit comments

Comments
 (0)