Skip to content

Commit fca148c

Browse files
feat(codelens): trigger debugger on 'Debug test' command (#3) (#100)
1 parent fdfef7d commit fca148c

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

package.json

+10
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,16 @@
134134
"type": "boolean",
135135
"description": "Skips variables debugging instrumentation of code, making debugging less convenient but the resulting binary smaller and closer to production",
136136
"default": false
137+
},
138+
"testName": {
139+
"type": "string",
140+
"description": "Optional test name to debug",
141+
"default": null
142+
},
143+
"oracleResolver": {
144+
"type": "string",
145+
"description": "JSON RPC url to solve oracle calls",
146+
"default": null
137147
}
138148
}
139149
}

src/debugger.ts

+12
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ class NoirDebugConfigurationProvider implements DebugConfigurationProvider {
7070
proverName: config.proverName || `Prover`,
7171
generateAcir: config.generateAcir || false,
7272
skipInstrumentation: config.skipInstrumentation || false,
73+
testName: config.testName,
74+
oracleResolver: config.oracleResolver,
7375
};
7476

7577
return resolvedConfig;
@@ -111,6 +113,11 @@ class NoirDebugConfigurationProvider implements DebugConfigurationProvider {
111113
preflightArgs.push(config.package);
112114
}
113115

116+
if (config.testName) {
117+
preflightArgs.push(`--preflight-test-name`);
118+
preflightArgs.push(config.testName);
119+
}
120+
114121
if (config.generateAcir) {
115122
preflightArgs.push(`--preflight-generate-acir`);
116123
}
@@ -141,6 +148,11 @@ class NoirDebugConfigurationProvider implements DebugConfigurationProvider {
141148
throw new Error(`Error launching debugger. Please inspect the Output pane for more details.`);
142149
} else {
143150
outputChannel.appendLine(`Starting debugger session...`);
151+
if (config.oracleResolver) {
152+
outputChannel.appendLine(`Using oracle resolver target ${config.oracleResolver}`);
153+
} else {
154+
outputChannel.appendLine(`No oracle resolver set`);
155+
}
144156
}
145157

146158
return config;

src/extension.ts

+18
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import {
3535
TaskGroup,
3636
ProcessExecution,
3737
ProgressLocation,
38+
debug,
3839
} from 'vscode';
3940
import os from 'os';
4041

@@ -174,7 +175,24 @@ function registerCommands(uri: Uri) {
174175
const debugCommand$ = commands.registerCommand('nargo.debug.dap', async (..._args) => {
175176
return commands.executeCommand('workbench.action.debug.start');
176177
});
178+
177179
commands$.push(debugCommand$);
180+
const debugTestCommand$ = commands.registerCommand('nargo.debug.test', async (...args) => {
181+
const exactIndex = args.indexOf('--exact');
182+
const testName = args.at(exactIndex + 1);
183+
const oracleResolver = process.env['TXE_TARGET'];
184+
const workspaceFolder = workspace.getWorkspaceFolder(uri);
185+
await debug.startDebugging(workspaceFolder, {
186+
type: 'noir',
187+
request: 'launch',
188+
name: 'Noir binary package',
189+
projectFolder: '${workspaceFolder}',
190+
proverName: 'Prover',
191+
...(testName && { testName }),
192+
...(oracleResolver && { oracleResolver }),
193+
});
194+
});
195+
commands$.push(debugTestCommand$);
178196

179197
const selectNargoPathCommand$ = commands.registerCommand('nargo.config.path.select', async (..._args) => {
180198
const homeDir = os.homedir();

0 commit comments

Comments
 (0)