@@ -20,6 +20,7 @@ import {
2020import { InteractiveWindowMessages } from '../../client/datascience/interactive-window/interactiveWindowTypes' ;
2121import { IInteractiveWindow , IInteractiveWindowProvider , IJupyterExecution } from '../../client/datascience/types' ;
2222import { MainPanel } from '../../datascience-ui/history-react/MainPanel' ;
23+ import { noop } from '../core' ;
2324import { DataScienceIocContainer } from './dataScienceIocContainer' ;
2425import { getCellResults } from './interactiveWindowTestHelpers' ;
2526import { getConnectionInfo , getNotebookCapableInterpreter } from './jupyterHelpers' ;
@@ -138,7 +139,7 @@ suite('DataScience Debugger tests', () => {
138139 return result ;
139140 }
140141
141- async function debugCell ( code : string , breakpoint ?: Range , breakpointFile ?: string ) : Promise < void > {
142+ async function debugCell ( code : string , breakpoint ?: Range , breakpointFile ?: string , expectError ?: boolean ) : Promise < void > {
142143 // Create a dummy document with just this code
143144 const docManager = ioc . get < IDocumentManager > ( IDocumentManager ) as MockDocumentManager ;
144145 const fileName = path . join ( EXTENSION_ROOT_DIR , 'foo.py' ) ;
@@ -163,21 +164,36 @@ suite('DataScience Debugger tests', () => {
163164 const expectedBreakLine = breakpoint && ! breakpointFile ? breakpoint . start . line : 2 ; // 2 because of the 'breakpoint()' that gets added
164165
165166 // Debug this code. We should either hit the breakpoint or stop on entry
166- const results = await getCellResults ( ioc . wrapper ! , 5 , async ( ) => {
167+ const resultPromise = getCellResults ( ioc . wrapper ! , 5 , async ( ) => {
167168 const breakPromise = createDeferred < void > ( ) ;
168169 disposables . push ( mockDebuggerService ! . onBreakpointHit ( ( ) => breakPromise . resolve ( ) ) ) ;
169170 const done = history . debugCode ( code , fileName , 0 , docManager . activeTextEditor ) ;
170171 await waitForPromise ( Promise . race ( [ done , breakPromise . promise ] ) , 60000 ) ;
171- assert . ok ( breakPromise . resolved , 'Breakpoint event did not fire' ) ;
172- assert . ok ( ! lastErrorMessage , `Error occurred ${ lastErrorMessage } ` ) ;
173- const stackTrace = await mockDebuggerService ! . getStackTrace ( ) ;
174- assert . ok ( stackTrace , 'Stack trace not computable' ) ;
175- assert . ok ( stackTrace ! . body . stackFrames . length >= 1 , 'Not enough frames' ) ;
176- assert . equal ( stackTrace ! . body . stackFrames [ 0 ] . line , expectedBreakLine , 'Stopped on wrong line number' ) ;
177- // Verify break location
178- await mockDebuggerService ! . continue ( ) ;
172+ if ( expectError ) {
173+ assert . ok ( lastErrorMessage , 'Error did not occur when expected' ) ;
174+ throw Error ( 'Exiting cell results' ) ;
175+ } else {
176+ assert . ok ( breakPromise . resolved , 'Breakpoint event did not fire' ) ;
177+ assert . ok ( ! lastErrorMessage , `Error occurred ${ lastErrorMessage } ` ) ;
178+ const stackTrace = await mockDebuggerService ! . getStackTrace ( ) ;
179+ assert . ok ( stackTrace , 'Stack trace not computable' ) ;
180+ assert . ok ( stackTrace ! . body . stackFrames . length >= 1 , 'Not enough frames' ) ;
181+ assert . equal ( stackTrace ! . body . stackFrames [ 0 ] . line , expectedBreakLine , 'Stopped on wrong line number' ) ;
182+ // Verify break location
183+ await mockDebuggerService ! . continue ( ) ;
184+ }
179185 } ) ;
180- assert . ok ( results , 'No cell results after finishing debugging' ) ;
186+
187+ if ( ! expectError ) {
188+ const cellResults = await resultPromise ;
189+ assert . ok ( cellResults , 'No cell results after finishing debugging' ) ;
190+ } else {
191+ try {
192+ await resultPromise ;
193+ } catch {
194+ noop ( ) ;
195+ }
196+ }
181197 await history . dispose ( ) ;
182198 }
183199
@@ -221,7 +237,7 @@ suite('DataScience Debugger tests', () => {
221237 ioc . getSettings ( ) . datascience . jupyterServerURI = uri ;
222238
223239 // Debug with this setting should use the server URI
224- await debugCell ( '#%%\nprint("bar")' ) ;
240+ await debugCell ( '#%%\nprint("bar")' , undefined , undefined , true ) ;
225241 }
226242 } ) ;
227243} ) ;
0 commit comments