dap: reduce branching on onLaunchRequest mode validations (#2364)
This commit is contained in:
parent
314ae669a3
commit
4364c728f0
@ -432,8 +432,19 @@ func (s *Server) onInitializeRequest(request *dap.InitializeRequest) {
|
||||
const debugBinary string = "./__debug_bin"
|
||||
|
||||
func (s *Server) onLaunchRequest(request *dap.LaunchRequest) {
|
||||
// TODO(polina): Respond with an error if debug session is in progress?
|
||||
// Validate launch request mode
|
||||
mode, ok := request.Arguments["mode"]
|
||||
if !ok || mode == "" {
|
||||
mode = "debug"
|
||||
}
|
||||
if !isValidLaunchMode(mode) {
|
||||
s.sendErrorResponse(request.Request,
|
||||
FailedToLaunch, "Failed to launch",
|
||||
fmt.Sprintf("Unsupported 'mode' value %q in debug configuration.", mode))
|
||||
return
|
||||
}
|
||||
|
||||
// TODO(polina): Respond with an error if debug session is in progress?
|
||||
program, ok := request.Arguments["program"].(string)
|
||||
if !ok || program == "" {
|
||||
s.sendErrorResponse(request.Request,
|
||||
@ -442,11 +453,6 @@ func (s *Server) onLaunchRequest(request *dap.LaunchRequest) {
|
||||
return
|
||||
}
|
||||
|
||||
mode, ok := request.Arguments["mode"]
|
||||
if !ok || mode == "" {
|
||||
mode = "debug"
|
||||
}
|
||||
|
||||
if mode == "debug" || mode == "test" {
|
||||
output, ok := request.Arguments["output"].(string)
|
||||
if !ok || output == "" {
|
||||
@ -486,14 +492,6 @@ func (s *Server) onLaunchRequest(request *dap.LaunchRequest) {
|
||||
s.binaryToRemove = debugname
|
||||
}
|
||||
|
||||
// TODO(polina): support "remote" mode
|
||||
if mode != "exec" && mode != "debug" && mode != "test" {
|
||||
s.sendErrorResponse(request.Request,
|
||||
FailedToLaunch, "Failed to launch",
|
||||
fmt.Sprintf("Unsupported 'mode' value %q in debug configuration.", mode))
|
||||
return
|
||||
}
|
||||
|
||||
s.setLaunchAttachArgs(request)
|
||||
|
||||
var targetArgs []string
|
||||
@ -535,6 +533,16 @@ func (s *Server) onLaunchRequest(request *dap.LaunchRequest) {
|
||||
s.send(&dap.LaunchResponse{Response: *newResponse(request.Request)})
|
||||
}
|
||||
|
||||
// TODO(polina): support "remote" mode
|
||||
func isValidLaunchMode(launchMode interface{}) bool {
|
||||
switch launchMode {
|
||||
case "exec", "debug", "test":
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// onDisconnectRequest handles the DisconnectRequest. Per the DAP spec,
|
||||
// it disconnects the debuggee and signals that the debug adaptor
|
||||
// (in our case this TCP server) can be terminated.
|
||||
|
||||
@ -2559,6 +2559,10 @@ func TestBadLaunchRequests(t *testing.T) {
|
||||
client.LaunchRequestWithArgs(map[string]interface{}{"mode": "debug", "program": fixture.Source, "buildFlags": "123"})
|
||||
expectFailedToLaunch(client.ExpectErrorResponse(t)) // Build error
|
||||
|
||||
client.LaunchRequest("", fixture.Path, stopOnEntry)
|
||||
expectFailedToLaunchWithMessage(client.ExpectErrorResponse(t),
|
||||
"Failed to launch: Build error: exit status 1")
|
||||
|
||||
// We failed to launch the program. Make sure shutdown still works.
|
||||
client.DisconnectRequest()
|
||||
dresp := client.ExpectDisconnectResponse(t)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user