Skip to content

Commit 7dfa52b

Browse files
author
Dave Bartolomeo
committed
Debugger tests
1 parent 0a0a9c6 commit 7dfa52b

14 files changed

Lines changed: 944 additions & 262 deletions

File tree

extensions/ql-vscode/src/debugger/debug-configuration.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import {
77
import { getOnDiskWorkspaceFolders, showAndLogErrorMessage } from "../helpers";
88
import { LocalQueries } from "../local-queries";
99
import { getQuickEvalContext, validateQueryPath } from "../run-queries-shared";
10-
import * as CodeQLDebugProtocol from "./debug-protocol";
10+
import * as CodeQLProtocol from "./debug-protocol";
1111

1212
/**
1313
* The CodeQL launch arguments, as specified in "launch.json".
1414
*/
15-
interface QLDebugArgs {
15+
export interface QLDebugArgs {
1616
query?: string;
1717
database?: string;
1818
additionalPacks?: string[] | string;
@@ -26,14 +26,14 @@ interface QLDebugArgs {
2626
*
2727
* This just combines `QLDebugArgs` with the standard debug configuration properties.
2828
*/
29-
type QLDebugConfiguration = DebugConfiguration & QLDebugArgs;
29+
export type QLDebugConfiguration = DebugConfiguration & QLDebugArgs;
3030

3131
/**
3232
* A CodeQL debug configuration after all variables and defaults have been resolved. This is what
3333
* is passed to the debug adapter via the `launch` request.
3434
*/
3535
export type QLResolvedDebugConfiguration = DebugConfiguration &
36-
CodeQLDebugProtocol.LaunchConfig;
36+
CodeQLProtocol.LaunchConfig;
3737

3838
/**
3939
* Implementation of `DebugConfigurationProvider` for CodeQL.
@@ -114,7 +114,7 @@ export class QLDebugConfigurationProvider
114114
database: qlConfiguration.database,
115115
additionalPacks,
116116
extensionPacks,
117-
quickEvalPosition: quickEvalContext?.quickEvalPosition,
117+
quickEvalContext,
118118
noDebug: qlConfiguration.noDebug ?? false,
119119
};
120120

Lines changed: 49 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { DebugProtocol } from "@vscode/debugprotocol";
22
import { QueryResultType } from "../pure/new-messages";
3+
import { QuickEvalContext } from "../run-queries-shared";
4+
5+
// Events
36

47
export type Event = { type: "event" };
58

@@ -9,65 +12,82 @@ export type StoppedEvent = DebugProtocol.StoppedEvent &
912
export type InitializedEvent = DebugProtocol.InitializedEvent &
1013
Event & { event: "initialized" };
1114

15+
export type ExitedEvent = DebugProtocol.ExitedEvent &
16+
Event & { event: "exited" };
17+
1218
export type OutputEvent = DebugProtocol.OutputEvent &
1319
Event & { event: "output" };
1420

15-
export interface EvaluationStartedEventBody {
16-
id: string;
17-
outputDir: string;
18-
quickEvalPosition: Position | undefined;
19-
}
20-
2121
/**
2222
* Custom event to provide additional information about a running evaluation.
2323
*/
24-
export interface EvaluationStartedEvent extends DebugProtocol.Event {
24+
export interface EvaluationStartedEvent extends Event {
2525
event: "codeql-evaluation-started";
26-
body: EvaluationStartedEventBody;
27-
}
28-
29-
export interface EvaluationCompletedEventBody {
30-
resultType: QueryResultType;
31-
message: string | undefined;
32-
evaluationTime: number;
26+
body: {
27+
id: string;
28+
outputDir: string;
29+
quickEvalContext: QuickEvalContext | undefined;
30+
};
3331
}
3432

3533
/**
3634
* Custom event to provide additional information about a completed evaluation.
3735
*/
38-
export interface EvaluationCompletedEvent extends DebugProtocol.Event {
36+
export interface EvaluationCompletedEvent extends Event {
3937
event: "codeql-evaluation-completed";
40-
body: EvaluationCompletedEventBody;
38+
body: {
39+
resultType: QueryResultType;
40+
message: string | undefined;
41+
evaluationTime: number;
42+
};
4143
}
4244

4345
export type AnyEvent =
4446
| StoppedEvent
47+
| ExitedEvent
4548
| InitializedEvent
4649
| OutputEvent
4750
| EvaluationStartedEvent
4851
| EvaluationCompletedEvent;
4952

53+
// Requests
54+
5055
export type Request = DebugProtocol.Request & { type: "request" };
5156

57+
export type InitializeRequest = DebugProtocol.InitializeRequest &
58+
Request & { command: "initialize" };
59+
60+
export interface LaunchConfig {
61+
/** Full path to query (.ql) file. */
62+
query: string;
63+
/** Full path to the database directory. */
64+
database: string;
65+
/** Full paths to `--additional-packs` directories. */
66+
additionalPacks: string[];
67+
/** Pack names of extension packs. */
68+
extensionPacks: string[];
69+
/** Optional quick evaluation context. */
70+
quickEvalContext: QuickEvalContext | undefined;
71+
/** Run the query without debugging it. */
72+
noDebug: boolean;
73+
}
74+
75+
export interface LaunchRequest extends Request, DebugProtocol.LaunchRequest {
76+
type: "request";
77+
command: "launch";
78+
arguments: DebugProtocol.LaunchRequestArguments & LaunchConfig;
79+
}
80+
5281
export interface QuickEvalRequest extends Request {
5382
command: "codeql-quickeval";
5483
arguments: {
55-
quickEvalPosition: Position;
84+
quickEvalContext: QuickEvalContext;
5685
};
5786
}
5887

59-
export interface DebugResultRequest extends Request {
60-
command: "codeql-debug-result";
61-
arguments: undefined;
62-
}
63-
64-
export type InitializeRequest = DebugProtocol.InitializeRequest &
65-
Request & { command: "initialize" };
88+
export type AnyRequest = InitializeRequest | LaunchRequest | QuickEvalRequest;
6689

67-
export type AnyRequest =
68-
| InitializeRequest
69-
| DebugResultRequest
70-
| QuickEvalRequest;
90+
// Responses
7191

7292
export type Response = DebugProtocol.Response & { type: "response" };
7393

@@ -77,32 +97,6 @@ export type InitializeResponse = DebugProtocol.InitializeResponse &
7797
// eslint-disable-next-line @typescript-eslint/no-empty-interface
7898
export interface QuickEvalResponse extends Response {}
7999

80-
export type AnyResponse = InitializeResponse;
100+
export type AnyResponse = InitializeResponse | QuickEvalResponse;
81101

82102
export type AnyProtocolMessage = AnyEvent | AnyRequest | AnyResponse;
83-
84-
export interface Position {
85-
fileName: string;
86-
line: number;
87-
column: number;
88-
endLine: number;
89-
endColumn: number;
90-
}
91-
92-
export interface LaunchConfig {
93-
/** Full path to query (.ql) file. */
94-
query: string;
95-
/** Full path to the database directory. */
96-
database: string;
97-
/** Full paths to `--additional-packs` directories. */
98-
additionalPacks: string[];
99-
/** Pack names of extension packs. */
100-
extensionPacks: string[];
101-
/** Optional quick evaluation position. */
102-
quickEvalPosition: Position | undefined;
103-
/** Run the query without debugging it. */
104-
noDebug: boolean;
105-
}
106-
107-
export type LaunchRequestArguments = DebugProtocol.LaunchRequestArguments &
108-
LaunchConfig;

0 commit comments

Comments
 (0)