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