1package gdb
2
3import (
4	"testing"
5	"time"
6)
7
8func TestInterrupt(t *testing.T) {
9	// start gdb
10	gdb, err := New(nil)
11	if err != nil {
12		t.Fatal(err)
13	}
14
15	// load and start gofmt (a program which will wait for input)
16	_, err = gdb.Send("file-exec-and-symbols", "gofmt")
17	if err != nil {
18		t.Fatal(err)
19	}
20	_, err = gdb.Send("exec-run")
21	if err != nil {
22		t.Fatal(err)
23	}
24
25	interrupt := false
26	go func() {
27		// allow the program to start up
28		time.Sleep(time.Second)
29
30		// then interrupt the execution
31		interrupt = true
32		if err := gdb.Interrupt(); err != nil {
33			t.Fatal(err)
34		}
35	}()
36
37	// try to execute a command
38	_, err = gdb.Send("gdb-version")
39	if err != nil {
40		t.Fatal(err)
41	}
42	if interrupt == false {
43		t.Fatal("GDB should wait for the interrupt")
44	}
45
46	// exit gdb
47	if err := gdb.Exit(); err != nil {
48		t.Fatal(err)
49	}
50}
51