dlv_test: add a basic test for dap command (#1899)

This commit is contained in:
polinasok 2020-02-28 09:48:59 -08:00 committed by GitHub
parent b09aed17fd
commit 0f9b05b9f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -8,6 +8,7 @@ import (
"go/ast"
"go/token"
"go/types"
"io"
"io/ioutil"
"os"
"os/exec"
@ -20,6 +21,7 @@ import (
protest "github.com/go-delve/delve/pkg/proc/test"
"github.com/go-delve/delve/pkg/terminal"
"github.com/go-delve/delve/service/dap/daptest"
"github.com/go-delve/delve/service/rpc2"
"golang.org/x/tools/go/packages"
@ -507,3 +509,45 @@ func TestTypecheckRPC(t *testing.T) {
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()
}