dlv_test: add a basic test for dap command (#1899)
This commit is contained in:
parent
b09aed17fd
commit
0f9b05b9f5
@ -8,6 +8,7 @@ import (
|
|||||||
"go/ast"
|
"go/ast"
|
||||||
"go/token"
|
"go/token"
|
||||||
"go/types"
|
"go/types"
|
||||||
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
@ -20,6 +21,7 @@ import (
|
|||||||
|
|
||||||
protest "github.com/go-delve/delve/pkg/proc/test"
|
protest "github.com/go-delve/delve/pkg/proc/test"
|
||||||
"github.com/go-delve/delve/pkg/terminal"
|
"github.com/go-delve/delve/pkg/terminal"
|
||||||
|
"github.com/go-delve/delve/service/dap/daptest"
|
||||||
"github.com/go-delve/delve/service/rpc2"
|
"github.com/go-delve/delve/service/rpc2"
|
||||||
|
|
||||||
"golang.org/x/tools/go/packages"
|
"golang.org/x/tools/go/packages"
|
||||||
@ -507,3 +509,45 @@ func TestTypecheckRPC(t *testing.T) {
|
|||||||
t.Errorf("%d errors", errcount)
|
t.Errorf("%d errors", errcount)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestDap verifies that a dap server can be started and shut down.
|
||||||
|
func TestDap(t *testing.T) {
|
||||||
|
const listenAddr = "127.0.0.1:40575"
|
||||||
|
|
||||||
|
dlvbin, tmpdir := getDlvBin(t)
|
||||||
|
defer os.RemoveAll(tmpdir)
|
||||||
|
|
||||||
|
cmd := exec.Command(dlvbin, "dap", "--log-output=dap", "--log", "--listen", listenAddr)
|
||||||
|
stdout, err := cmd.StdoutPipe()
|
||||||
|
assertNoError(err, t, "stdout pipe")
|
||||||
|
stderr, err := cmd.StderrPipe()
|
||||||
|
assertNoError(err, t, "stderr pipe")
|
||||||
|
if err := cmd.Start(); err != nil {
|
||||||
|
t.Fatalf("could not start dap instance: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
scanOut := bufio.NewScanner(stdout)
|
||||||
|
scanErr := bufio.NewScanner(stderr)
|
||||||
|
// Wait for the debug server to start
|
||||||
|
scanOut.Scan()
|
||||||
|
listening := "DAP server listening at: " + listenAddr
|
||||||
|
if scanOut.Text() != listening {
|
||||||
|
cmd.Process.Kill() // release the port
|
||||||
|
t.Fatalf("Unexpected stdout:\ngot %q\nwant %q", scanOut.Text(), listening)
|
||||||
|
}
|
||||||
|
go func() {
|
||||||
|
for scanErr.Scan() {
|
||||||
|
t.Log(scanErr.Text())
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
// Connect a client and request shutdown.
|
||||||
|
client := daptest.NewClient(listenAddr)
|
||||||
|
client.DisconnectRequest()
|
||||||
|
client.ExpectDisconnectResponse(t)
|
||||||
|
if _, err := client.ReadMessage(); err != io.EOF {
|
||||||
|
t.Errorf("got %q, want \"EOF\"\n", err)
|
||||||
|
}
|
||||||
|
client.Close()
|
||||||
|
cmd.Wait()
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user